完整错误:
托管调试助手“FatalExecutionEngineError”在“D:\ZLG\CRF(2023.12.14)\C#\CRF_DEMO\CRF_DEMO\bin\x86\Debug\CRF_DEMO.vshost.exe”中检测到问题。
其他信息: 运行时遇到了错误。此错误的地址为 0x745619cb,在线程 0x10db4 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。
由错误代码0xc0000005提示可知是访问冲突引起的,甚至看到在Stackoverflow里面讨论说是.Net framework 4.0的bug。无法从用户代码层面修改,试过网上的各种方法也没办法解决。最终在删代码过程中,碰巧试出来是由于字节没有对齐,导致CLR崩溃的。原因是在改代码的过程中无意删除掉了[StructLayout(LayoutKind.Sequential,Pack =1)]。导致结构体的字节长度没有按照最紧密的排序方式排序。触发了访问冲突的错误。