相关疑难解决方法(0)

.NET线程如何等待不属于任何线程的syncblk?

我有一个来自我的应用程序的崩溃转储,显示一堆线程在syncblk上等待,而syncblk显示它没有拥有线程.怎么可能?我试图在测试应用程序中重现症状,我无法弄清楚产生该结果可能会发生什么....拥有自己的线程退出或死亡而不释放syncblk仍显示为拥有该对象,只是线程是"XXX"....我已经测试使用完全托管的优雅退出和硬线程终止通过pinvoke ....我测试了一堆不同的等待组合没有脉冲,不匹配进入和退出...什么都没有产生一个syncblk阻止线程,并没有显示所有者.....我的想法已经用完了

这是我试图复制的crashdump的输出:(注意索引#1236)

0:000> !syncblk
Index         SyncBlock MonitorHeld Recursion Owning Thread Info          SyncBlock Owner
 784 0000000004f12eb0            3         1 000000000508a460  32a8  68   00000001a0a20510
 966 0000000004f06928            1         1 00000000052c5da0  2380 114   00000001df3080f8
1085 0000000004f23088            1         1 00000000052c8080  496c 120   00000001a0325238
1144 0000000005160d20            1         1 00000000050968b0   d74  56   00000000ff61b570
1151 0000000004f0c2c8            1         1 000000000508d8b0  3f64  77   000000017f66dc20
1236 0000000004f0b4f8           16         0 0000000000000000     none    000000019f1ec5d8
1261 0000000004f0ffe8            1         1 0000000008f18fc0  446c  94   000000013f8e70b0
1306 0000000004f0e918            1         1 00000000052c91f0  406c 123   000000011f5936f8
1318 0000000004f0e528            3 …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading windbg monitor

10
推荐指数
1
解决办法
1193
查看次数

标签 统计

.net ×1

c# ×1

monitor ×1

multithreading ×1

windbg ×1