我有一个程序,它在无法解释的时候抛出这个错误:
System.AccessViolationException 未处理
消息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
这是 Windows Server 2008 下的 x64 二进制文件。如果将程序编译为 x86 二进制文件,则该问题不太频繁,但仍会出现。
该程序是一个服务器端口程序,它从网络(UDP)接收数据,然后将其发送给用户(如果有用户连接)。
在我添加 LZMA.c# 来压缩数据之前,它一直有效。
根据记录其功能,LZMA.c# 似乎工作正常。
现在,即使我从程序中删除 LZMA.c#,它仍然会在看似随机的时间崩溃。
我在堆栈跟踪中看不到任何有用的东西,它总是看起来像这样:
ntdll.dll!000000007771fefa()
[下面的帧可能不正确和/或丢失,没有为 ntdll.dll 加载符号] KernelBase.dll!000007fefd7a10ac()
clr.dll!000007fef47d45bf()
clr.dll!000007fef47d4577()
clr.dll !000007FEF47D44F8()
clr.dll!000007FEF4B523D2()
Clr.dll!000007FEF4B522F0 ( )
Clr.dll ! 000007F4DD7B85()000007fef4d14d1c() clr.dll!000007fef4d14b77() clr.dll!000007fef4d147e4() clr.dll!000007fef4d10fc6() clr.dll!000007fef4b79841()
clr.dll!000007fef4b7ca67()
clr.dll!000007fef4b789bc()
clr.dll!000007fef4b7babf()
clr.dll!000007fef4b516d2()
clr.dll!000007fef4d98fa4()
msvcr110_clr0400.dll!000007fef5b48ca6()
ntdll.dll!000000007770554d()
ntdll .dll!00000000776e5d1c()
ntdll.dll!000000007771fe48()
00000000f3468180()
clr.dll!000007fef481f713()
clr.dll!000007fef481f242()
clr.dll!000007fef481f30b()
clr.dll!000007fef48d27c1()
clr.dll!000007fef48c6d80( )
clr.dll!000007fef48c6d0e()
clr.dll!000007fef48c6c85()
clr.dll!000007fef48c6dbb()
clr.dll!000007fef48d2728()
clr.dll!000007fef48c98cf()
clr.dll!000007fef48c97d3()
clr.dll!000007fef49566ae()
kernel32.dll!00000000775cf56d()
ntdll.dll!0000000077703281()
有什么问题吗? (也许当 gc 收集垃圾时它崩溃了?)