Zacznę kontrowersyjnie. Lubię jak aplikacja nie działa, tak jak powinna. To znaczy – niekoniecznie lubię sam fakt niepoprawnego działania, ale dzięki temu mam możliwość odpalenia debugger’a (lub innego użytecznego narzędzia – głównie SysInternals), aby dowiedzieć się dlaczego i spróbować to naprawić.
Ostatniego czasu ciekawych wrażeń dostarcza(ło) mi IE8. Pewnego dnia, bez powodu, IE na moim laptopie zaczął raczyć mnie niniejszym błędem jeszcze nawet przed tym jak się dobrze uruchomił:
Jako, że jestem wielkim fanem tego co “uczy” Mark Russinovich oraz Tess Ferrandez oczywiście zabrałem się za zbadanie tego ciekawego przypadku. Pierwsza, rzecz w takich przypadkach to zrobienie dump’a (o ile nie masz ustawionego robienia tego automatycznie). Odpaliłem zatem Menadżera zadań (a raczej jego wersję na sterydach – Process Explorer) i wykonałem dump’a.
Po chwili już mogłem zająć się dochodzeniem o co chodzi, że mój często używany 😉 IE nie może się uruchomić. Jeśli chodzi o badanie dump’ów to chyba(?) nie ma lepszego narzędzia nad WinDbg – część pakietu Debugging Tools For Windows. W zasadzie, przy jego pomocy nawet bardzo nie musimy się wysilać, aby zbadać ten zrzut pamięci. Po odpaleniu programu wybieramy Open crush dump i już po chwili możemy działać. Windbg posiada już polecenie, które przeprowadzi za nas wstępną analizę zrzutu: !analyze –v. Teraz już wystarczy chwilę poczekać na wynik jej działania, jednak już na samym początku widzimy, że coś ciekawego:
Brak symboli przeważnie oznacza 3rd-part dll. Zobaczmy co będzie dalej. Pod koniec analizy mamy stos wywołań przed wywaleniem się aplikacji.
Widzimy, że ostatni wpis, należy do biblioteki, do której brakowało nam symboli. Dowiedzmy się trochę więcej co to za biblioteka. Za pomocą polecenia lmD, możemy zobaczyć wszystkie załadowane biblioteki a klikając na nazwę – SynTPFcs więcej o niej.
Mamy więcej informacji. Producent – Synaptics, Inc. – acha! Sterownik do TouchPada to chyba właśnie coś od Synaptics. Widzimy też wersję biblioteki – dość stara jak na Win7. Jeśli udamy się na stronę zobaczymy, że istnieje nowszy sterownik niż ten z 2004 roku. Ponieważ jednak, nie używam “zaawansowanych” właściwości tego sterownika, postanowiłem go usunąć z systemu. Wystarczy zatem przejść do Dodaj lub usuń programy i usunąć Synaptics Pointing Device Driver. I znów możemy cieszyć się działającym IE8!
Founder of Octal Solutions a .NET software house.
Passionate dev, blogger, occasionally speaker, one of the leaders of Wroc.NET user group. Microsoft MVP. Podcaster – Ostrapila.pl