Soci (Soczó Zsolt) szakmai blogja

2008.10.22.

Deadlock detektálás Vistán

Filed under: Szakmai élet,Vista — Soczó Zsolt @ 13:19

A cégnek egy hookolós kódot próbálok 64 bitre kibővíteni, de állandóan befagyott tőle a gép, csak a restart segített rajta. Meglehetősen frusztráló. Nagyon. :)
Nyilvánvalóan deadlock gond volt, de mégis, ki-kivel és min akadt össze?
Mivel hookolós a kód, még debugolni se lehet, és még az OutputDebugString is okozhat deadlockot, így még azzal se lehet tracelni. Eléggé fekete doboz így a rendszer.
A megoldást az adta, hogy a Fast User Switching segítségével beléptem egy másik felhasználó nevében, és lefutattam a LockWatchert.
Mivel a programban a várakozások WaitForMultipleObjects-en történtek nem írta ki, hogy deadlock van (írja is a cikk, hogy így viselkedik), de szemre szépen látszik így is az összeakadás.
Jó eszköz, szeretjük. Kár, hogy csak Vistán van hozzá API támogatás. Ebből is látszik egyébként, hogy a Vista nem csak az új shellről szól, mint sokan hiszik, hanem sok belső újítás is van benne.

2 Comments

  1. Az OutputDebugString() hogyan okozhat deadlockot? Úgy értem, feltételezve, hogy nem egy olyan kifejezést adsz paraméteréül, ami önmagában deadlockot okozhat.

    Comment by pb — 2008.10.29. @ 09:40

  2. OutputDebugString: úgy néz ki ez nem okoz, csak benéztem, egyelőre ez kiszámíthatóan működik. Akkor viszont esetleg lehet deadlock, ha megy a DbgView és a hook bemegy abba is.

    Comment by Soczó Zsolt — 2008.11.11. @ 16:26

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress