CLR / VectoredExceptionHandler / StackOverflowException / MiniDumpWriteDump

时间:2017-07-03 03:11:16

标签: c# winapi clr native dump

仅对于StackOverflow异常,我在从加载了CLR的进程配置AddVectoredExceptionHandler时,很难创建一个MiniDump。

调用我的处理程序,创建.dmp文件但MiniDumpWriteDump失败。

我为其他例外编写转储没有问题,例如AccessViolation。如果没有加载CLR并且发生StackOverflow-exceptin,那么我也会成功写入转储。

https://github.com/NicolaiNyberg/DbgSvcExtension上提供了示例代码 CrashHandler DLL项目配置处理程序的位置,SoexCh.Cs是从C#调用它的一个例子。

我的问题是:加载CLR后,未处理的异常处理程序会发生什么情况,以防止进程在发生StackOverflow异常时编写小型转储?

1 个答案:

答案 0 :(得分:0)

将解决方案从问题转移到答案:

  

答案/解决方案:为了使MiniDumpWriteDump从一个破碎的堆栈(StackOverflow-exception)成功,那么它应该从一个从ExceptionHandler发出信号的工作线程调用。 CrashHandler已经使用此实现进行了更新。