Nieustające crashe IE8 dzięki ACR
Microsoft odwalił (wreszcie) kawałek niezłej roboty jeśli chodzi o IE8- mam na myśli to, że wreszcie się czuje, że projekt nie stoi ciągle w miejscu. Do przeglądarki wprowadzono kilka ciekawych udogodnień jak na przykład LCIE (Loosely-Coupled IE) i ACR (Automatic Crash Recovery)1 . LCIE odpowiada za to, by każda z kart była odseparowanym procesem (dzięki czemu jak się wywali jedna, to reszta kart powinna działać poprawnie), a ACR odpowiada za odtwarzanie karty wskutek jej zamknięcia przez jakiś błąd (jak się karta wywali i zostanie “zabita”, to ACR zadba, by została ponownie uruchomiona).
Obydwa mechanizmy wyglądają świetnie, ale niestety głównie na papierze, bo zabrakło mechanizmów, które chroniłyby użytkowników przed błędnym działaniem ACRa. O ile LCIE rzeczywiście działa i jeśli któraś z kart zacznie zjadać nam zasoby systemu, to możemy ją ubić. Często wymaga to odrobiny spokoju, ponieważ system zazwyczaj nie grzeszy wtedy responsywnością (uszkodzona karta zżera co tylko może z zasobów). Często po ubiciu karty do akcji wkracza ACR, który odzyskuje uszkodzoną kartę. Problem zaczyna się, gdy odzyskana karta znów zżera zasoby systemu na potęgę. Wtedy cała zabawa rozpoczyna się od początku i wydaje mi się, że zwykły użytkownik z taką pętlą nie potrafiłby sobie poradzić.
Dziś spotkałem się z z wyżej opisanym błędnym zachowaniem ACRa, a do tego doszła jeszcze jedna atrakcja, którą było zniknięcie całego okna IE8, w którym była uszkodzona karta, z paska narzędzi. Uznałem, że straciłem otwarte zakładki i zająłem się ich odtwarzaniem w nowootwartym oknie. Gdy już to uczyniłem chcąc przełączyć się na inne okno przy pomocy Alt-Tab i odkryłem, że zaginione okienko ciągle jest otwarte pomimo jego braku obecności na pasku zadań. Spostrzegłem też, że procesor jest znów obciążony w 99% przez proces iexplorer.exe. Próbowałem ponownie zamknąć uszkodzoną kartę, ale nim system umożliwił mi jakąkolwiek interakcję po kliknięciu na End Process w Task Managerze, pojawiał się komunikat o odzyskaniu karty, która znów zajęła wszystkie dostępne zasoby. Całą zabawę zakończyłem (po kilku próbach zabicia karty) zamykając po prostu okno IE, w którym odbywała się zabawa w kotka i myszkę.
Kilka godzin później na blogu Mariusza Kędziory pojawił się wpis o przeglądarce Internet Explorer 8 i przypomniała mi się poranna sytuacja. Po krótkiej rozmowie z wyszukiwarką Google zorientowałem się, że sprawa z pętlą nie zdarzyła się wyłącznie mi, a (z sensownych) rad wyczytałem, że należy w menu Narzędzia -> Opcje internetowe -> Bezpieczeństwo i odznaczyć checkbox Enable Protected Mode (nie ma pod ręką żadnej wersji Internet Explorera w języku polskim i uzupełnię poprawną nazwę pola jutro po weryfikacji). Problem w tym, że powyższe działanie osłabi dość znacznie odporność na ataki podniesienia uprawnień przez np. skrypty na stronach www. Nie wydaje mi się, by było to właściwe rozwiązanie ponieważ w menu Narzędzia -> Opcje internetowe -> Zaawansowane znajduje się checkbox Enable automatic crash recovery (tą pozycję też sprawdzę w polskiej wersji IE8 jutro), która powinna odpowiadać za włączenie i wyłączenie mechanizmu ACR. Jeśli uda mi się jutro dostać do komputera, na którym występował opisany problem, to sprawdzę obydwie opcje i uzupełnię wpis.
- o ciekawych mechanizmach wprowadzonych do Internet Explorera 8 można poczytać we wpisie IE8 and Reliability na IE8 Blogu [↩]


