我有一个程序,在无法解释的时候会抛出这个错误:
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!000007fef4dd7b85()
clr.dll!000007fef4dd78ce()
clr.dll!000007fef4be74aa()
clr.dll!000007fef4d1163f()
clr.dll!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收集垃圾时可能会崩溃?)