小弟最近用vs2008 mfc 编写了一个工控应用的程序
大概启用了四到五个工作线程再加一个界面,系统在运行的时候,有时会发生
“应用程序异常 未知的软件异常0xc0000417 位置0x7858ccb5”但此时所有线程都在正常作业,界面也能能够响应,就是不能点那个错误提示框的确定或取消按钮,一点程序就自动退出了。
系统是基本就是全天运行,该异常出现频率不高,有时候一天一两次,有的时候几天也发生不了一次。
痛苦了好多天,网上也有人问 ”未知的软件异常0xc0000417“ 但位置不一样,不知如何如何定位该异常的真正原因。
各位大侠,遇到这种异常,如何找出原因?位置0x7858ccb5是什么意思?
多谢
7 个解决方案
#1
查看自己的多线程之间是否用到了相同的资源,但是没有同步
这样可能会出错
这样可能会出错
#2
多个线程确有共享资源,数据共享,共享硬件,回头我再仔细查一下
对于共享硬件用了关键代码段,对于数据就没有用了,设计为一个读,一个写
我想知道:
一 。0xc0000147是什么类型的错误?
二 如何根据位置0x7858ccb5 找到对应的调用函数
多谢
对于共享硬件用了关键代码段,对于数据就没有用了,设计为一个读,一个写
我想知道:
一 。0xc0000147是什么类型的错误?
二 如何根据位置0x7858ccb5 找到对应的调用函数
多谢
#3
上网搜索根据崩溃地址查找出错代码。。。
#4
\\VC\PlatformSDK\include\ntstatus.h
:
0xc0000417 STATUS_INVALID_CRUNTIME_PARAMETER
这个应该是因为不同线程之间传递的参数用来调用函数时候,没有确定那参数好使。
:
0xc0000417 STATUS_INVALID_CRUNTIME_PARAMETER
这个应该是因为不同线程之间传递的参数用来调用函数时候,没有确定那参数好使。
#5
根据各位的提醒感觉有了一些思路,
再问一下:为什么发生这种错误的时候,各路线程仍然工作的好好的呢?
再问一下:为什么发生这种错误的时候,各路线程仍然工作的好好的呢?
#6
生成Map文件,根据0xc0000147找到导致程序崩溃的对应的行和函数。一个线程崩溃了 不影响其他线程的。
#7
0xc0000147是错误类型,位置倒是有0x7858ccb5,远远超过了程序的地址空间,所以没办法根据崩溃地址查找出错代码
我是说所有我创建的线程都在正常工作,这些线程似乎没有崩溃。
我是说所有我创建的线程都在正常工作,这些线程似乎没有崩溃。
#1
查看自己的多线程之间是否用到了相同的资源,但是没有同步
这样可能会出错
这样可能会出错
#2
多个线程确有共享资源,数据共享,共享硬件,回头我再仔细查一下
对于共享硬件用了关键代码段,对于数据就没有用了,设计为一个读,一个写
我想知道:
一 。0xc0000147是什么类型的错误?
二 如何根据位置0x7858ccb5 找到对应的调用函数
多谢
对于共享硬件用了关键代码段,对于数据就没有用了,设计为一个读,一个写
我想知道:
一 。0xc0000147是什么类型的错误?
二 如何根据位置0x7858ccb5 找到对应的调用函数
多谢
#3
上网搜索根据崩溃地址查找出错代码。。。
#4
\\VC\PlatformSDK\include\ntstatus.h
:
0xc0000417 STATUS_INVALID_CRUNTIME_PARAMETER
这个应该是因为不同线程之间传递的参数用来调用函数时候,没有确定那参数好使。
:
0xc0000417 STATUS_INVALID_CRUNTIME_PARAMETER
这个应该是因为不同线程之间传递的参数用来调用函数时候,没有确定那参数好使。
#5
根据各位的提醒感觉有了一些思路,
再问一下:为什么发生这种错误的时候,各路线程仍然工作的好好的呢?
再问一下:为什么发生这种错误的时候,各路线程仍然工作的好好的呢?
#6
生成Map文件,根据0xc0000147找到导致程序崩溃的对应的行和函数。一个线程崩溃了 不影响其他线程的。
#7
0xc0000147是错误类型,位置倒是有0x7858ccb5,远远超过了程序的地址空间,所以没办法根据崩溃地址查找出错代码
我是说所有我创建的线程都在正常工作,这些线程似乎没有崩溃。
我是说所有我创建的线程都在正常工作,这些线程似乎没有崩溃。