Jak mogę zabić niemożliwy do zabicia proces?


13

Zamknąłem aplikację, ale proces pozostał na liście. Próbuję zatrzymać się w Menedżerze zadań, ale nic się nie dzieje. Brak komunikatów o błędach, proces pozostaje na liście. Próbuję to debugować, ale debuger mówi:

Nie można dołączyć do procesu awarii. Żądana operacja nie jest obsługiwana.

Zdarza się to czasami w VS2008 i niektórych innych programach.

Jak to zakończyć?


To jeden z powodów, dla których przestawiłem się na Linuksa. Chociaż ten problem wystąpił pod Win XP, wydaje się, że od tego czasu się nie zmienił.
petersohn

4
Według samba.2283325.n4.nabble.com/... w Linuksie jest dokładnie taka sama sytuacja - procesów oczekujących w jądrze nie można zabić. To jeden z powodów, dla których przestawiłem się na Windows.
ta.speot.is

Artykuł Marka Russinovicha „Procesy , których nie można zabić” mówi, że możesz użyć narzędzia do debugowania jądra lokalnego, aby dowiedzieć się, dlaczego proces jest niemożliwy do zabicia. W tym artykule znajdziesz instrukcje, co robić. Będziesz potrzebował darmowych narzędzi do debugowania dla systemu Windows .
niezapomniany

Odpowiedzi:


12

Niestety jedynym realnym rozwiązaniem jest ponowne uruchomienie.

Też miałem ten problem i nie mogłem znaleźć absolutnie żadnego sposobu, aby skutecznie zabić ten proces, który uległ awarii. Próbowałem prawie każdej aplikacji pskill / podobnej, jaką mogłem znaleźć, i wszystkie zawiodły.

Jak rozumiem, najczęstszą przyczyną tego problemu jest sytuacja, w której proces naruszenia ładuje sterownik systemowy, a następnie wysyła mu żądanie, którego nie może ukończyć. Najwyraźniej jądro nie może poprawnie zwolnić pamięci z procesu po zamknięciu, ponieważ uszkodzony sterownik jest w stanie oczekiwania IO, który wymaga dostępu do przestrzeni adresowej procesu.

(Przeważnie skopiowane z) http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx


2
Tak, to z pewnością najczęstsza przyczyna tego rodzaju rzeczy. Większość niemożliwych do zabicia procesów, które widziałem, dotyczyły napędu CD (np. EAC.EXE) Lub tunera telewizyjnego / karty graficznej (np ATIMMC.EXE.). W obu przypadkach sprowadza się to do winy kierowcy, a każdy, kto się nauczył i wykonał pracę kierowcy, będzie wiedział, jak problematyczne mogą być rzeczy na tym poziomie i jakie pozornie „dziwne” efekty mogą mieć w obszarze użytkownika (przynajmniej BSOD są ostateczne i jasne).
Synetech,

1
@ Synetech inc. - Wszystkie problemy, które miałem, dotyczyły dysku lub oprogramowania, które tak naprawdę nie wymagało wcale sterownika (NIE mam pojęcia, dlaczego zdecydowali się na uruchomienie w jądrze). Nie sądzę, aby można było podać ogólne stwierdzenia dotyczące tego, jakie oprogramowanie najczęściej powoduje awarie niemożliwe do wywołania.
Fałszywe imię

2

Czasami proces może zostać zablokowany na zasobie, wątku lub czymś innym, a zamknięcie lub zwolnienie go uwalnia proces i pozwala mu się zakończyć. Jest to trochę podobne do tego, jak po usunięciu (do kosza) używanego pliku w Eksploratorze, tak naprawdę nie znika i wydaje się zablokowany (bez natychmiastowego zwracania błędu w użyciu / zablokowania), ale jeśli zamknij program, który zablokował go w ciągu pięciu sekund, plik nagle znika.

Widziałem to czasami, szczególnie w programach, które mają wyskakujące okno dialogowe lub coś, co w jakiś sposób się ukrywa; znalezienie sposobu na zamknięcie okna dialogowego pozwala na zakończenie wątku, a tym samym na zakończenie procesu.

Podejrzewam, że wraz ze wzrostem, choć wciąż stosunkowo nowej praktyki programowania wielowątkowego, takie rzeczy staną się powszechne, przynajmniej na jakiś czas.


2

Process Hacker ma komendę Różne → Terminator, która wypróbuje kilka różnych metod, aby zabić twój proces:

nie udaje się przy większości prób

pełne opisy

W moich testach to wszystko zamknęło Process Hackera i przekształciło go również w proces niemożliwy do zabicia, ale może w niektórych przypadkach zadziała.


1
Terminator został usunięty z Process Hacker i przeniesiony do wtyczki. Był na ten temat wątek na forum . Opiekun stwierdził: „Terminator jest bezużyteczny ... ponieważ nie jest bardziej skuteczny niż zwykła funkcja zakończenia”. Niektóre osoby odpowiedziały i się nie zgodziły.
niezapomniany

Później dmex przeniósł Terminator do wtyczki. Kod źródłowy jest tutaj . W chwili pisania tego tekstu nie ma jeszcze pliku binarnego . Kiedy plik binarny zostanie wydany, zostanie opublikowany na stronie wydań dmex .
niezapomniany

I złożyła wniosek fabularny właśnie teraz, prosząc skompilowaną wersję Terminator. Na razie myślę, że możesz użyć dowolnej wersji Process Hackera starszej niż 2.39. Na przykład możesz użyć wersji 2.38, która jest dostępna tutaj .
niezapomniany

Istnieje również opcja dołączenia debugera i dlatego nie należy go zabijać. Różne to wykrywa i dodaje debuger odłączania
Ghita

1

uruchom CMD jako administrator i użyj taskkill, aby go wyłączyć. Przykład:

taskkill / F yourprogram.exe

LUB

taskkill / F / im yourprogram.exe

Jeśli utkniesz w składni zadania CMD, wpisz taskkill /?


Witamy w Super User! Chociaż może to pomóc w rozwiązaniu problemu, nie wyjaśnia, dlaczego i / lub jak rozwiązuje problem. Zapewnienie tego dodatkowego kontekstu znacznie poprawiłoby jego długoterminową wartość edukacyjną. Edytuj swoją odpowiedź, aby dodać wyjaśnienie, w tym informacje o parametrach i jakie ograniczenia i założenia obowiązują. Dzięki.
fixer1234

0

Możliwe, że programy, z których korzystasz, zostały opracowane przed Windows Vista / 7 i są niezgodne z wprowadzonymi zmianami.

Najlepiej jest zlokalizować plik wykonywalny dla programów, które mają ten problem, kliknij prawym przyciskiem myszy, przejdź do właściwości, a następnie wybierz kompatybilność, a następnie wybierz Windows XP jako tryb zgodności.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.