【发布时间】:2014-07-21 20:44:59
【问题描述】:
我正在尝试调试一个非常奇怪的问题。我的 C# 应用程序死锁,我正在使用 WinDbg 找出发生了什么。
似乎有一个线程在异常中被阻塞:
0:042> !mk
Thread 42:
SP IP
00:U 0abeda7c 76eb015d ntdll!NtWaitForMultipleObjects+0x15
01:U 0abeda84 754f15e9 KERNELBASE!WaitForMultipleObjectsEx+0x100
02:U 0abedb20 750e19fc kernel32!WaitForMultipleObjectsExImplementation+0xe0
03:U 0abedb68 750e41d8 kernel32!WaitForMultipleObjects+0x18
04:U 0abedb84 75108074 kernel32!WerpReportFaultInternal+0x186
05:U 0abedbf0 75107f33 kernel32!WerpReportFault+0x70
06:U 0abedc04 75107828 kernel32!BasepReportFault+0x20
07:U 0abedc14 751077a7 kernel32!UnhandledExceptionFilter+0x1af
08:U 0abedca0 76f074ff ntdll!__RtlUserThreadStart+0x62
09:U 0abedca8 76f073dc ntdll!_EH4_CallFilterFunc+0x12
0a:U 0abedcbc 76f07281 ntdll!_except_handler4+0x8e
0b:U 0abedce4 76eeb499 ntdll!ExecuteHandler2+0x26
0c:U 0abedd08 76eeb46b ntdll!ExecuteHandler+0x24
0d:U 0abedd2c 76eeb40e ntdll!RtlDispatchException+0x127
0e:U 0abeddb8 76ea0133 ntdll!KiUserExceptionDispatcher+0xf
0f:M 0abee104 0654c0bb MyApp.Raster`1[[System.UInt64,mscorlib]].RemoveSubset(System.Nullable`1<UInt64>, System.Nullable`1<UInt64>)(+0x5b IL,+0x103 Native)
...
我不确定为什么线程阻塞而不是抛出异常。
我加载了 SOS.dll 和 SOSex.dll 并使用了 !PrintException 命令:
Exception object: 3f8c328c
Exception type: System.NullReferenceException
Message: Object reference not set to an instance of an object.
InnerException: <none>
StackTrace (generated):
SP IP Function
0ABEE104 0654C0BB UNKNOWN!MyApp.Raster`1[[System.UInt64, mscorlib]].RemoveSubset(System.Nullable`1<UInt64>, System.Nullable`1<UInt64>)+0x103
你有过这样的经历吗?可能是什么原因?
谢谢。
【问题讨论】:
-
显示代码和出错的地方可能会帮助您获得有意义的响应。