请教NET的异常问题: FatalExecutionEngineError

xg2003 2012-03-15 02:22:20
错误描述:
托管调试助手“FatalExecutionEngineError”在“Server.exe”中检测到故障。
其他信息: 运行时遇到了错误。
此错误的地址为 0x71422e63,在线程 0xa95c 上。错误代码为 0xc0000005。
此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。
此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。

线程堆栈: (这个是NET自己启动的线程, 堆栈中没有我的方法.)
ntdll.dll!_NtWaitForSingleObject@12() + 0x15 字节
ntdll.dll!_NtWaitForSingleObject@12() + 0x15 字节
clr.dll!Thread::LeaveRuntimeNoThrow() + 0x20 字节
kernel32.dll!_WaitForSingleObjectExImplementation@12() + 0x43 字节
clr.dll!CLREvent::CreateManualEvent() - 0xdb525 字节
clr.dll!CLREvent::CreateManualEvent() - 0xdb4e4 字节
clr.dll!CLREvent::WaitEx() + 0x47 字节
clr.dll!CLREvent::Wait() + 0x19 字节
clr.dll!Thread::WaitSuspendEventsHelper() + 0xa8 字节
clr.dll!Thread::WaitSuspendEvents() + 0x17 字节
clr.dll!Thread::RareEnablePreemptiveGC() + 0x2c528f 字节
clr.dll!Thread::RareDisablePreemptiveGC() + 0xddcb0 字节
clr.dll!GCHolderEEInterface<0,1,1>::~GCHolderEEInterface<0,1,1>() + 0x21 字节
clr.dll!Debugger::SendMDANotification() + 0x12c 字节
clr.dll!MdaXmlMessage::SendDebugEvent() + 0x19d 字节
clr.dll!MdaXmlMessage::SendMessage() + 0x107 字节
clr.dll!MdaXmlMessage::SendMessagef() + 0x64 字节
clr.dll!MdaFatalExecutionEngineError::ReportFEEE() + 0xe5 字节
clr.dll!WatsonLastChance() + 0x389 字节
clr.dll!EEPolicy::LogFatalError() + 0x40c 字节
clr.dll!EEPolicy::HandleFatalError() + 0x12b 字节
clr.dll!CLRVectoredExceptionHandlerPhase3() + 0x12b48f 字节
clr.dll!CLRVectoredExceptionHandlerPhase2() + 0x20 字节
clr.dll!CLRVectoredExceptionHandler() + 0xbd 字节
clr.dll!CLRVectoredExceptionHandlerShim() + 0xa3 字节
ntdll.dll!_RtlpCallVectoredHandlers@12() + 0x1ac83 字节
ntdll.dll!_RtlCallVectoredExceptionHandlers@8() + 0x12 字节
ntdll.dll!_RtlDispatchException@8() + 0x19 字节
ntdll.dll!_KiUserExceptionDispatcher@8() + 0xf 字节
clr.dll!HndGetHandleTableADIndex() + 0x8 字节
clr.dll!MarshalNative::GCHandleInternalCheckDomain() + 0x1e 字节
mscorlib.ni.dll!6af66857()
[下面的框架可能不正确和/或缺失,没有为 mscorlib.ni.dll 加载符号]
clr.dll!Thread::HandleThreadAbort() + 0x75 字节

程序中, C#会调用C++的函数, C++也会回调用C#的函数, 应该可以确定不是方法签名不正确的问题.
因为程序是在正常运行一段时间之后, 就会出现这种问题. 该运行的方法都已经执行过很多次了.
(网上很多人遇到这个问题, 其中大部分是方法签名不正确而导致的.)

我怀疑是: 在C#中通过GCHandle.Free()释放C#对象的句柄时, 正好C#自己的某个线程终止了, 从而引发的异常.
...全文
3512 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
一只大花猫 2013-11-29
  • 打赏
  • 举报
回复
尼玛 这年头还是要自立自强啊 姐搞定了! 哎 可惜了我散出去的40分啊
木_玉 2013-11-28
  • 打赏
  • 举报
回复
引用 10 楼 shmily453397 的回复:
也遇到了同样的问题,求助啊
咋解决的?[/quote] 后来发现是C#调用C++的dll出错了,byte数组没法传输,最后直接用指针了
一只大花猫 2013-11-28
  • 打赏
  • 举报
回复
引用 11 楼 h503206 的回复:
引用 10 楼 shmily453397 的回复:
也遇到了同样的问题,求助啊
咋解决的?
后来发现是C#调用C++的dll出错了,byte数组没法传输,最后直接用指针了[/quote]
引用 11 楼 h503206 的回复:
引用 10 楼 shmily453397 的回复:
也遇到了同样的问题,求助啊
咋解决的?
后来发现是C#调用C++的dll出错了,byte数组没法传输,最后直接用指针了[/quote] 我没用指针 返回了byte[] 循环执行到第十三次时出错 好像是说我访问了受保护的内存
一只大花猫 2013-11-27
  • 打赏
  • 举报
回复
引用 8 楼 h503206 的回复:
也遇到了同样的问题,求助啊
咋解决的?
一只大花猫 2013-11-27
  • 打赏
  • 举报
回复
你后来怎么解决的啊?
木_玉 2013-10-25
  • 打赏
  • 举报
回复
也遇到了同样的问题,求助啊
Lingoesforstudy 2013-09-22
  • 打赏
  • 举报
回复
帮顶下,我也遇到了这个问题
zdmwww 2012-08-08
  • 打赏
  • 举报
回复
怎么解决啊 我也遇到了
xg2003 2012-03-15
  • 打赏
  • 举报
回复
自己顶一下.
xg2003 2012-03-15
  • 打赏
  • 举报
回复
另外: 我在VS中把出错的线程冻结后, 程序还可以正常运行, 但似乎有些功能不正常了.

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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