crtDll 异常问题

睡在床板下_ 2009-05-18 12:47:30
软件在频繁关闭时,会低概率出现
"0x85c1a80 指令引用 0x00000006内存,该内存不能为written",
根据当时导出的dump信息,定位在crtdll.c 处,个人认为属于crtdll库异常,大家有类似的经验吗?

0.000>kv 100
0012fadc 781fffa2 00000001 0c18ff50 0c18ff5c 0x85c1a80
0012faf8 78200324 00000006 cc18fer0 781ff64d mfc80+0x2ffa2
---(省略) ---- ---- ------ ----- mfc80+0x30324
---(省略) ---- ---- ------ ----- HMO(我的程序名)!_crt_init+0x167(f:\rtm\vctools\crt_old\self_x86\crt\src\crtdll.c@403)
---(省略) ---- ---- ------ ----- HMO!_DllMainCRTStartup+0x67(f:\rtm\vctools\crt_old\self_x86\crt\src\crtdll.c@509)
---(省略) ---- ---- ------ ----- HMO!_DllMainCRTStartup+0x67(f:\rtm\vctools\crt_old\self_x86\crt\src\crtdll.c@459)

---(省略) ---- ---- ------ ----- kernels!ExitProcess+0x14
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡在床板下_ 2009-06-01
  • 打赏
  • 举报
回复
这个问题基本解决,后来咨询了微软工程师,通过dump信息,将怀疑点修改后,至少还没出现。
问题原因是使用mfc 的ocx对外接口,没有使用AFX_MANAGE_STATE(AfxGetStaticModuleState())
liliangbao 2009-05-18
  • 打赏
  • 举报
回复
好像是非法访问内存了~
查一查指针,和数组的使用~
mengde007 2009-05-18
  • 打赏
  • 举报
回复
我估计dll释放的时候出现了资源泄露;你用puifyplus检测一下;
chenzhp 2009-05-18
  • 打赏
  • 举报
回复
这种问题牵涉面太广了。或许是系统其它方面的问题
这篇文章描述的是捕获和处理运行在Windows下的Visual C++程序中异常与错误的标准技术。 异常(或者说关键性错误、崩溃)一般来说是你的程序运行不正常,从面不得不停止运行的情况。比如说,如果你的程序访问一块无效的内存地址(如NULL指针)、无法分配一个Buffer(内存不足)、C语言库的运行时(C run-time libraries,CRT)发现一个错误,并且需要程序立即停止运行等等,这些情况下都会产生一个异常。 一个C++程序可能会处理几种异常:SEH异常,这是由操作系统结构化异常处理系统产生的;CRT错误,这是由C语言库运行时——还有——信号(signals)产生的。每种类型的错误都需要安装一个异常处理函数,以便能在出错时拦截这个消息,并做一些错误恢复的处理。 如果你的程序有好几个线程,那么事情或许会更复杂一些。有些异常处理机制是对整个程序有效的,而另一些则仅对当前线程有效,这种情况下,你必须为每个线程都安装异常处理。 你程序中的每个模块(EXE或DLL)如果都连接了CRT库(无论是静态还是动态的),那么异常处理的方法就主要基于CRT的连接方式(?)。 各种各样类型的错误,多线程下对异常的各种不同的捕获方法,还有基于CRT连接方式异常处理,这让你的程序捕获所有可能的异常变得困难且麻烦。这篇文章的目的就在于帮助你更好的了解异常机制,并在你的C++程序中更好更有效的利用它。 这篇文章附带了一个小控制台程序ExceptionHandler作为例子,这一个例子能产生和捕获各种不同的异常,并且能生成一个崩溃时的Dump文件,通过这个文件你可以定位到出错的代码行。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧