Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poniższe kody zatrzymania znajdują się w tym zestawie testów.
Niebezpieczne wywołanie elementu TerminateThread.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli wątek (identyfikator wątku jest parametr1) jest przerywany jawnie przy użyciu elementu TerminateThread.Ta funkcja jest bardzo niebezpieczna, ponieważ wprowadza uszkodzenie i zakleszczenia danych (zgodnie z msdn).
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Identyfikator wątku dla obiektu wywołującego element Terminatethread.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: TERMINATE_THREAD_CALL
- Kod zatrzymania: 0x100
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Potencjalne przepełnienie stosu w warunkach małej ilości pamięci.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli początkowy rozmiar zatwierdzenia stosu wątku jest taki, że przepełnienie stosu może zostać podniesione w warunkach małej ilości pamięci, jeśli nie można rozszerzyć stosu.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: STACK_OVERFLOW
- Kod zatrzymania: 0x101
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
ExitProcess wywoływany, gdy wiele wątków nadal działa.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli wątek wywołuje metodę ExitProcess, gdy jest uruchomionych kilka wątków. W takim przypadku wewnętrznie element TerminateThread będzie wywoływany dla każdego wątku i może to spowodować zakleszczenia lub uszkodzenia danych.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Liczba uruchomionych wątków.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: INVALID_EXIT_PROCESS_CALL
- Kod zatrzymania: 0x102
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Funkcja LoadLibrary jest wywoływana podczas biblioteki DllMain.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli kod wewnątrz biblioteki DllMain wywołuje metodę LoadLibrary lub FreeLibary. Jest to zachowanie zabronione przez MSDN.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Dll Name (użyj zrzutu do zrzutu).
- Parametr 2 - Adres podstawowy biblioteki DLL.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: INVALID_LOAD_LIBRARY_CALL
- Kod zatrzymania: 0x103
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Biblioteka FreeLibrary jest wywoływana podczas biblioteki DllMain.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli kod wewnątrz biblioteki DllMain wywołuje metodę LoadLibrary lub FreeLibary. Jest to zachowanie zabronione przez MSDN.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Dll Name (użyj zrzutu do zrzutu).
- Parametr 2 - Adres podstawowy biblioteki DLL.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: INVALID_FREE_LIBRARY_CALL
- Kod zatrzymania: 0x104
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Właściwość SetProcessWorkingSetSize jest wywoływana z parametrem MinimumWorkingSetSize = 0xFFFFFFFF.
Prawdopodobna przyczynaUżyj parametru MinimumWorkingSetSize = (SIZE_T) -1.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: INVALID_MINIMUM_PROCESS_WORKING_SIZE
- Kod zatrzymania: 0x105
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Właściwość SetProcessWorkingSetSize jest wywoływana z parametrem MaximumWorkingSetSize = 0xFFFFFFFF.
Prawdopodobna przyczynaUżyj parametru MaximumWorkingSetSize = (SIZE_T) -1.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: INVALID_MAXIMUM_PROCESS_WORKING_SIZE
- Kod zatrzymania: 0x106
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Element SetProcessWorkingSetSizeEx jest wywoływany z parametrem MinimumWorkingSetSize = 0xFFFFFFFF.
Prawdopodobna przyczynaUżyj parametru MinimumWorkingSetSize = (SIZE_T) -1.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: INVALID_MINIMUM_PROCESS_WORKING_SIZE_EX
- Kod zatrzymania: 0x107
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Element SetProcessWorkingSetSizeEx jest wywoływany z parametrem MaximumWorkingSetSize = 0xFFFFFFFF.
Prawdopodobna przyczynaUżyj parametru MaximumWorkingSetSize = (SIZE_T) -1.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Niebezpieczny
- Identyfikator zatrzymania: INVALID_MAXIMUM_PROCESS_WORKING_SIZE_EX
- Kod zatrzymania: 0x108
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wątek nie może być właścicielem sekcji krytycznej.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli wątek (identyfikator wątku jest parametr1) jest przerywany, zawieszony lub znajduje się w stanie (wątek procesu roboczego zakończył element roboczy), w którym nie może przechowywać sekcji krytycznej. Bieżący wątek jest winowajcą. Aby debugować ten przystanek, użyj następujących poleceń debugera:
- kb — aby uzyskać bieżący ślad stosu. Jeśli bieżący wątek jest właścicielem sekcji krytycznej, prawdopodobnie wywołuje element ExitThread. Bieżący wątek powinien zawierać sekcję krytyczną przed zakończeniem pracy. Jeśli bieżący wątek wywołuje funkcję TerminateThread lub SuspendThread, nie powinien to robić dla wątku zawierającego sekcję krytyczną.
- !cs -s <parametru> — zrzut informacji o tej sekcji krytycznej.
- ln <parametr2> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu ujawnionej sekcji krytycznej.
- dps <parametr4> — aby zrzucić ślad stosu dla tej krytycznej sekcji inicjowania.
- Parametr 1 - Identyfikator wątku.
- Parametr 2 - Krytyczny adres sekcji.
- Parametr 3 - Krytyczny adres informacji debugowania sekcji.
- Parametr 4 -Critical section initialization stack trace (Śledzenie stosu inicjowania sekcji krytycznej).
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: EXIT_THREAD_OWNS_LOCK
- Kod zatrzymania: 0x200
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie biblioteki DLL zawierającej aktywną sekcję krytyczną.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli biblioteka DLL ma zmienną globalną zawierającą sekcję krytyczną, a biblioteka DLL zostanie zwolniona, ale sekcja krytyczna nie została usunięta. Aby debugować ten przystanek, użyj następujących poleceń debugera:
- du <parameter3> — aby zrzucić nazwę winowajcej biblioteki DLL.
- .reload dllname lub .reload dllname = <parameter4> — aby ponownie załadować symbole dla tej biblioteki DLL.
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu ujawnionej sekcji krytycznej.
- dps <parametr2> — aby zrzucić ślad stosu na potrzeby inicjowania tej sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 -Critical section initialization stack trace (Śledzenie stosu inicjowania sekcji krytycznej).
- Parametr 3 -DLL name address (Adres nazwy biblioteki DLL ).
- Parametr 4 - DLL adres podstawowy.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_IN_UNLOADED_DLL
- Kod zatrzymania: 0x201
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie bloku stert zawierającego aktywną sekcję krytyczną.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli alokacja sterty zawiera sekcję krytyczną, alokacja zostanie zwolniona i sekcja krytyczna nie została usunięta. Aby debugować ten przystanek, użyj następujących poleceń debugera:
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu ujawnionej sekcji krytycznej.
- dps <parametr2> — aby zrzucić ślad stosu na potrzeby inicjowania tej sekcji krytycznej.
- < parametr3> i <parametr4> mogą pomóc zrozumieć, gdzie przydzielono ten blok sterty (rozmiar alokacji jest prawdopodobnie znaczący).
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 -Critical section initialization stack trace (Śledzenie stosu inicjowania sekcji krytycznej).
- Parametr 3 - Adres bloku stert.
- Parametr 4 - Rozmiar bloku sterty.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_IN_FREED_HEAP
- Kod zatrzymania: 0x202
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Podwójnie zainicjowana lub uszkodzona sekcja krytyczna.
Prawdopodobna przyczynaZazwyczaj ten przystanek jest generowany, jeśli sekcja krytyczna została zainicjowana więcej niż raz. W tym przypadku parametr3 i parametr4 to adresy śledzenia stosu dla dwóch z tych inicjalizacji. Czasami można uzyskać ten przystanek, jeśli sekcja krytyczna lub struktura informacji o debugowaniu została uszkodzona. W tym drugim przypadku możliwe, że parametr3 i parametr4 są nieprawidłowe i bezużyteczne. Aby debugować ten przystanek:
- !cs -s -d <parametr2> — zrzut informacji o tej sekcji krytycznej.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Może to pomóc w zidentyfikowaniu sekcji krytycznej, jeśli jest to zmienna globalna.
- dps <parameter3> i dps <parameter4> — aby zidentyfikować dwie ścieżki kodu do inicjowania tej sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Adres struktury informacji debugowania znalezionej na aktywnej liście.
- Parametr 3 - Pierwszy ślad stosu inicjowania.
- Parametr 4 - Drugi ślad stosu inicjowania.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_DOUBLE_INITIALIZE
- Kod zatrzymania: 0x203
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wolna pamięć zawierająca aktywną sekcję krytyczną.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli pamięć zawierająca sekcję krytyczną została zwolniona, ale sekcja krytyczna nie została usunięta przy użyciu metody DeleteCriticalSection. Aby debugować ten przystanek, użyj następujących poleceń debugera:
- !cs -s -d <parametr2> — zrzut informacji o tej sekcji krytycznej.
- dps <parametr3> — aby zidentyfikować ścieżkę kodu do inicjowania tej sekcji krytycznej.
W większości przypadków weryfikator blokady wykrywa natychmiast wyciek krytycznych sekcji zawartych w alokacji sterty, zakresu bibliotek DLL, alokacji pamięci wirtualnej lub mapViewOfFile mapowanego zakresu pamięci i problemy z różnymi zatrzymaniami w tych przypadkach. Tak więc istnieje bardzo niewiele przypadków pozostawionych dla tego weryfikatora zatrzymać. Blokada musi znajdować się w zakresie pamięci zwolnionym przez kod trybu jądra lub zwolnić proces krzyżowy według interfejsów API, takich jak VirtualFreeEx. Zazwyczaj ten przystanek zostanie napotkany, jeśli poprzedni przystanek (np. LOCK_IN_FREED_HEAP lub LOCK_IN_UNLOADED_DLL) był kontynuowany przez naciśnięcie ciągu "g" w konsoli debugera.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Krytyczny adres informacji debugowania sekcji.
- Parametr 3 -Critical section initialization stack trace (Śledzenie stosu inicjowania sekcji krytycznej).
- Parametr 4 - Nieużyj.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_IN_FREED_MEMORY
- Kod zatrzymania: 0x204
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Uszkodzona sekcja krytyczna.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli pole DebugInfo sekcji krytycznej wskazuje zwolnionej pamięci. Zazwyczaj na liście aktywnej sekcji krytycznej znajduje się inna prawidłowa struktura DebugInfo. Bez uszkodzenia dwa wskaźniki powinny być identyczne. Aby debugować ten przystanek, użyj następujących poleceń debugera:
- !cs -s -d <parametr3> — zrzut informacji o tej sekcji krytycznej na podstawie bieżącej zawartości struktury informacji debugowania znalezionej na aktywnej liście (ta struktura jest rzadko uszkodzona, więc zwykle te informacje są wiarygodne).
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej na podstawie bieżącej zawartości struktury sekcji krytycznej (struktura jest już uszkodzona, więc czasami te informacje nie są wiarygodne).
- dps <parametr4> — aby zidentyfikować ścieżkę kodu do inicjowania tej sekcji krytycznej. Zrzuć sekcję krytyczną pod adresem parameter1 i poszukaj wzorca uszkodzenia. Z dobrymi symbolami ntdll.dl można użyć następujących poleceń:
- dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS
- dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Nieprawidłowy adres informacji o debugowaniu tej sekcji krytycznej.
- Parametr 3 - Adres informacji o debugowaniu znalezionych na aktywnej liście.
- Parametr 4 - Inicjalizacja śledzenia stosu.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_CORRUPTED
- Kod zatrzymania: 0x205
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowy wątek właściciela sekcji krytycznej.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli identyfikator wątku właściciela jest nieprawidłowy w bieżącym kontekście. Aby debugować ten przystanek:
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Właściciel wątku.
- Parametr 3 - Oczekiwano wątku własności.
- Parametr 4 - Adres informacyjny debugowania sekcji krytycznej.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_INVALID_OWNER
- Kod zatrzymania: 0x206
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowa liczba rekursji sekcji krytycznej.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli pole liczby rekursji struktury sekcji krytycznej jest nieprawidłowe w bieżącym kontekście. Aby debugować ten przystanek:
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Liczba rekursji.
- Parametr 3 - Oczekiwano liczby rekursji.
- Parametr 4 - Adres informacyjny debugowania sekcji krytycznej.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_INVALID_RECURSION_COUNT
- Kod zatrzymania: 0x207
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Usuwanie sekcji krytycznej z nieprawidłową liczbą blokad.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli sekcja krytyczna jest własnością wątku, jeśli zostanie usunięta lub jeśli sekcja krytyczna jest niezainicjowana. Aby debugować ten przystanek:
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej. Jeśli wątek jest właścicielem 0, sekcja krytyczna nie została zainicjowana.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Zablokuj liczbę.
- Parametr 3 - Oczekiwana liczba blokad.
- Parametr 4 - Właściciel wątku.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_INVALID_LOCK_COUNT
- Kod zatrzymania: 0x208
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sekcja krytyczna została zwolniona lub uszkodzona.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli sekcja krytyczna jest zwalniana więcej razy niż bieżący wątek, który go nabył. Aby debugować ten przystanek:
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej.
- !cs -s -d <parametr4> — zrzut informacji o tej sekcji krytycznej.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Zablokuj liczbę.
- Parametr 3 - Oczekiwana liczba blokad.
- Parametr 4 - Adres informacyjny debugowania sekcji krytycznej.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_OVER_RELEASED
- Kod zatrzymania: 0x209
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sekcja krytyczna nie została zainicjowana.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli jest używana sekcja krytyczna bez inicjowania lub po jego usunięciu. Aby debugować ten przystanek:
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Powinno to pomóc w zidentyfikowaniu sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Adres informacyjny debugowania sekcji krytycznej.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_NOT_INITIALIZED
- Kod zatrzymania: 0x210
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sekcja Krytyczna została już zainicjowana.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli sekcja krytyczna zostanie ponownie zainicjowana przez bieżący wątek. Aby debugować ten przystanek:
- !cs -s parametr1> lub !cs -s -d < parametr2 — zrzut informacji o tej sekcji krytycznej.
- ln <parametr1> — aby wyświetlić symbole w pobliżu adresu sekcji krytycznej. Może to pomóc w zidentyfikowaniu sekcji krytycznej, jeśli jest to zmienna globalna.
- dps <parametr3> — aby zidentyfikować ścieżkę kodu dla pierwszej inicjalizacji tej sekcji krytycznej.
- kb — aby wyświetlić bieżący ślad stosu, czyli ponowne inicjowanie tej sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Adres informacyjny debugowania sekcji krytycznej.
- Parametr 3 - Pierwszy ślad stosu inicjowania. Użyj programu dps, aby zrzucić go, jeśli nie ma wartości NULL
- Parametr 4 - Nieużyj.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_ALREADY_INITIALIZED
- Kod zatrzymania: 0x211
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie pamięci wirtualnej zawierającej aktywną sekcję krytyczną.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli bieżący wątek wywołuje funkcję VirtualFree w bloku pamięci zawierającym aktywną sekcję krytyczną. Aplikacja powinna wywołać metodę DeleteCriticalSection w tej sekcji krytycznej, zanim zwolni tę pamięć.
- kb — aby wyświetlić bieżący ślad stosu, który wywołuje funkcję VirtualFree. Prawdopodobnym winowajcą jest biblioteka DLL, która wywołuje VirtualFree.
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej.
- dps <parametr2> — aby zidentyfikować ścieżkę kodu do inicjowania tej sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 -Critical section initialization stack trace (Śledzenie stosu inicjowania sekcji krytycznej).
- Parametr 3 - Adres bloku pamięci.
- Parametr 4 - Rozmiar bloku pamięci.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_IN_FREED_VMEM
- Kod zatrzymania: 0x212
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Anulowanie mapowania obszaru pamięci zawierającego aktywną sekcję krytyczną.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli bieżący wątek wywołuje polecenie UnmapViewOfFile w bloku pamięci zawierającym aktywną sekcję krytyczną. Aplikacja powinna wywołać metodę DeleteCriticalSection w tej sekcji krytycznej przed usunięciem mapowania tej pamięci.
- kb — aby wyświetlić bieżący ślad stosu, który wywołuje polecenie UnmapViewOfFile . Prawdopodobnym winowajcą jest biblioteka DLL, która wywołuje unmapViewOfFile.
- !cs -s <parametr1> — zrzut informacji o tej sekcji krytycznej.
- dps <parametr2> — aby zidentyfikować ścieżkę kodu do inicjowania tej sekcji krytycznej.
- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 -Critical section initialization stack trace (Śledzenie stosu inicjowania sekcji krytycznej).
- Parametr 3 - Adres bloku pamięci.
- Parametr 4 - Rozmiar bloku pamięci.
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_IN_UNMAPPED_MEM
- Kod zatrzymania: 0x213
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Bieżący wątek nie jest właścicielem żadnych sekcji krytycznych.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli bieżący wątek wywołuje funkcję LeaveCriticalSection, ale zgodnie z wewnętrznym księgowaniem weryfikatora nie jest właścicielem żadnej sekcji krytycznej. Jeśli parametr2 ma wartość zero, prawdopodobnie jest to usterka w bieżącym wątku. Spróbuje opuścić sekcję krytyczną, która nie wprowadzono, lub może wywołać funkcję LeaveCriticalSection więcej razy niż w sekcji EnterCriticalSection dla tej samej sekcji krytycznej. Jeśli parametr2 nie jest zerowy (jest to ujemna liczba całkowita) wewnętrzne struktury danych weryfikatora są prawdopodobnie uszkodzone.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Liczba sekcji krytycznych należących do bieżącego wątku.
- Parametr 3 - Nieużytne
- Parametr 4 - Nieużytne
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: THREAD_NOT_LOCK_OWNER
- Kod zatrzymania: 0x214
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Używanie sekcji krytycznej, która jest prywatna dla innej biblioteki DLL.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli bieżący wątek próbuje użyć prywatnej blokady, która znajduje się wewnątrz innej biblioteki DLL. Na przykład a.dll próbuje wprowadzić sekcję krytyczną zdefiniowaną w ntdll.dll. Nie można używać prywatnych blokad w bibliotekach DLL.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Krytyczny adres sekcji.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużytne
- Parametr 4 - Nieużytne
- Warstwa testowa: Blokad
- Identyfikator zatrzymania: LOCK_PRIVATE
- Kod zatrzymania: 0x215
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Blokada SRW nie jest inicjowana.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli wątek próbuje użyć blokady SRW (Param1), która nie jest zainicjowana. Aby debugować, użyj ciągu "kb", aby uzyskać bieżący ślad stosu. W tym miejscu jest używana blokada SRW. Blokada SRW powinna zostać zainicjowana przy użyciu funkcji InitializeSRWLock, zanim będzie można jej użyć.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - SRW Lock
- Parametr 2 - Nieużytne
- Parametr 3 - Nieużytne
- Parametr 4 - Nieużytne
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: NOT_INITIALIZED
- Kod zatrzymania: 0x250
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Blokada SRW została już zainicjowana.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli blokada SRW (Param1) jest ponownie inicjowana. Jeśli blokada SRW jest aktywnie używana przez inne wątki, ponowne inicjowanie blokady spowoduje nieprzewidywalne zachowanie aplikacji, w tym zawieszanie się i awarie. Ślad stosu inicjowania może pokazać uzyskanie, jeśli blokada SRW została statycznie zainicjowana.
- kb — aby uzyskać bieżący ślad stosu. W tym miejscu następuje ponowne zainicjowanie blokady SRW.
- dps <parametr3> — aby uzyskać ślad stosu inicjowania funkcji SRW. Ten ślad stosu może pokazać uzyskanie, jeśli blokada została zainicjowana statycznie.
- Parametr 1 - SRW Lock
- Parametr 2 - ThreadId wątku, który zainicjował blokadę SRW.
- Parametr 3 - Adres śledzenia stosu inicjowania. Użyj adresu> dps<, aby zobaczyć, gdzie zainicjowano blokadę SRW.
- Parametr 4 - Nieużytne
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: ALREADY_INITIALIZED
- Kod zatrzymania: 0x251
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Niezgodna Acquire-Release na blokadzie SRW.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli blokada SRW (Param1) jest zwalniana z nieprawidłowym interfejsem API wydania. Jeśli blokada SRW została uzyskana na potrzeby dostępu współdzielonego i jest zwalniana przy użyciu interfejsu API wydania wyłącznego lub blokada SRW została uzyskana w celu uzyskania wyłącznego dostępu i jest zwalniana przy użyciu udostępnionego interfejsu API wydania. Może to spowodować nieprzewidywalne zachowanie aplikacji, w tym zawieszanie się i awarie.
- kb — aby uzyskać bieżący ślad stosu. W tym miejscu jest zwalniana blokada SRW przy użyciu nieprawidłowego interfejsu API.
- dps <parametr3> — aby uzyskać ślad stosu uzyskiwania blokady SRW.
- Parametr 1 - SRW Lock
- Parametr 2 - ThreadId wątku, który nabył blokadę SRW.
- Parametr 3 - Adres śledzenia stosu uzyskiwania. Użyj adresu> dps<, aby zobaczyć, gdzie została uzyskana blokada SRW.
- Parametr 4 - Nieużytne
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: MISMATCHED_ACQUIRE_RELEASE
- Kod zatrzymania: 0x252
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Blokada SRW jest uzyskiwana rekursywnie przez ten sam wątek.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli blokada SRW (Param1) jest uzyskiwana rekursywnie przez ten sam wątek. Spowoduje to zakleszczenie, a wątek będzie blokowany na czas nieokreślony. Cyklicznego nabycia blokady SRW w trybie wyłączności spowoduje zakleszczenie. Rekursywne uzyskiwanie blokady SRW w trybie udostępnionym spowoduje zakleszczenie, gdy wątek czeka na wyłączny dostęp. Rozważmy poniższy przykład: — Wątek A uzyskuje blokadę SRW w trybie udostępnionym — wątek B próbuje acruire blokady SRW w trybie wyłącznym i czeka — wątek A próbuje uzyskać blokadę SRW w trybie współdzielonego rekursywnie. To powiedzie się tak długo, jak nie ma wyłącznego kelnera (w tym przypadku B). Ponieważ blokady SRW nie mają głodu zapisywania, wątek A czeka za wątkiem B. Teraz, Thread B czeka na Thread A, który jest inturn czeka na Thread B powoduje cykliczne oczekiwanie, a tym samym impas.
- kb — aby uzyskać bieżący ślad stosu. W tym miejscu jest uzyskiwana rekursywnie blokada SRW.
- dps <parametr2> — aby pobrać ślad stosu dla pierwszego pozyskiwania.
- Parametr 1 - SRW Lock
- Parametr 2 - Adres pierwszego śledzenia stosu uzyskiwania. Użyj adresu> dps<, aby zobaczyć, gdzie została uzyskana blokada SRW.
- Parametr 3 - Nieużytne
- Parametr 4 - Nieużytne
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: RECURSIVE_ACQUIRE
- Kod zatrzymania: 0x253
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wątek, który kończy działanie lub jest przerywany, jest właścicielem blokady SRW.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli wątek (Param2), który jest właścicielem blokady SRW (Param1) jest zamykany lub jest przerywany. Spowoduje to zablokowanie oddzielonej blokady SRW, a wątki próbujące uzyskać tę blokadę będą blokować na czas nieokreślony.
- kb — aby uzyskać bieżący ślad stosu. Jest to miejsce, w którym wątek kończy działanie lub jest przerywany.
- dps <parametr3> — aby uzyskać ślad stosu uzyskiwania blokady SRW.
- Parametr 1 - SRW Lock
- Parametr 2 - ThreadId wątku, który kończy lub jest przerywany.
- Parametr 3 - Adres śledzenia stosu uzyskiwania. Użyj adresu> dps<, aby zobaczyć, gdzie została uzyskana blokada SRW.
- Parametr 4 - Nieużytne
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: EXIT_THREAD_OWNS_LOCK
- Kod zatrzymania: 0x254
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalniana blokada SRW nie została pobrana przez ten wątek.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli blokada SRW (Param1) jest zwalniana przez wątek (Param2), który nie nabył blokady. Reprezentuje to złą praktykę programową, która jest trudna do uzyskania właściwego działania i może prowadzić do nieprzewidywalnego zachowania aplikacji.
- kb — aby uzyskać bieżący ślad stosu. W tym miejscu wątek zwalnia blokadę SRW, której nie nabył.
- dps <parametr4> — aby uzyskać ślad stosu uzyskiwania blokady SRW.
- Parametr 1 - SRW Lock
- Parametr 2 - Current ThreadId.
- Parametr 3 - ThreadId wątku, który nabył blokadę SRW.
- Parametr 4 - Adres śledzenia stosu uzyskiwania. Użyj adresu> dps<, aby zobaczyć, gdzie została uzyskana blokada SRW.
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: INVALID_OWNER
- Kod zatrzymania: 0x255
- Dotkliwość: Ostrzeżenie
- Jednorazowy błąd:
- Raport o błędach: Żaden
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwolniona pamięć zawiera aktywną blokadę SRW.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli zwalniany adres pamięci (Param1) zawiera aktywną blokadę SRW, która jest nadal używana. Może to spowodować nieprzewidywalne zachowanie aplikacji, w tym awarie i zawieszenie.
- kb — aby uzyskać bieżący ślad stosu. W tym miejscu zwalniana jest pamięć zawierająca aktywną blokadę SRW.
- dps <parametr4> — aby uzyskać ślad stosu uzyskiwania blokady SRW.
- Parametr 1 - SRW Lock
- Parametr 2 - Adres zwalnianej pamięci.
- Parametr 3 - ThreadId wątku, który nabył blokadę SRW.
- Parametr 4 - Adres śledzenia stosu uzyskiwania. Użyj adresu> dps<, aby zobaczyć, gdzie została uzyskana blokada SRW.
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: IN_FREED_MEMORY
- Kod zatrzymania: 0x256
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalniana biblioteka DLL zawiera aktywną blokadę SRW.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli biblioteka DLL jest zwalniana (Param2) zawiera aktywną blokadę SRW (Param1), która jest nadal używana. Może to spowodować nieprzewidywalne zachowanie aplikacji, w tym awarie i zawieszenie.
- kb — aby uzyskać bieżący ślad stosu. W tym miejscu jest zwalniana biblioteka DLL, która zawiera aktywną blokadę SRW.
- du <parameter2> — aby znaleźć nazwę biblioteki DLL, która jest zwalniana.
- dps <parametr4> — aby uzyskać ślad stosu uzyskiwania blokady SRW.
- Parametr 1 - SRW Lock
- Parametr 2 - Adres nazwy zwalnianej biblioteki DLL. Użyj du <address> , aby wyświetlić nazwę.
- Parametr 3 - ThreadId wątku, który nabył blokadę SRW.
- Parametr 4 - Adres śledzenia stosu uzyskiwania. Użyj adresu> dps<, aby zobaczyć, gdzie została uzyskana blokada SRW.
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: IN_UNLOADED_DLL
- Kod zatrzymania: 0x257
- Dotkliwość: Ostrzeżenie
- Jednorazowy błąd:
- Raport o błędach: Żaden
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Blokada SRW jest uzyskiwana na ścieżce zamknięcia, co może spowodować zawieszenie.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli na ścieżce zamknięcia jest uzyskiwana blokada SRW (Param1). Blokady SRW nie są zamykane. Próba uzyskania blokady SRW, która została oddzielona (z powodu zamknięcia procesu lub innego powodu), spowoduje zawieszenie. Wywołanie metody ConditionVariableSRW na ścieżce zamknięcia może również spowodować zatrzymanie tego weryfikatora, ponieważ blokada zostanie zwolniona i uzyskana podczas tego wywołania. Aby debugować ten przystanek:
- kb — aby uzyskać bieżący ślad stosu. Jest to miejsce, w którym blokada SRW jest uzyskiwana na ścieżce zamykania.
- Parametr 1 - SRW Lock
- Parametr 2 - Nieużytne
- Parametr 3 - Nieużytne
- Parametr 4 - Nieużytne
- Warstwa testowa: SRWLock
- Identyfikator zatrzymania: ACQUIRE_ON_SHUTDOWN_PATH
- Kod zatrzymania: 0x258
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowy wyjątek obsługi dla bieżącego śledzenia stosu.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli funkcja w górnej części stosu przeszła nieprawidłową dojścia do procedur systemowych. Zwykle proste polecenie kb ujawni, jaka jest wartość przekazanego dojścia (musi być jednym z parametrów — zwykle pierwszym). Jeśli wartość ma wartość null, jest to wyraźnie błędne. Jeśli wartość wygląda poprawnie, musisz użyć rozszerzenia debugera !htrace, aby uzyskać historię operacji odnoszących się do tej wartości dojścia. W większości przypadków musi być używana wartość dojścia po zamknięciu.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Kod wyjątku.
- Parametr 2 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 3 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Obsługuje
- Identyfikator zatrzymania: INVALID_HANDLE
- Kod zatrzymania: 0x300
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowy indeks TLS używany do śledzenia bieżącego stosu.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli funkcja w górnej części stosu przeszła nieprawidłowy indeks TLS do procedur systemowych TLS. Zwykle proste polecenie kb ujawni, co jest złe. Typowy błąd polega na założeniu określonej wartości dla indeksu TLS zamiast wywoływania protokołu TlsAlloc. Może się tak zdarzyć, myśląc, że zawsze otrzymujesz wartość N, dlatego nie ma potrzeby wywoływania metody TlsAlloc lub częściej z powodu niezainicjowanej zmiennej.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieprawidłowy indeks TLS.
- Parametr 2 - Oczekiwano niższej części indeksu.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Obsługuje
- Identyfikator zatrzymania: INVALID_TLS_VALUE
- Kod zatrzymania: 0x301
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowe parametry wywołania WaitForMultipleObjects.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli funkcja w górnej części stosu o nazwie WaitForMultipleObjects z wartością NULL jako adres tablicy dojść do oczekiwania lub z zerem jako liczbę dojść. Proste polecenie kb spowoduje niepoprawne wywołanie funkcji wywołującej ten interfejs API.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres obiektu obsługuje wektor.
- Parametr 2 - Liczba dojść.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Obsługuje
- Identyfikator zatrzymania: INCORRECT_WAIT_CALL
- Kod zatrzymania: 0x302
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Dojście o wartości NULL przekazane jako parametr. Należy użyć prawidłowego uchwytu.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli funkcja w górnej części stosu przekazała dojście NULL do procedur systemowych.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Obsługuje
- Identyfikator zatrzymania: NULL_HANDLE
- Kod zatrzymania: 0x303
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Oczekiwanie na dojście wątku w dllMain.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli bieżący wątek jest obecnie uruchomiony kod wewnątrz funkcji DllMain jednej z bibliotek DLL załadowanych w bieżącym procesie i wywołuje waitForSingleObject lub WaitForMultipleObjects czekać na dojściu wątku w tym samym procesie. Najprawdopodobniej doprowadzi to do zakleszczenia, ponieważ uchwyt wątku nie zostanie zasygnalizowany, chyba że drugi wątek kończy się. Gdy drugi wątek wywoła metodę ExitThread, spróbuje uzyskać blokadę modułu ładującego DLL, a następnie wywołać bibliotekę DllMain (DLL_THREAD_DETACH) dla wszystkich bibliotek DLL w bieżącym procesie. Ale blokada modułu ładującego jest własnością pierwszego wątku (ten, który czeka na uchwyt wątku), więc dwa wątki zakleszczą się.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Uchwyt wątku.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Obsługuje
- Identyfikator zatrzymania: WAIT_IN_DLLMAIN
- Kod zatrzymania: 0x304
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Niepoprawny typ obiektu dla uchwytu.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli bieżący wątek wywołuje interfejs API z uchwytem do obiektu z nieprawidłowym typem obiektu. Na przykład wywołanie metody SetEvent za pomocą uchwytu semafora jako parametru spowoduje wygenerowanie tego zatrzymania. Aby debugować ten przystanek:
- kb — aby wyświetlić bieżący ślad stosu. Winowajcą jest prawdopodobnie biblioteka DLL, która wywołuje verifier.dll;
- du <parameter2> — aby wyświetlić rzeczywisty typ uchwytu. Wartość uchwytu to parametr1. W powyższym przykładzie zostanie wyświetlony komunikat: "Semaphore".
- du <parameter3> — aby wyświetlić typ obiektu oczekiwany przez interfejs API. W powyższym przykładzie nazwa będzie następująca: "Zdarzenie".
- !htrace <parametr1> może być przydatny, ponieważ wyświetli ślad stosu dla ostatnich operacji otwierania/zamykania na tym dojściu.
- Parametr 1 - Dojmij wartość.
- Parametr 2 - Nazwa typu obiektu. Użyj narzędzia du, aby go wyświetlić
- Parametr 3 - Oczekiwana nazwa typu obiektu. Użyj narzędzia du, aby go wyświetlić
- Parametr 4 - Nieużyj.
- Warstwa testowa: Obsługuje
- Identyfikator zatrzymania: INCORRECT_OBJECT_TYPE
- Kod zatrzymania: 0x305
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie biblioteki DLL, która przydzielała indeks TLS, który nie został zwolniony.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli biblioteka DLL, która przydzieliła indeks TLS, jest zwalniana przed zwolnieniem tego indeksu TLS. Aby debugować ten przystanek:
- du <parameter3> — wyświetlanie nazwy winowajcej biblioteki DLL;
- .reload xxx.dll=<parameter4> — ponowne ładowanie symboli dla winy DLL (w razie potrzeby). xxx.dll jest nazwą biblioteki DLL wyświetlanej w powyższym kroku;
- u <parametr2> — dezasembluje kod, który przydzielił protokół TLS. Powinno to wskazywać funkcję, która przydzieliła protokół TLS, ale nie zapomniała zwolnić go przed zwolnieniem biblioteki DLL.
- Parametr 1 - Indeks TLS
- Parametr 2 - Adres kodu, który przydzielił ten indeks TLS.
- Parametr 3 -DLL name address (Adres nazwy biblioteki DLL ). Użyj zrzutu, aby go zrzucić.
- Parametr 4 - DLL adres podstawowy.
- Warstwa testowa: TLS
- Identyfikator zatrzymania: TLS_LEAK
- Kod zatrzymania: 0x350
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Uszkodzona struktura protokołu TLS weryfikatora.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli wewnętrzne struktury weryfikatora używane do przechowywania stanu miejsc protokołu TLS dla wątku są uszkodzone. Bardzo prawdopodobne jest to z powodu niektórych losowych uszkodzeń w procesie.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - ADRES TEB.
- Parametr 2 - Oczekiwany adres TEB.
- Parametr 3 - Identyfikator wątku.
- Parametr 4 - Oczekiwany identyfikator wątku.
- Warstwa testowa: TLS
- Identyfikator zatrzymania: CORRUPTED_TLS
- Kod zatrzymania: 0x351
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Używanie nieprawidłowego indeksu TLS.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli jest używany nieprawidłowy indeks TLS. W większości przypadków jest to spowodowane tym, że kod nadal używa tego indeksu, gdy jest wywoływany protokół TlsFree. Oto przykład wątku wątku wątku. T1: Ładuje bibliotekę DLL i TlsAlloc T1: Wywołanie zwrotne kolejki T1: Pominięto oczekujące/anulowane wywołanie zwrotne T1: TlsFree T2: Przebiegi wywołania zwrotnego i wywołuje funkcję TlsSetValue T1: Zwalnianie biblioteki DLL
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Indeks TLS
- Parametr 2 - Nieużytne.
- Parametr 3 - Nieużytne.
- Parametr 4 - Nieużytne.
- Warstwa testowa: TLS
- Identyfikator zatrzymania: INVALID_TLS_INDEX
- Kod zatrzymania: 0x352
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie bloku pamięci wirtualnej o nieprawidłowym rozmiarze lub adresie początkowym.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje virtualfree lub dll zwolnić z nieprawidłowym adresem początkowym lub rozmiarem alokacji pamięci. W przypadku zwolnienia biblioteki DLL prawdopodobnie oznacza to uszkodzenie pamięci na załadowanej liście bibliotek DLL. Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu oraz adresowi pamięci i rozmiarowi, który ma zostać zwolniony, i spróbuj ustalić, dlaczego są one nieprawidłowe.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres podstawowy alokacji.
- Parametr 2 - Rozmiar regionu pamięci.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_FREEMEM
- Kod zatrzymania: 0x600
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowe wirtualne wywołanie aloku.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli weryfikator aplikacji wykryje wywołanie VirtualAlloc z nieprawidłowym adresem początkowym lub rozmiarem alokacji pamięci. Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) oraz adresowi pamięci i rozmiarowi, który ma zostać przydzielony, i spróbuj ustalić, dlaczego są one nieprawidłowe.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Wskaźnik do adresu podstawowego alokacji.
- Parametr 2 - Wskaźnik do rozmiaru regionu pamięci.
- Parametr 3 - Nieużytne
- Parametr 4 - Nieużytne
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_ALLOCMEM
- Kod zatrzymania: 0x601
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowe wywołanie widoku mapy.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wywołanie MapViewOfFile z nieprawidłowym adresem podstawowym lub rozmiarem mapowania. Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) oraz adresowi pamięci i rozmiarowi, który ma zostać zamapowany, i spróbuj ustalić, dlaczego są one nieprawidłowe.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Wskaźnik do mapowania adresu podstawowego.
- Parametr 2 - Wskaźnik do wyświetlania rozmiaru.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_MAPVIEW
- Kod zatrzymania: 0x602
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sondowanie nieprawidłowego adresu.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wywołanie IsBadXXXPtr z nieprawidłowym adresem (np. adresem trybu jądra, a nie normalnym adresem trybu użytkownika) dla buforu pamięci do sondowania. Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) i spróbuj ustalić, dlaczego obiekt wywołujący funkcji IsBadXXXPtr zakończył się nieprawidłowym adresem. Wiele razy adres jest zwykłym fałszywym, np. niezainicjowanym wskaźnikiem. Biblioteka MSDN zawiera listę kilku powodów, dla których aplikacje nie powinny używać interfejsów API IsBadXXXPtr: W środowisku wielozadaniowym z wyprzedzeniem istnieje możliwość zmiany dostępu procesu do testowanej pamięci. Wyłuszczenie potencjalnie nieprawidłowych wskaźników może wyłączyć rozszerzanie stosu w innych wątkach. Wątek wyczerpujący stos, gdy rozszerzenie stosu zostało wyłączone, powoduje natychmiastowe zakończenie procesu nadrzędnego bez wyskakującego okna błędów ani informacji diagnostycznych. Oczekuje się, że wątki w procesie będą współpracować w taki sposób, aby nie zwolnić pamięci, której potrzebuje druga. Użycie tej funkcji nie neguje konieczności wykonania tej czynności. Jeśli nie zostanie to zrobione, aplikacja może zakończyć się niepowodzeniem w nieprzewidywalny sposób. Ze względu na wszystkie te powody zalecamy, aby nigdy nie używać tych interfejsów API.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres początkowy.
- Parametr 2 - Rozmiar bloku pamięci.
- Parametr 3 - Nieprawidłowy adres.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: PROBE_INVALID_ADDRESS
- Kod zatrzymania: 0x603
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sondowanie wolnej pamięci.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wywołanie IsBadXXXPtr dla alokacji pamięci, która jest bezpłatna. Jest to bardzo złe, ponieważ istnieje możliwość, że w niektórych innych przypadkach ta pamięć została już ponownie użyta dla innej alokacji. Ponieważ bieżąca ścieżka kodu (kb) nie jest właścicielem tej pamięci, może to spowodować uszkodzenie pamięci innej osoby z katastrofalnymi skutkami. Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) i spróbuj ustalić, dlaczego obiekt wywołujący funkcji IsBadXXXPtr zakończył sondowanie wolnej pamięci. Adres może być zwykłymi fałszywymi (np. niezainicjowanym wskaźnikiem) lub być może już zwolnioną pamięcią. Jeśli pamięć została już zwolniona przez jeden z interfejsów API VirtualFree lub UnmapViewOfFile, '!avrf -vs -a parametr3' wyszuka dziennik śladów stosu ścieżek kodu, które przydzielone/zwolniły ten adres i wyświetli te ślady stosu, jeśli są dostępne. Może to spowodować wyświetlenie śladu stosu, który zwolnił tę pamięć. Częściej pamięć jest już zwalnianą alokacją sterty. Aby sprawdzić, czy istnieje taka możliwość, "!avrf -hp -a parametr3" wyszuka dziennik śladów stosu ścieżek kodu, które przydzieliły/zwolniły ten adres z/do sterta i wyświetli te ślady stosu, jeśli są dostępne. Biblioteka MSDN zawiera listę kilku powodów, dla których aplikacje nie powinny używać interfejsów API IsBadXXXPtr: W środowisku wielozadaniowym z wyprzedzeniem istnieje możliwość zmiany dostępu procesu do testowanej pamięci. Wyłuszczenie potencjalnie nieprawidłowych wskaźników może wyłączyć rozszerzanie stosu w innych wątkach. Wątek wyczerpujący stos, gdy rozszerzenie stosu zostało wyłączone, powoduje natychmiastowe zakończenie procesu nadrzędnego bez wyskakującego okna błędów ani informacji diagnostycznych. Oczekuje się, że wątki w procesie będą współpracować w taki sposób, aby nie zwolnić pamięci, której potrzebuje druga. Użycie tej funkcji nie neguje konieczności wykonania tej czynności. Jeśli nie zostanie to zrobione, aplikacja może zakończyć się niepowodzeniem w nieprzewidywalny sposób. Ze względu na wszystkie te powody zalecamy, aby nigdy nie używać tych interfejsów API.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres początkowy.
- Parametr 2 - Rozmiar bloku pamięci.
- Parametr 3 - Adres strony wolnej pamięci.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: PROBE_FREE_MEM
- Kod zatrzymania: 0x604
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sondowanie strony straży.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wywołanie IsBadXXXPtr dla alokacji pamięci zawierającej co najmniej jedną GUARD_PAGE. Jest to bardzo złe, ponieważ jest to bardzo możliwe, że ta GUARD_PAGE jest końcem bieżącego stosu wątku. Zgodnie z dokumentacją w bibliotece MSDN: wyłusanie potencjalnie nieprawidłowych wskaźników może wyłączyć rozszerzanie stosu w innych wątkach. Wątek wyczerpujący stos, gdy rozszerzenie stosu zostało wyłączone, powoduje natychmiastowe zakończenie procesu nadrzędnego bez wyskakującego okna błędów ani informacji diagnostycznych. Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) i spróbuj ustalić, dlaczego obiekt wywołujący funkcji IsBadXXXPtr zakończył sondowanie GUARD_PAGE. Biblioteka MSDN zawiera listę kilku powodów, dla których aplikacje nie powinny używać interfejsów API IsBadXXXPtr: W środowisku wielozadaniowym z wyprzedzeniem istnieje możliwość zmiany dostępu procesu do testowanej pamięci. Wyłuszczenie potencjalnie nieprawidłowych wskaźników może wyłączyć rozszerzanie stosu w innych wątkach. Wątek wyczerpujący stos, gdy rozszerzenie stosu zostało wyłączone, powoduje natychmiastowe zakończenie procesu nadrzędnego bez wyskakującego okna błędów ani informacji diagnostycznych. Oczekuje się, że wątki w procesie będą współpracować w taki sposób, aby nie zwolnić pamięci, której potrzebuje druga. Użycie tej funkcji nie neguje konieczności wykonania tej czynności. Jeśli nie zostanie to zrobione, aplikacja może zakończyć się niepowodzeniem w nieprzewidywalny sposób. Ze względu na wszystkie te powody zalecamy, aby nigdy nie używać tych interfejsów API.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres początkowy.
- Parametr 2 - Rozmiar bloku pamięci.
- Parametr 3 - Adres strony straży.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: PROBE_GUARD_PAGE
- Kod zatrzymania: 0x605
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sondowanie adresu NULL.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wywołanie IsBadXXXPtr z adresem NULL. Aby debugować ten przystanek, spójrz na bieżący ślad stosu (kb) i spróbuj ustalić, dlaczego obiekt wywołujący funkcji IsBadXXXPtr zakończył się adresem NULL. Zazwyczaj jest to znak, że ktoś nie sprawdza wartości zwracanej jednej z funkcji alokacji pamięci. Na przykład poniższy kod jest niepoprawny:
int main (void)
{
PVOID p;
p = malloc (1024);
Use (p);
return 0;
}
void Use (PVOID p)
{
if (IsBadReadPtr (p)) {
return;
}
//
// p is safe to be used here.
//
}
Ten kod powinien zostać ponownie napisany w następujący sposób:
int main (void)
{
PVOID p;
p = malloc (1024);
if (NULL == p)) {
return -1;
}
Use (p);
return 0;
}
void Use (PVOID p)
{
//
// p is safe to be used here.
//
}
Biblioteka MSDN zawiera listę kilku powodów, dla których aplikacje nie powinny używać interfejsów API IsBadXXXPtr: W środowisku wielozadaniowym z wyprzedzeniem istnieje możliwość zmiany dostępu procesu do testowanej pamięci. Wyłuszczenie potencjalnie nieprawidłowych wskaźników może wyłączyć rozszerzanie stosu w innych wątkach. Wątek wyczerpujący stos, gdy rozszerzenie stosu zostało wyłączone, powoduje natychmiastowe zakończenie procesu nadrzędnego bez wyskakującego okna błędów ani informacji diagnostycznych. Oczekuje się, że wątki w procesie będą współpracować w taki sposób, aby nie zwolnić pamięci, której potrzebuje druga. Użycie tej funkcji nie neguje konieczności wykonania tej czynności. Jeśli nie zostanie to zrobione, aplikacja może zakończyć się niepowodzeniem w nieprzewidywalny sposób. Ze względu na wszystkie te powody zalecamy, aby nigdy nie używać tych interfejsów API.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: PROBE_NULL
- Kod zatrzymania: 0x606
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Sondowanie bloku pamięci z nieprawidłowym adresem początkowym lub rozmiarem.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wywołanie IsBadXXXPtr z nieprawidłowym adresem początkowym (np. adresem trybu jądra, a nie normalnym adresem trybu użytkownika) lub nieprawidłowym rozmiarem buforu pamięci do sondowania. Aby debugować ten przystanek, sprawdź bieżący ślad stosu (kb) i spróbuj ustalić, dlaczego obiekt wywołujący funkcji IsBadXXXPtr zakończył się nieprawidłowym adresem lub rozmiarem. Wiele razy adres lub rozmiar są zwykłymi fałszywymi, np. niezainicjowanymi zmiennymi. Biblioteka MSDN zawiera listę kilku powodów, dla których aplikacje nie powinny używać interfejsów API IsBadXXXPtr: W środowisku wielozadaniowym z wyprzedzeniem istnieje możliwość zmiany dostępu procesu do testowanej pamięci. Wyłuszczenie potencjalnie nieprawidłowych wskaźników może wyłączyć rozszerzanie stosu w innych wątkach. Wątek wyczerpujący stos, gdy rozszerzenie stosu zostało wyłączone, powoduje natychmiastowe zakończenie procesu nadrzędnego bez wyskakującego okna błędów ani informacji diagnostycznych. Oczekuje się, że wątki w procesie będą współpracować w taki sposób, aby nie zwolnić pamięci, której potrzebuje druga. Użycie tej funkcji nie neguje konieczności wykonania tej czynności. Jeśli nie zostanie to zrobione, aplikacja może zakończyć się niepowodzeniem w nieprzewidywalny sposób. Ze względu na wszystkie te powody zalecamy, aby nigdy nie używać tych interfejsów API.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres początkowy.
- Parametr 2 - Rozmiar bloku pamięci.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: PROBE_INVALID_START_OR_SIZE
- Kod zatrzymania: 0x607
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie biblioteki DLL z nieprawidłowym rozmiarem lub adresem początkowym.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje zwalnianie biblioteki DLL z nieprawidłowym adresem początkowym lub rozmiarem zakresu pamięci biblioteki DLL. Prawdopodobnie oznacza to uszkodzenie pamięci wewnątrz wewnętrznej ntdll.dll załadowanej listy bibliotek DLL.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - DLL adres podstawowy pamięci.
- Parametr 2 - DLL rozmiar zakresu pamięci.
- Parametr 3 -DLL name address (Adres nazwy biblioteki DLL ). Użyj zrzutu, aby go zrzucić.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_DLL_RANGE
- Kod zatrzymania: 0x608
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie bloku pamięci wewnątrz zakresu adresów stosu bieżącego wątku.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wirtualny blok pamięci, który jest faktycznie częścią stosu bieżącego wątku (!). Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) i spróbuj zrozumieć, dlaczego funkcja o nazwie VirtualFree myślała, że blok pamięci został dynamicznie przydzielony lub zamapowany, ale w rzeczywistości pamięć przydzielona ze stosu.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres podstawowy alokacji.
- Parametr 2 - Rozmiar regionu pamięci.
- Parametr 3 - Adres niskiego limitu stosu.
- Parametr 4 - Adres wysokiego limitu stosu.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: FREE_THREAD_STACK_MEMORY
- Kod zatrzymania: 0x609
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowy parametr FreeType dla operacji VirtualFree.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje virtualfree z nieprawidłową wartością parametru FreeType. Jedyne dwie dopuszczalne wartości tego parametru to MEM_DECOMMIT i MEM_RELEASE. Jeśli funkcja VirtualFree jest wywoływana z dowolną inną wartością z wyjątkiem tych dwóch, usługa VirtualFree nie zwolni pamięci. Aby debugować ten przystanek, spójrz na bieżący ślad stosu (kb): obiekt wywołujący VirtualFree jest prawdopodobnie winowajcą.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Niepoprawna wartość używana przez aplikację.
- Parametr 2 - Oczekiwano poprawnej wartości 1.
- Parametr 3 - Oczekiwano poprawnej wartości 2.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_FREE_TYPE
- Kod zatrzymania: 0x60A
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Próba zwolnienia bloku pamięci wirtualnej, który jest już bezpłatny.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wirtualnyfree dla adresu, który jest już bezpłatny. Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) i spróbuj ustalić, dlaczego pamięć jest już bezpłatna, ale aplikacja próbuje go zwolnić ponownie. '!avrf -vs -a parametr1" wyszuka dziennik śladów stosu ścieżek kodu, które przydzielono/zwolnił ten adres i wyświetli te ślady stosu, jeśli są dostępne. Może to spowodować wyświetlenie śladu stosu, który zwolnił tę pamięć.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres bloku pamięci.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: MEM_ALREADY_FREE
- Kod zatrzymania: 0x60B
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowy parametr rozmiaru dla operacji VirtualFree (MEM_RELEASE).
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje virtualfree (MEM_RELEASE) z wartością inną niż zero dla parametru dwSize. W przypadku używania MEM_RELEASE jedyną akceptowalną wartością tego parametru jest 0. Jeśli funkcja VirtualFree jest wywoływana z dowolną inną wartością z wyjątkiem 0, virtualfree nie zwolni pamięci. Aby debugować ten przystanek, spójrz na bieżący ślad stosu (kb): obiekt wywołujący VirtualFree jest prawdopodobnie winowajcą.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Niepoprawny rozmiar używany przez aplikację.
- Parametr 2 - Oczekiwano poprawnego rozmiaru (0).
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_FREE_SIZE
- Kod zatrzymania: 0x60C
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieoczekiwany wyjątek zgłoszony w procedurze punktu wejścia biblioteki DLL.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli funkcja punktu wejścia biblioteki DLL (DllMain) zgłasza wyjątek. Jednym z przykładów, dlaczego jest to złe, jest to: jeśli biblioteka DllMain(DLL_PROCESS_ATTACH) zgłasza wyjątek, moduł ładujący dll systemu Windows będzie: — przechwyć i ukryć wyjątek; — Zwalnianie biblioteki DLL bez wywoływania jej biblioteki DllMain(DLL_PROCESS_DETACH). W wielu przypadkach biblioteka DLL przydzieliła już niektóre zasoby, a następnie zgłosiła wyjątek i nie będzie miała możliwości wydania tych zasobów w dllMain (DLL_PROCESS_DETACH). Aby debugować ten przystanek:
- du <parameter1> — aby wyświetlić nazwę biblioteki DLL;
- .exr <parameter2> — aby wyświetlić informacje o wyjątku;
- .cxr <parametr3> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku i ślad stosu w czasie zgłoszenia wyjątku;
- < parametr4> jest adresem wewnętrznej struktury weryfikatora i nie ma żadnego znaczenia dla większości użytkowników weryfikatora.
- Parametr 1 - DLL name (użyj zrzutu, aby go zrzucić).
- Parametr 2 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 3 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Parametr 4 - Weryfikator dll deskryptor
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: DLL_UNEXPECTED_EXCEPTION
- Kod zatrzymania: 0x60D
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieoczekiwany wyjątek zgłoszony w funkcji wątku.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli funkcja wątku zgłasza wyjątek. Jest to złe, ponieważ cały proces zostanie zabity. Aby debugować ten przystanek:
- < parametr1> może być znaczący dla typu wyjątku. Na przykład kod wyjątku C0000005 oznacza naruszenie dostępu;
- .exr <parameter2> — aby wyświetlić informacje o wyjątku;
- .cxr <parametr3> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku.
- Parametr 1 - Kod wyjątku.
- Parametr 2 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 3 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: THREAD_UNEXPECTED_EXCEPTION
- Kod zatrzymania: 0x60E
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieoczekiwany wyjątek zgłoszony podczas sondowania pamięci.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli otrzymamy wyjątek podczas wywołania IsBadXXXPtr. Oznacza to, że bufor pamięci, który sondujemy, nie ma ochrony zakładanej przez obiekt wywołujący lub że pamięć została już zwolniona itp. Zapoznaj się z powyższym omówieniem innego kodu zatrzymania (PROBE_INVALID_ADDRESS, PROBE_FREE_MEM, PROBE_GUARD_PAGE, PROBE_NULL, PROBE_INVALID_START_OR_SIZE), aby uzyskać więcej przykładów, dlaczego używanie interfejsów API IsBadXXXPtr nie jest zalecane. Aby debugować ten przystanek:
- < parametr1> zazwyczaj będzie C0000005 i oznacza to naruszenie dostępu;
- .exr <parameter2> — aby wyświetlić informacje o wyjątku;
- .cxr <parametr3> , a następnie kb — aby wyświetlić informacje o kontekście wyjątku i ślad stosu w momencie zgłoszenia wyjątku.
- Parametr 1 - Kod wyjątku.
- Parametr 2 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 3 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Parametr 4 - Nieużytne
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: PROBE_UNEXPECTED_EXCEPTION
- Kod zatrzymania: 0x60F
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Próba zresetowania adresu NULL.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje wywołanie VirtualFree (MEM_RESET) z pierwszym parametrem o wartości NULL. MEM_RESET należy używać tylko dla już przydzielonej pamięci, więc wartość NULL nie jest prawidłowym pierwszym parametrem w tym przypadku.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_MEM_RESET
- Kod zatrzymania: 0x610
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie bloku pamięci stertowej wewnątrz zakresu adresów stosu bieżącego wątku.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje heapFree dla bloku pamięci, który jest faktycznie częścią stosu bieżącego wątku (!). Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) i spróbuj zrozumieć, dlaczego funkcja o nazwie HeapFree myślała, że blok pamięci został dynamicznie przydzielony lub zamapowany, ale faktycznie pamięć przydzielona ze stosu.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres podstawowy alokacji.
- Parametr 2 - Rozmiar regionu pamięci.
- Parametr 3 - Adres niskiego limitu stosu.
- Parametr 4 - Adres wysokiego limitu stosu.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: FREE_THREAD_STACK_MEMORY_AS_HEAP
- Kod zatrzymania: 0x612
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Usuń mapowanie obszaru pamięci wewnątrz zakresu adresów stosu bieżącego wątku.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli weryfikator aplikacji wykryje obiekt UnmapViewOfFile dla bloku pamięci, który jest faktycznie częścią stosu bieżącego wątku (!). Aby debugować ten przystanek, przyjrzyj się bieżącemu śladowi stosu (kb) i spróbuj zrozumieć, dlaczego funkcja o nazwie UnmapViewOfFile uważała, że blok pamięci został dynamicznie przydzielony lub zamapowany, ale faktycznie została przydzielona pamięć ze stosu.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres podstawowy alokacji.
- Parametr 2 - Rozmiar regionu pamięci.
- Parametr 3 - Adres niskiego limitu stosu.
- Parametr 4 - Adres wysokiego limitu stosu.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: FREE_THREAD_STACK_MEMORY_AS_MAP
- Kod zatrzymania: 0x613
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowy adres RTL_RESOURCE.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli aplikacja próbuje użyć wartości NULL lub innego nieprawidłowego adresu (np. adresu trybu jądra) jako adresu prawidłowego obiektu. RtlInitializeResource (NULL) to nieprawidłowe wywołanie interfejsu API, które spowoduje wyzwolenie tego rodzaju zatrzymania weryfikatora. parametrm1 to niepoprawny używany adres, a winowajca znajduje się na ślad stosu (wyświetl go za pomocą kb).
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_RESOURCE_ADDRESS
- Kod zatrzymania: 0x614
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprawidłowy adres sekcji krytycznej.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli aplikacja próbuje użyć wartości NULL lub innego nieprawidłowego adresu (np. adresu trybu jądra) jako adresu prawidłowego obiektu. EnterCriticalSection(NULL) to nieprawidłowe wywołanie interfejsu API, które spowoduje wyzwolenie tego rodzaju zatrzymania weryfikatora. parametrm1 to niepoprawny używany adres, a winowajca znajduje się na ślad stosu (wyświetl go za pomocą kb).
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_CRITSECT_ADDRESS
- Kod zatrzymania: 0x615
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Spróbuj wykonać kod w pamięci nie wykonywalnej.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli aplikacja próbuje uruchomić kod z adresu, który nie jest wykonywalny lub bezpłatny. Aby debugować ten przystanek:
- u <parametr2> — aby usunąć winowajcę kodu
- .exr <parameter3> — aby wyświetlić informacje o wyjątku
- .cxr <parametr4> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku i ślad stosu w czasie zgłoszenia wyjątku.
- Parametr 1 - Adres, do których uzyskuje się dostęp.
- Parametr 2 - Kod wykonujący nieprawidłowy dostęp.
- Parametr 3 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 4 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: THREAD_UNEXPECTED_EXCEPTION_CODE
- Kod zatrzymania: 0x616
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieoczekiwany wyjątek zgłoszony podczas inicjowania buforu wyjściowego.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli otrzymamy wyjątek podczas inicjowania buforu określonego jako parametr wyjściowy dla interfejsu API Win32 lub CRT. Zazwyczaj oznacza to, że określony rozmiar buforu wyjściowego jest niepoprawny. Aby debugować ten przystanek:
- .exr <parameter3> — aby wyświetlić informacje o wyjątku
- .cxr <parametr4> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku i ślad stosu w czasie zgłoszenia wyjątku.
- Parametr 1 - Bufor adresu początkowego.
- Parametr 2 - Rozmiar buforu.
- Parametr 3 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 4 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: OUTBUFF_UNEXPECTED_EXCEPTION
- Kod zatrzymania: 0x617
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieoczekiwany wyjątek podczas próby znalezienia rozmiaru bloku sterty.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli otrzymamy wyjątek podczas wywoływania funkcji HeapSize dla bloku stert, który jest zwalniany. Zazwyczaj oznacza to, że określony adres bloku sterty jest niepoprawny lub sterta jest uszkodzona. Aby debugować ten przystanek:
- .exr <parameter3> — aby wyświetlić rekord wyjątku
- .cxr <parametr4> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku i ślad stosu w czasie zgłoszenia wyjątku.
- Parametr 1 - Adres zwalnianego bloku stert.
- Parametr 2 - Uchwyt stertowy.
- Parametr 3 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 4 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: SIZE_HEAP_UNEXPECTED_EXCEPTION
- Kod zatrzymania: 0x618
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zwalnianie bloku pamięci z nieprawidłowym adresem początkowym.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli program wywołuje funkcję VirtualFree (MEM_RELEASE) z parametrem lpAddress, który nie jest adresem podstawowym zwracanym przez funkcję VirtualAlloc lub VirtualAllocEx, gdy region stron był zarezerwowany; Aby debugować ten przystanek:
- kb — aby wyświetlić bieżący ślad stosu, który wywołuje funkcję VirtualFree. Prawdopodobnym winowajcą jest biblioteka DLL, która wywołuje VirtualFree.
- Parametr 1 - Adres zwalnianego bloku pamięci.
- Parametr 2 - Oczekiwano poprawnego adresu bloku pamięci.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_FREEMEM_START_ADDRESS
- Kod zatrzymania: 0x619
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Usuń mapowanie bloku pamięci z nieprawidłowym adresem początkowym.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli program wywołuje polecenie UnmapViewOfFile z parametrem lpBaseAddress, który nie jest identyczny z wartością zwróconą przez poprzednie wywołanie funkcji MapViewOfFile lub MapViewOfFileEx. Aby debugować ten przystanek:
- kb — aby wyświetlić bieżący ślad stosu, który wywołuje metodę UnmapViewOfFile. Prawdopodobnym winowajcą jest biblioteka DLL, która wywołuje unmapViewOfFile.
- Parametr 1 - Adres niezamapowanego bloku pamięci.
- Parametr 2 - Oczekiwano poprawnego adresu bloku pamięci.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: INVALID_UNMAPVIEW_START_ADDRESS
- Kod zatrzymania: 0x61A
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
nieoczekiwany wyjątek zgłoszony w funkcji wywołania zwrotnego puli wątków.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli funkcja wywołania zwrotnego w wątku puli wątków zgłasza wyjątek. Aby debugować ten przystanek:
- < parametr1> może być znaczący dla typu wyjątku. Na przykład kod wyjątku C0000005 oznacza naruszenie dostępu.
- .exr <parameter2> — aby wyświetlić informacje o wyjątku.
- .cxr <parametr3> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku.
- Parametr 1 - Kod wyjątku
- Parametr 2 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić
- Parametr 3 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić
- Parametr 4 - Nieużytne
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: THREADPOOL_UNEXPECTED_EXCEPTION
- Kod zatrzymania: 0x61B
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
kod w pamięci nie wykonywalnej
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli aplikacja próbuje uruchomić kod z adresu, który nie jest wykonywalny lub bezpłatny. Aby debugować ten przystanek:
- u <parametr2> — aby usunąć winowajcę kodu
- .exr <parameter3> — aby wyświetlić informacje o wyjątku
- .cxr <parametr4> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku i ślad stosu w czasie zgłoszenia wyjątku.
- Parametr 1 - Adres, do których uzyskuje się dostęp
- Parametr 2 - Kod wykonujący nieprawidłowy dostęp
- Parametr 3 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 4 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: THREADPOOL_UNEXPECTED_EXCEPTION_CODE
- Kod zatrzymania: 0x61C
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Tworzenie sterta wykonywalnego.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli aplikacja tworzy stertę wykonywalną. Może to być zagrożenie bezpieczeństwa.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużyj.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: EXECUTABLE_HEAP
- Kod zatrzymania: 0x61D
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Przydzielanie pamięci wykonywalnej.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli aplikacja przydziela pamięć wykonywalną. Może to być zagrożenie bezpieczeństwa.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Ochrona strony określona przez obiekt wywołujący.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: Pamięć
- Identyfikator zatrzymania: EXECUTABLE_MEMORY
- Kod zatrzymania: 0x61E
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Próba wykonania kodu w pamięci nie wykonywalnej (pierwsza szansa).
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli aplikacja próbuje uruchomić kod z adresu, który nie jest wykonywalny lub bezpłatny. Aby debugować ten przystanek:
- u <parametr2> — aby usunąć winowajcę kodu
- .exr <parameter3> — aby wyświetlić informacje o wyjątku
- .cxr <parametr4> , a następnie kb — aby wyświetlić informacje kontekstowe wyjątku i ślad stosu w czasie zgłoszenia wyjątku.
- Parametr 1 - Adres, do których uzyskuje się dostęp.
- Parametr 2 - Kod wykonujący nieprawidłowy dostęp.
- Parametr 3 - Rekord wyjątku. Użyj polecenia .exr, aby go wyświetlić.
- Parametr 4 - Rekord kontekstu. Użyj narzędzia .cxr, aby go wyświetlić.
- Warstwa testowa: Wyjątki
- Identyfikator zatrzymania: FIRST_CHANCE_ACCESS_VIOLATION_CODE
- Kod zatrzymania: 0x650
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Priorytet tego wątku wątku został zmieniony.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli priorytet wątku zostanie zmieniony po powrocie do puli wątków.
Informacje wyświetlane przez weryfikatora aplikacji- Format: - threadpool thread (%x) po wykonaniu wywołania zwrotnego (%p) ma zmieniony priorytet wątku (%i -> %i)
- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Bieżący priorytet.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: INCONSISTENT_PRIORITY
- Kod zatrzymania: 0x700
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Koligacja tego wątku wątku została zmieniona.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli koligacja wątku zostanie zmieniona po powrocie do puli wątków.
Informacje wyświetlane przez weryfikatora aplikacji- Format: - threadpool thread (%x) po wykonaniu wywołania zwrotnego (%p) ma zmienioną maskę koligacji wątku (%p -> %p)
- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Bieżąca koligacja.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: INCONSISTENT_AFFINITY_MASK
- Kod zatrzymania: 0x701
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieprzetworzone msg w puli msg bieżącego wątku.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli jakikolwiek komunikat pozostawiony jako nieprzetworzony po powrocie tego wątku wątku do puli. Jest to niebezpieczne, ponieważ zostanie przetworzone w zupełnie innym kontekście. Użyj polecenia !avrf -tp <Param4> , aby wyświetlić komunikaty opublikowane w tym wątku.
Informacje wyświetlane przez weryfikatora aplikacji- Format: - threadpool thread (%x) po wykonaniu wywołania zwrotnego (%p) ma zaległy komunikat okna (%x: %x)
- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Threadpool thread id. Użyj !avrf -tp <threadid> , aby wyświetlić komunikaty opublikowane w tym wątku.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: ORPHANED_THREAD_MESSAGE
- Kod zatrzymania: 0x702
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Nieujawniane okno należało do bieżącego wątku.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli jakiekolwiek okno jest aktywne, gdy ten wątek wątku zostanie zwrócony do puli.
Informacje wyświetlane przez weryfikatora aplikacji- Format: - threadpool thread (%x) po wykonaniu wywołania zwrotnego (%p) ma prawidłowy hwnd (%x: %s), który może odbierać komunikaty
- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Threadpool thread id.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: ORPHANED_THREAD_WINDOW
- Kod zatrzymania: 0x703
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
ExitThread() w wątku puli wątków.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli element ExitThread jest wywoływany w wątku puli wątków. Jest zabronione, ponieważ sprawi, że system będzie niestabilny. Spowoduje to wyciek zasobów, zamrożenie lub av.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: ILLEGAL_THREAD_EXIT
- Kod zatrzymania: 0x704
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wątek jest w stanie personifikacji po powrocie do wątku puli wątków.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli funkcja wywołania zwrotnego zmieni token wątku, aby personifikować innego użytkownika i nie pamiętać, aby go zresetować przed zwróceniem go z powrotem do puli wątków.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: THREAD_IN_IMPERSONATION
- Kod zatrzymania: 0x705
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wywoływana jest funkcja, która wymaga trwałego wątku.
Prawdopodobna przyczynaNiektóre interfejsy API systemu Microsoft Windows muszą być wywoływane wewnątrz dedykowanego lub trwałego wątku. W puli wątków należy zwykle unikać używania magazynu lokalnego wątku i kolejkowania wywołań asynchronicznych, które wymagają trwałego wątku, takiego jak funkcja RegNotifyChangeKeyValue. Jednak takie funkcje można kolejkować do trwałego wątku roboczego przy użyciu elementu QueueUserWorkItem z opcją WT_EXECUTEINPERSISTENTTHREAD. W debugerze zostanie ujawniony obiekt wywołujący.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: PERSISTED_THREAD_NEEDED
- Kod zatrzymania: 0x706
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wątek jest w stanie brudnej transakcji.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli funkcja wywołania zwrotu nie pamięta o zamknięciu lub zresetowaniu bieżącego dojścia transakcji.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Dojście transakcji.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: DIRTY_TRANSACTION_CONTEXT
- Kod zatrzymania: 0x707
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Ten stan puli wątków ma niezrównoważone wywołania CoInit i CoUnInit.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli funkcja wywołania zwrotnego wywołuje moduł CoInit i CoUnInit niezrównoważone.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Zrównoważone liczby wywołań.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: DIRTY_COM_STATE
- Kod zatrzymania: 0x708
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Parametry obiektu czasomierza są niespójne. Okres powinien wynosić 0, gdy WT_EXECUTEONLYONCE jest określony podczas tworzenia czasomierza
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli okres sygnalizowania czasomierza nie jest zerowy, gdy czasomierz jest ustawiony na sygnał tylko raz z flagą WT_EXECUTEONLYONCE
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Określony okres.
- Parametr 2 - Flagi określone.
- Parametr 3 - Nieużytne.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: INCONSISTENT_TIMER_PARAMS
- Kod zatrzymania: 0x709
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Blokada modułu ładującego została zatrzymana przez wątek puli wątków w ramach wywołania zwrotnego.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli blokada modułu ładującego jest przechowywana w wywołaniu zwrotnym i nie jest zwalniana po powrocie wątku do puli wątków.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: LOADER_LOCK_HELD
- Kod zatrzymania: 0x70A
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Preferowany język jest ustawiany przez wątek threadpool w wywołaniu zwrotnym.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli preferowany język jest ustawiony w wywołaniu zwrotnym i nie jest czyszczone po powrocie wątku do puli wątków.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: PREFERRED_LANGUAGES_SET
- Kod zatrzymania: 0x70B
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Priorytet tła jest ustawiany przez wątek puli wątków w ramach wywołania zwrotnego.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli priorytet tła jest ustawiony w wywołaniu zwrotnym i nie jest wyłączony, gdy wątek zostanie zwrócony do puli wątków.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Callback, funkcja.
- Parametr 2 - Context.
- Parametr 3 - Threadpool Object allocation stack trace , użyj dps, aby go zrzucić.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: BACKGROUND_PRIORITY_SET
- Kod zatrzymania: 0x70C
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
TerminateThread() w wątku puli wątków.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli element TerminateThread jest wywoływany w wątku puli wątków. Jest zabronione, ponieważ sprawi, że system będzie niestabilny. Spowoduje to wyciek zasobów, zamrożenie lub av.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Nieużytne.
- Parametr 2 - Nieużytne.
- Parametr 3 - Nieużytne.
- Parametr 4 - Nieużytne.
- Warstwa testowa: Pula wątków
- Identyfikator zatrzymania: ILLEGAL_THREAD_TERMINATION
- Kod zatrzymania: 0x70D
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Stos został unwinded, gdy oczekujące operacje we/wy asynchroniczne.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli aplikacja wystawiła operację we/wy, która używa zmiennej stosu i nie czekała na zakończenie operacji we/wy, co prowadzi do uszkodzenia stosu. Aby debugować ten przystanek:
- dps <parametr4> wyświetla ślad stosu podczas wystawiania operacji we/wy. Parametr1 wskazuje adres oparty na stosie i parametr3 wątek, który wystawił we/wy.
- Parametr 1 - Adres zmiennej stosu używanej w we/wy.
- Parametr 2 - Bieżący wskaźnik stosu.
- Parametr 3 - Oryginalny wątek, który wydał we/wy.
- Parametr 4 -Stack Trace when the I/O was issued (Śledzenie stosu po wystawieniu operacji we/wy).
- Warstwa testowa: IO
- Identyfikator zatrzymania: ASYNCIO_STACK_UNWIND
- Kod zatrzymania: 0x800
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Stos został uszkodzony, gdy oczekująca operacja we/wy asynchronicznej.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli aplikacja wystawiła operację we/wy, która używa zmiennej stosu i nie czekała na zakończenie operacji we/wy, co prowadzi do uszkodzenia stosu. Aby debugować ten przystanek:
- dps <parametr4> wyświetla ślad stosu podczas wystawiania operacji we/wy. Parametr1 wskazuje adres oparty na stosie i parametr3 wątek, który wystawił we/wy.
- Parametr 1 - Adres zmiennej stosu używanej w we/wy.
- Parametr 2 - Bieżący wskaźnik stosu.
- Parametr 3 - Oryginalny wątek, który wydał we/wy.
- Parametr 4 -Stack Trace when the I/O was issued (Śledzenie stosu po wystawieniu operacji we/wy).
- Warstwa testowa: IO
- Identyfikator zatrzymania: ASYNCIO_CORRUPTED_STACK
- Kod zatrzymania: 0x801
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Użycie zwolnionego adresu w oczekującej operacji we/wy.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli aplikacja wystawiła operację we/wy i zwolniła pamięć używaną w we/wy przed ukończeniem operacji we/wy, co doprowadziło do uszkodzenia pamięci itp. Aby debugować ten przystanek:
- dps <parametr4> — aby wyświetlić ślad stosu podczas wystawiania operacji we/wy. Parametr1 wskazuje adres używany w we/wy. Parametr2 wskazuje adres zwalniany i parametr3 wątku, który wystawił we/wy.
- Parametr 1 - Adres używany w we/wy.
- Parametr 2 - Adres jest zwalniany.
- Parametr 3 - Oryginalny wątek, który wydał we/wy.
- Parametr 4 -Stack Trace when the I/O was issued (Śledzenie stosu po wystawieniu operacji we/wy).
- Warstwa testowa: IO
- Identyfikator zatrzymania: FREED_ADDRESS_IN_PENDINGIO
- Kod zatrzymania: 0x802
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Blok stanu we/wy (OVERLAPPED) jest ponownie używany, podczas gdy skojarzone żądanie we/wy nadal oczekuje.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli aplikacja ponownie używa bloku stanu we/wy (NAKŁADANE) podczas żądania we/wy przy użyciu tego bloku stanu we/wy (NAKŁADANE) nadal oczekuje. Aby debugować ten przystanek:
- dps <parametr3> , aby wyświetlić ślad stosu po wystawieniu oryginalnego we/wy. Parametr1 wskazuje adres używany w we/wy i parametr2 wątku, który wystawił we/wy.
- Parametr 1 - Adres bloku stanu we/wy (NAKŁADAJĄCE SIĘ).
- Parametr 2 - Oryginalny wątek, który wydał we/wy.
- Parametr 3 -Stack Trace when the I/O was issued (Śledzenie stosu po wystawieniu operacji we/wy).
- Parametr 4 - Nieużytne.
- Warstwa testowa: IO
- Identyfikator zatrzymania: REUSED_IOSTATUS_BLOCK
- Kod zatrzymania: 0x803
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Używanie nieobsługiwanej flagi FILE_ATTRIBUTE_NOT_CONTENT_INDEXED w pliku CreateFile
Prawdopodobna przyczynaStara wersja msdn błędnie udokumentowane CreateFile jako obsługa FILE_ATTRIBUTE_NOT_CONTENT_INDEXED. Jeśli ta flaga ma być ustawiona przy użyciu innych funkcji interfejsu API, takich jak SetFileAttributes.
- ln <parametr1> — aby znaleźć obiekt wywołujący metody CreateFile.
- Format: - CreateFile podczas zapisywania %hs%ws z flagami %08x %08x %08x
- Parametr 1 - Adres zwrotny.
- Parametr 2 - Nieużyj.
- Parametr 3 - Nieużyj.
- Parametr 4 - Nieużyj.
- Warstwa testowa: IO
- Identyfikator zatrzymania: USING_BAD_CREATEFILE_FLAG
- Kod zatrzymania: 0x804
- Dotkliwość: Ostrzeżenie
- Jednorazowy błąd:
- Raport o błędach: Żaden
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wyciekła alokacja sterty.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli właściciel biblioteki DLL alokacji został dynamicznie zwolniony podczas posiadania zasobów.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres wycieku alokacji. Uruchom polecenie !sterta -p -a <adres> , aby uzyskać dodatkowe informacje o alokacji.
- Parametr 2 - Adres do śledzenia stosu alokacji. Uruchom adres> dps<, aby wyświetlić stos alokacji.
- Parametr 3 - Adres nazwy biblioteki dll właściciela. Uruchom polecenie du <address> , aby odczytać nazwę biblioteki dll.
- Parametr 4 - Baza biblioteki dll właściciela. Uruchom polecenie .reload <dll_name> = <adres> , aby ponownie załadować bibliotekę dll właściciela. Użyj "lm", aby uzyskać więcej informacji na temat załadowanych i zwolnionych modułów.
- Warstwa testowa: Przeciek
- Identyfikator zatrzymania: PRZYDZIAŁ
- Kod zatrzymania: 0x900
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wyciekł uchwyt.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli właściciel biblioteki DLL dojścia został dynamicznie zwolniony podczas posiadania zasobów. Aby debugować ten przystanek: Uruchom polecenie !htrace parameter1, aby uzyskać dodatkowe informacje o dojściu.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Wartość wycieku uchwytu. Uruchom polecenie !uchwyt htrace, <aby uzyskać dodatkowe informacje o dojściu> , jeśli śledzenie obsługi jest włączone.
- Parametr 2 - Adres do śledzenia stosu alokacji. Uruchom adres> dps<, aby wyświetlić stos alokacji.
- Parametr 3 - Adres nazwy biblioteki dll właściciela. Uruchom polecenie du <address> , aby odczytać nazwę biblioteki dll.
- Parametr 4 - Baza biblioteki dll właściciela. Uruchom polecenie .reload <dll_name> = <adres> , aby ponownie załadować bibliotekę dll właściciela. Użyj "lm", aby uzyskać więcej informacji na temat załadowanych i zwolnionych modułów.
- Warstwa testowa: Przeciek
- Identyfikator zatrzymania: UCHWYT
- Kod zatrzymania: 0x901
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wyciekł klucz HKEY.
Prawdopodobna przyczynaTen zatrzymanie jest generowane, jeśli biblioteka DLL właściciela klucza rejestru została dynamicznie zwolniona podczas posiadania zasobów.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Wartość wycieku klucza HKEY.
- Parametr 2 - Adres do śledzenia stosu alokacji. Uruchom adres> dps<, aby wyświetlić stos alokacji.
- Parametr 3 - Adres nazwy biblioteki dll właściciela. Uruchom polecenie du <address> , aby odczytać nazwę biblioteki dll.
- Parametr 4 - Baza biblioteki dll właściciela. Uruchom polecenie .reload <dll_name> = <adres> , aby ponownie załadować bibliotekę dll właściciela. Użyj "lm", aby uzyskać więcej informacji na temat załadowanych i zwolnionych modułów.
- Warstwa testowa: Przeciek
- Identyfikator zatrzymania: REJESTR
- Kod zatrzymania: 0x902
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wyciekła wirtualna rezerwacja.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli biblioteka DLL właściciela rezerwacji wirtualnej została dynamicznie zwolniona podczas posiadania zasobów.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Wyciekły adres rezerwacji.
- Parametr 2 - Adres do śledzenia stosu alokacji. Uruchom adres> dps<, aby wyświetlić stos alokacji.
- Parametr 3 - Adres nazwy biblioteki dll właściciela. Uruchom polecenie du <address> , aby odczytać nazwę biblioteki dll.
- Parametr 4 - Baza biblioteki dll właściciela. Uruchom polecenie .reload <dll_name> = <adres> , aby ponownie załadować bibliotekę dll właściciela. Użyj "lm", aby uzyskać więcej informacji na temat załadowanych i zwolnionych modułów.
- Warstwa testowa: Przeciek
- Identyfikator zatrzymania: VIRTUAL_RESERVATION
- Kod zatrzymania: 0x903
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wyciekł BSTR.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli właściciel biblioteki dll sysString został dynamicznie zwolniony podczas posiadania zasobów.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres wycieku BSTR. Uruchom polecenie !sterta -p -a <adres> , aby uzyskać dodatkowe informacje o alokacji.
- Parametr 2 - Adres do śledzenia stosu alokacji. Uruchom adres> dps<, aby wyświetlić stos alokacji.
- Parametr 3 - Adres nazwy biblioteki dll właściciela. Uruchom polecenie du <address> , aby odczytać nazwę biblioteki dll.
- Parametr 4 - Baza biblioteki dll właściciela. Uruchom polecenie .reload <dll_name> = <adres> , aby ponownie załadować bibliotekę dll właściciela. Użyj "lm", aby uzyskać więcej informacji na temat załadowanych i zwolnionych modułów.
- Warstwa testowa: Przeciek
- Identyfikator zatrzymania: SYSSTRING
- Kod zatrzymania: 0x904
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Powiadomienie o zasilaniu nie zostało wyrejestrowane.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli biblioteka DLL zarejestrowana na potrzeby powiadomień o zasilaniu została dynamicznie zwolniona bez wyrejestrowywania.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres rejestracji powiadomień o zasilaniu.
- Parametr 2 - Adres do śledzenia stosu rejestracji. Uruchom adres> dps<, aby wyświetlić stos alokacji.
- Parametr 3 - Adres nazwy biblioteki dll właściciela. Uruchom polecenie du <address> , aby odczytać nazwę biblioteki dll.
- Parametr 4 - Baza biblioteki dll właściciela. Uruchom polecenie .reload <dll_name> = <adres> , aby ponownie załadować bibliotekę dll właściciela. Użyj "lm", aby uzyskać więcej informacji na temat załadowanych i zwolnionych modułów.
- Warstwa testowa: Przeciek
- Identyfikator zatrzymania: POWER_NOTIFICATION
- Kod zatrzymania: 0x905
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Wyciekła alokacja MODELU COM.
Prawdopodobna przyczynaTen przystanek jest generowany, jeśli właściciel biblioteki DLL alokacji COM został dynamicznie zwolniony podczas posiadania zasobów.
Informacje wyświetlane przez weryfikatora aplikacji- Parametr 1 - Adres wycieku alokacji COM. Uruchom polecenie !sterta -p -a <adres> , aby uzyskać dodatkowe informacje o alokacji.
- Parametr 2 - Adres do śledzenia stosu alokacji. Uruchom adres> dps<, aby wyświetlić stos alokacji.
- Parametr 3 - Adres nazwy biblioteki dll właściciela. Uruchom polecenie du <address> , aby odczytać nazwę biblioteki dll.
- Parametr 4 - Baza biblioteki dll właściciela. Uruchom polecenie .reload <dll_name> = <adres> , aby ponownie załadować bibliotekę dll właściciela. Użyj "lm", aby uzyskać więcej informacji na temat załadowanych i zwolnionych modułów.
- Warstwa testowa: Przeciek
- Identyfikator zatrzymania: COM_ALLOCATION
- Kod zatrzymania: 0x906
- Dotkliwość: Błąd
- Jednorazowy błąd:
- Raport o błędach: Przerwa
- Zaloguj się do pliku: tak
- Utwórz backtrace: tak
Zobacz też
Weryfikator aplikacji — kody i definicje zatrzymania
Weryfikator aplikacji — omówienie
Weryfikator aplikacji — funkcje
Weryfikator aplikacji — testowanie aplikacji
Weryfikator aplikacji — testy w weryfikatorze aplikacji
Weryfikator aplikacji — debugowanie weryfikatora aplikacji zatrzymuje się