Eredetileg Skype kapcsolódási hibáról szóló bejegyzés, ami végül inkább Dr. Watson és Error Reporting lett

Újabb rejtélyes hiba, amire végül nem sikerült megoldást találni. Úgy látszik elpuhultam a nyári szabadságon:-). Szóval, az egyik kollégám behozta a laptopját, hogy egyik napról a másikra a Skype nem akar csatlakozni. A hálózat működik egyébként rendesen, csak a Skype vacakol. Már vagy hússzor újratelepítették, de nincs változás. Nekiálltam, hogy mi lehet a gond.

A Sysinternals TcpView szerint a Skype megnyitott egy-két kapcsolatot, de messze nem annyit, mint amennyit szokott. Bezártam a Skype-ot, azonban Process Explorerben megnézve a folyamat még mindig futott. Sőt, itt kiderült, hogy mi a gond:

skype-drwatson-cropped

A Skype menet közben meghal, a nem kezelt kivételt az Error Reporting kapja el, csak annak a felülete valamiért nem jelenik meg. A Skype viszont továbbra is úgy tűnik, hogy működik rendesen, csak éppen a háttérben lévő modulja, ami a kapcsolódást végezné, nem csinál már semmit. Megpróbáltam megnézni a dump fájlt, hátha abból kiderül, hogy mi a Skype baja. Igen ám, csak azt nem olyan egyszerű megszerezni:) A dumpot a felhasználó Temp könyvtárába menti ideiglenesen az Error Reporting. Azonban amíg az Error Reporting ablak nyitva van, nem lehet a fájlhoz hozzáférni, annak bezárása után pedig törli a fájlt. Utánanéztem, hogy mi is történik, ha nem kezelt kivétel keletkezik egy programban.

Enabling Postmortem Debugging: az MSDN-en ez az oldal írja le részletesen, hogy mi hívódik meg ilyen esetben. A gépen nem volt semmilyen fejlesztőkörnyezet és Debugging Tools se, így elvileg az alap Dr. Watson hívódna meg, azonban az Error Reporting közbeszól, és az dob fel egy ilyesmi ablakot (az ábrát később csináltam, így nem a Skype, hanem a Test Default Debugger program szerepel rajta):

image

A gombok más és mást csinálnak, attól függően, hogy a \\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug kulcs hogyan van beállítva.

image 

Ezen belül a Debugger azt mondja meg, hogy mit kell hiba esetén elindítani, az Auto pedig a gombok működését befolyásolja. Itt leírják, hogy mit csinálnak alapesetben a gombok. A szöveg szerintem kicsit kusza, úgyhogy most lepróbáltam a TestDefaultDebugger segítségével. Változtattam az Auto beállítását, és Process Explorerben néztem, hogy milyen folyamatok indulnak el az egyes gombokra. Igazából a kérdés az volt, hogy a dwwin.exe mikor hívja meg a drwtsn32-t és mikor nem.

  • Auto = 1
    • Don’t Send: Dr. Watson meghívódik, dump-ot készít, bezárja az alkalmazást
    • Send Error Report: Elküldi az Error Reporting által készített dump-ot, majd Dr. Watson meghívódik, dump-ot készít, bezárja az alkalmazást
  • Auto = 0
    • Debug: Dr. Watson meghívódik, dump-ot készít, bezárja az alkalmazást
    • Don’t Send: bezárja az alkalmazást
    • Send Error Report: Elküldi az Error Reporting által készített dump-ot, majd bezárja az alkalmazást

Ki akartam próbálni, hogy a Dr. Watson hova és hogyan menti el a dump fájlt, azonban most a Windows XP-s virtuális gépemen sikerült a Dr. Watsonnak a dump írása közben elhasalnia:))

image

A folyamatfában látszik, hogy a drwtsn32.exe meghibásodása után az Error Reporting (dwwin.exe) szépen el is indul. Ha a Debugra nyomunk, akkor pedig a hóhért akasztják szituáció áll elő:

image

A Dr. Watson megpróbál dump-ot készíteni egy másik Dr. Watsonról:-) Először arra gondoltam, hogy az a gond, hogy nem rendszergazdaként futtatom, így nincs joga írni az alapérelmezett helyre, ahova a Dr. Watson írná a dumpot: %AllUsersProfile%\Application Data\Microsoft\Dr Watson. Ez így is volt, azonban rendszergazdaként ugyan már létrehozta ezt a könyvtárat, létrehozta benne a log fájlt, azonban a dump közben itt is elhalt. Ezután az jutott eszembe, hogy hátha a virtuális gép a gond, így megnéztem egy fizikai gépen is, de ott is elhalt a Dr. Watson. A fura az volt, hogy volt Dr Watson könyvtár, és abban volt egy 2006-os dátumú user.dmp, tehát a Dr. Watson valamikor működött. Lehet, hogy valami frissítés miatt mostanában már nem megy a Dr. Watson? Ezt nehezen tudnám elképzelni, még megnézem majd az otthoni gépemet is. A laptopomon Vista van, ott már nincs Dr. Watson, helyette az Error Reportingot turbózták fel eléggé (lásd pl. itt).

No de vissza az eredeti problémához. Szóval akkor még ezeket az okosságokat mind nem tudtam, csak annyi volt a tapasztalat, hogy a Dr. Watson semmiképp se akar dump fájlt készíteni. Megpróbáltam átállítani az alapértelmezett debuggert a drwtsn32-ről az ntsd-re (a módját lásd pl. itt). Azonban az így legyártott dump fájlban valahogy nem találtam a kivételt elsőre. Így az Error Reporting által gyártottat kellett mégis megszerezni.

Ezen az oldalon találtam meg a megoldást, hogy hogyan lehet mégis megkaparintani a dump fájlt: ugyan nem lehet másolni a fájlt ilyenkor, de az ntbackuppal lehet mentést készíteni róla és azt vissza lehet később állítani. Nem a legegyszerűbb megoldás, de csak ezt találtam (azóta itt olvastam olyat is, hogy még mielőtt megnyomnánk a don’t send gombot, a fájlt read only-ra kell állítani, és akkor az Error Reporting nem tudja letörölni:). Már csak egy gond volt, a laptopon XP Home volt, abban pedig nincs NTBackup. Ha lett volna kéznél XP Home telepítő CD, akkor ez a KB cikk alapján fel lehet azt is rakni, de természetesen csak XP Prof CD-nk volt. Végül átmásoltam egy XP Prof-ról az ntbackup.exe-t, és ment úgyis.

Szóval hosszas küzdés után meglett a dump fájl, azonban a várva-várt megoldást nem sikerült meglátnom benne (biztos benne van, csak kevés vagyok még hozzá:)

This dump file has an exception of interest stored in it. The stored exception information can be accessed via .ecxr. (f0f0f0f0.3ec): Access violation - code c0000005 (first/second chance not available) 0:028> .ecxr
eax
=76ec6049 ebx=00000000 ecx=00000065 edx=00000001 esi=062fe85c edi=062fe765
eip
=03cdc838 esp=062fe740 ebp=062fe740 iopl=0 nv up ei pl nz na po nc
cs
=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010202 03cdc838 ?? ??? 0:028> .kframes 100 Default stack trace depth is 0n256 frames
0:028> kb
*** Stack
trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
WARNING: Frame IP
not in any known module. Following frames may be wrong. 062fe73c 062fe768 03cdc7e9 76ec6048 76ec603f 0x3cdc838 062fe80c 77dd523b 04a8fe50 062fe858 77dda2d8 0x62fe768 062fe818 77dda2d8 04bbdfb8 062fe89c 00000002 advapi32!LeaveProviderCritSec+0x12 062fe858 76ec5981 00000000 00000000 00000000 advapi32!CryptDestroyHash+0xaa 062fe8cc 76eb1883 01df4648 76eb34d9 00000001 TAPI32!TapiCryptUninitialize+0x311 062fe9c0 76efc8a5 00000000 00020002 02dc9978 TAPI32!CCallingCard::CCallingCard+0x3a 062fe9e0 76efc971 02dbc588 02e3f918 02e3f994 RASAPI32!GetCountryCodeAndID+0x7d 062fe9f0 76efeef2 02e3f918 00000002 00000000 RASAPI32!CreatePhoneNode+0x34 062fec68 76f00390 00000000 00000002 02e3f994 RASAPI32!ReadPhoneList+0x55 062fef14 76f024cc 00000000 76ef9dbb 00190ab8 RASAPI32!ReadDeviceList+0x850 062fefa0 76f03408 062ff290 00000008 00000000 RASAPI32!ReadEntryList+0x1144 062ff270 76eede10 062ff554 00000000 00000000 RASAPI32!ReadPhonebookFile+0x2dd 062ff2b0 76ed4b82 062ff554 04a88ff8 062ff2f0 RASAPI32!DwEnumEntriesFromPhonebook+0x35 062ff764 76ed275a 062ff7a8 00000001 04a88ff8 RASAPI32!DwEnumEntriesInDir+0x1c9 062ff9b8 76ed3d67 00000001 04a88ff8 062ff9f8 RASAPI32!DwEnumEntriesForPbkMode+0x9c 062ff9ec 771c3e30 00000000 00000000 04a88ff8 RASAPI32!RasEnumEntriesW+0xc2 062ffa1c 771b4720 00000001 00000000 00000000 wininet!RasEnumHelp::RasEnumHelp+0x8f 062ffc2c 771ac8bc 00000000 00000000 00150000 wininet!CheckForUpgrade+0x12f 062ffd80 771acbf0 00000000 00000000 00000001 wininet!FixProxySettings+0x54 062ffda0 771ad9f6 00000000 04a6e630 04afc848 wininet!FixProxySettingsForCurrentConnection+0x70 062ffdd0 771b5c8d 04a3b800 00000000 04a6e630 wininet!InternetAutodialIfNotLocalHost+0xe6 062ffe44 771b5baa 00000000 062ffe68 771acb44 wininet!ParseUrlForHttp_Fsm+0x135 062ffe50 771acb44 04afc848 04a6e630 00000000 wininet!CFsm_ParseUrlForHttp::RunSM+0x2b 062ffe68 771acaf2 04a6e630 00000000 00000000 wininet!CFsm::Run+0x39 062ffe80 771b5a5a 04afc848 00000814 062fff58 wininet!DoFsm+0x25 062ffecc 00cd4aa7 00cc0004 0246b638 00000000 wininet!InternetOpenUrlA+0x1d7 062fff70 0042ac8b 062fff84 0042ac95 062fffa0 Skype+0x8d4aa7 062fffa0 0040543e 062fffdc 00404f44 062fffb4 Skype+0x2ac8b 062fffb4 7c80b683 024d7030 00000814 7ffdfbf8 Skype+0x543e 062fffec 00000000 00405414 024d7030 00000000 kernel32!BaseThreadStart+0x37

Volt egy access violation kivételünk. A hívási veremből látszik, hogy a Skype dolgozott, aztán valami Url-t akart megnyitni. A legutolsó hívások adatai viszont már nincsenek benne a minidump-ban, az valami olyan modulban volt, ami nem került be a minidump korlátos méretébe. A modulok között csak a Skype a külső, a többi windowsos dll.

Ezután még megpróbáltam azt, hogy leszedem a Skype-ot, és minden hozzá tartozó fájlt és registry beállítást (volt még fent néhány régi plug-in, azokra gyanakodtam). Ez se hozott javulást, úgyhogy végül nem megy a Skype most azon a gépen. De legalább az Error Reportingról és a Dr. Watsonról tanultam pár dolgot.

Reklámok
Kategória: Opre | Közvetlen link a könyvjelzőhöz.

4 hozzászólás a(z) Eredetileg Skype kapcsolódási hibáról szóló bejegyzés, ami végül inkább Dr. Watson és Error Reporting lett bejegyzéshez

  1. Marton szerint:

    Ó, Istenem, de szeretném ezt én is elérni: hogy úgy tűnjön, mintha menne a Skype, de közben DÖGÖLJÖN MEG! 😀
    Nincs valami ötleted, ezt hogy lehetne előidézni? 😛

  2. Zoltan szerint:

    :-)) Sajnos nincs ötletem, de ha megtalálom az okát, akkor megírom a skype-killer módszert;)

  3. Vica szerint:

    Akkor most mit lehet kezdeni, mert nekem is ez a gondom! Most skype-olok, de nem tudok felvenni partnert, mert kapcsolódási hibát ír ki, közben meg simán beszélgetek azokkal, akiket már felvettem!

  4. micskeiz szerint:

    Nem sikerült azon a gépen a hasonló problémát megoldani nekünk sem. Én azt nézném még meg, hogy a Skype-nak van-e frissebb verziója, elég sok szokott változni az egyes nagyobb verziók között, hátha ezt is javították.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s