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ł:
ie8_small

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.
dump
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:
no_symbols_blog
Brak symboli przeważnie oznacza 3rd-part dll. Zobaczmy co będzie dalej. Pod koniec analizy mamy stos wywołań przed wywaleniem się aplikacji.
stack
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.
lmD
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!