Debugging deadlock mit pthread mutex(linux)

ich bin vor ein deadlock in einem meiner c-Anwendung(eine große code -) und ich war in der Lage, die debug-down die Bühne, wo ich druckte einen mutex. Es sieht aus wie unten -

          {__data = 
              {__lock = 2,
               __count = 0, 
               __owner = 15805, 
               __nusers = 1, 
               __kind = 0, 
               __spins = 0, 
               __list = {__prev = 0x0, __next = 0x0}
              },
            __size = "\002\000\000\000\000\000\000\000½=\000\000\001", '\0' <repeats 26 times>, 
            __align = 2
         }

Nun konnte ich verstehen, dass __Eigentümer ist die thread-id thread halten dieser mutex gleichen thread endet im deadlock für diesen mutex. Kennt jemand die Bedeutung der restlichen Felder wie _lock,_count,__spins etc was könnte nützlich sein im debugging-deadlocks? Irgendwelche Tipps/tricks wäre auch willkommen? (Basierend auf Debuggen, habe ich verstanden thread versucht zu sperren mutex, die es bereits hält, landet in der Sackgasse und auch andere threads sind eine gute Wahl für diesen mutex)

Ist auch dies möglich, um herauszufinden, bei welcher Zeile der code hat diese verriegelt wurde, wird durch die Beobachtung des Prozesses/threads durch den debugger(gdb) (natürlich mit debug-Infos und code zur hand), ohne dass Sie vorsichtig, code-walkthrough code? Ich gegangen durch meinen code mehrmals, aber war nicht in der Lage zu finden, wo diese Sperre gelassen wurde, unveröffentlicht, vor der Rückgabe aus der Funktion.

Dank
Nerdy

InformationsquelleAutor user516984 | 2010-11-23
Schreibe einen Kommentar