Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.

October 22, 2008 / by Zsolt Soczó

Deadlock detektálás Vistán

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.

Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.

LEAVE A COMMENT

2 COMMENTS

  • pb October 29, 2008

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

  • Soczó Zsolt November 11, 2008

    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.