2010-02-04 7 views
8

Szukam opisu danych wyjściowych generowanych przez polecenie! SyncBlk w systemie SOS.WinDbg/SOS: Wyjaśnienie wyjścia! SyncBlk

W szczególności nie znalazłem użytecznych wyjaśnień w kolumnie "MonitorHeld". Ta kolumna pokazuje wysokie wartości w serii zrzutów awaryjnych.

Przykład:

0:000> !SyncBlk 
Index   SyncBlock MonitorHeld Recursion Owning Thread Info   SyncBlock Owner 
    44 0000000005a5c228   1   1 000000000e7a6740 2304 273 000000019f858cd0 System.Object 
    48 000000000579bae8   1   1 000000000e7a72e0 2370 275 000000015f999900 System.Object 
    52 000000000579b9c8   1   1 0000000011bbd3b0 1e98 295 00000000ff89fe08 System.Object 
    54 000000000579b938   1   1 000000000e7a38c0 1be4 249 000000013f8aa888 System.Object 
    108 0000000005a5bfe8   1   1 000000000e79f300 224c 242 00000000ff8a5828 System.Object 
    110 0000000005a5c078   1   1 000000000e79ca50 2290 262 000000015f9a8020 System.Object 
    112 0000000005a5c108   1   1 0000000011bb70e0 1d38 236 000000015f99e408 System.Object 
    114 000000000579b620   1   1 0000000011bb93c0 1884 304 00000001bf974a90 System.Object 
    124 0000000005a44d48   1   1 000000000e7a6170 2300 272 000000019f853fe8 System.Object 
    146 0000000005a44688   99   1 000000000588cbf0 13e0 38 000000017f71c4f8 System.Object 
    155 0000000005a44f88   1   1 0000000011bba530 2274 301 000000019f82f120 System.Object 
    157 0000000005a45018   1   1 0000000011bbf0c0 2034 290 000000015f952980 System.Object 

Czy ktoś może wyjaśnić "99" w kolumnie "MonitorHeld"?

Czy ktoś ma link do pełnej dokumentacji referencyjnej tego polecenia?

Dzięki Alex

Odpowiedz

17

MonitorHeld odnosi się do ilu monitory są w posiadaniu tej konkretnej SyncBlk.

Za każdym razem, gdy masz spór o blokadę, będziesz mieć synchronizację z jednym właścicielem. Każdy kelner na blokadzie ma 2.

Twoje 99 oznacza, że ​​masz jeden obiekt "posiadający" zamek, a 49 obiektów czeka na zamek.

Najlepsza dyskusja i szczegółowe wyjaśnienie !syncblk Znalazłem: this one by Tess Ferrandez.

3

Oprócz tego, o czym wspomniał Reed, możesz użyć polecenia rozszerzenia SOSEX.dll! Dlk, aby sprawdzić również zakleszczenia.

+0

Bardzo ciekawy nie wiedział o tym rozszerzeniu! – Alex

+0

! Dlk jest bardzo przydatny, ale nie znajduje wszystkich zakleszczeń. –

+0

wygląda jak sosex jest przestarzały dla .NET 4, psscor4 to jedyna opcja, którą znalazłem – IgorK