| Termin | Definicja |
|---|---|
| STATUS_TLB_FLUSH_FAILED | STATUS_TLB_FLUSH_FAILED to kod błędu wskazujący na niepowodzenie wyczyszczenia bufora translacji adresów (TLB) procesora. STATUS_TLB_FLUSH_FAILED i rola bufora TLBSTATUS_TLB_FLUSH_FAILED jest kodem statusu systemu Windows o wartości 0xC0000301. Oznacza niepowodzenie operacji czyszczenia bufora translacji adresów, czyli Translation Lookaside Buffer. TLB jest niewielką, szybką pamięcią podręczną znajdującą się w jednostce zarządzania pamięcią procesora. Przechowuje ostatnio używane wyniki tłumaczenia wirtualnych adresów pamięci na adresy fizyczne, dzięki czemu procesor nie musi za każdym razem przechodzić przez wielopoziomowe tablice stron. Wpis w TLB jest powiązany między innymi z numerem strony wirtualnej, adresem strony fizycznej oraz atrybutami dostępu, takimi jak odczyt, zapis i wykonywanie kodu. Gdy system zmieni tablice stron, usunie mapowanie albo zmieni uprawnienia pamięci, wcześniejsza informacja w TLB może stać się nieaktualna. Konieczne jest wtedy unieważnienie odpowiednich wpisów. Jeżeli operacja opróżnienia TLB nie zostanie zakończona poprawnie, procesor mógłby korzystać z nieaktualnego mapowania, dlatego jądro traktuje taki stan jako poważny błąd integralności zarządzania pamięcią. Jak Windows wykonuje unieważnianie mapowańNa komputerze wielordzeniowym ten sam proces może być wykonywany przez różne logiczne procesory. Zmiana tablic stron w jednym kontekście nie wystarcza więc do zapewnienia spójności całej platformy. Jądro musi doprowadzić do unieważnienia odpowiednich wpisów TLB również na tych procesorach, które mogły wcześniej używać danego adresu. Taka operacja jest często określana jako TLB shootdown i wymaga skoordynowania pracy kilku rdzeni za pomocą mechanizmów obsługi przerwań międzyprocesorowych. Sam kod STATUS_TLB_FLUSH_FAILED nie opisuje konkretnej uszkodzonej części komputera. Informuje o tym, że określona operacja jądra związana z pamięcią nie osiągnęła wymaganego rezultatu. Przyczyną może być błąd niskopoziomowego sterownika, nieprawidłowa obsługa mechanizmu wieloprocesorowego, problem z firmware UEFI, niestabilność procesora lub pamięci operacyjnej, a także błąd systemu Windows. Znaczenie kodu zależy od miejsca jego wystąpienia: może pojawić się w danych zrzutu pamięci, w komunikacie jądra albo jako element większej sekwencji błędów zakończonej zatrzymaniem systemu. Interpretacja kodu w zrzucie pamięciPojedynczy STATUS_TLB_FLUSH_FAILED nie wystarcza do wskazania winnego sterownika. Podczas analizy należy ustalić, czy kod został zwrócony bezpośrednio przez funkcję jądra, czy został zapisany jako dodatkowa informacja przy innym błędzie. Istotne są między innymi typ zrzutu pamięci, kod zatrzymania systemu, stos wywołań, aktywny wątek, lista załadowanych modułów oraz moment wystąpienia problemu. Inaczej interpretuje się błąd występujący wyłącznie po wybudzeniu komputera, inaczej po instalacji sterownika, a jeszcze inaczej podczas obciążenia procesora. W WinDbg podstawowe informacje można zebrać poleceniami Postępowanie przy niestabilności systemuJeżeli kod pojawia się sporadycznie, warto zachować pełny zrzut pamięci i zanotować okoliczności awarii: uruchamianą aplikację, temperaturę, tryb zasilania, podłączone urządzenia oraz ostatnio instalowane aktualizacje. Pomocne jest wyłączenie niestandardowego podkręcania i przywrócenie domyślnych parametrów pamięci oraz procesora. Nie należy natomiast wymieniać podzespołów wyłącznie na podstawie samej nazwy STATUS_TLB_FLUSH_FAILED, ponieważ ten kod wskazuje klasę nieudanej operacji, a nie jednoznaczny element do wymiany. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich podzespołów, dlatego przy powtarzających się awariach można przeprowadzić diagnostykę obejmującą zrzuty systemowe, pamięć operacyjną, stabilność procesora, ustawienia firmware oraz sterowniki. Celem jest rozdzielenie problemu programowego od usterki sprzętowej i ustalenie, czy błąd występuje po konkretnej zmianie konfiguracji, czy także w podstawowym środowisku systemowym. |