Come posso uccidere un processo invendibile?


13

Ho chiuso un'applicazione, ma il processo è rimasto nell'elenco. Provo a fermarmi dal task manager, ma non succede nulla. Nessun messaggio di errore, il processo rimane solo nell'elenco. Provo a eseguire il debug, ma il debugger dice:

Impossibile collegarsi al processo di arresto anomalo. L'operazione richiesta non è supportata.

Questo succede a volte con VS2008 e altri programmi.

Come terminarlo?


Questo è uno dei motivi per cui sono passato a Linux. Anche se ho riscontrato questo problema con Win XP, sembra che da allora non cambi.
petersohn,

4
Secondo samba.2283325.n4.nabble.com/… c'è esattamente la stessa situazione in Linux - i processi in attesa sul kernel sono inattuabili. Questo è uno dei motivi per cui sono passato a Windows.
ta.speot.is

L'articolo di Mark Russinovich "Unkillable Processes" afferma che è possibile utilizzare uno strumento di debug del kernel locale per scoprire perché un processo non è eseguibile. L'articolo ti dà istruzioni su cosa fare. Avrai bisogno degli strumenti di debug gratuiti per Windows .
indimenticabileSupportaMonica

Risposte:


12

Sfortunatamente, l'unica vera risorsa è il riavvio.

Ho avuto anche questo problema e non ho trovato assolutamente il modo di uccidere con successo il processo bloccato. Ho provato praticamente tutte le app pskill / simili che ho trovato e tutte hanno fallito.

A quanto ho capito, la causa più comune di questo problema è quando il processo offensivo carica un driver di sistema e quindi invia una richiesta che non riesce a completare. Apparentemente il kernel non può deallocare correttamente la memoria dal processo quando si chiude perché il driver in crash si trova in uno stato di attesa IO che richiede l'accesso allo spazio degli indirizzi del processo.

(Principalmente paralizzato da) http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx


2
Sì, questa è certamente la causa più comune di questo genere di cose. La maggior parte dei processi non verificabili che ho visto erano correlati all'unità CD (ad es. EAC.EXE) O al sintonizzatore TV / scheda video (ad es ATIMMC.EXE.). In entrambi i casi, si tratta di un errore del conducente e chiunque abbia appreso e fatto il lavoro del conducente saprà come le cose problematiche possono arrivare a quel livello e quali tipi di effetti apparentemente "strani" possono avere nella terra degli utenti (almeno i BSOD sono definitivo e chiaro).
Synetech,

1
@ Synetech inc. - Tutti i problemi che ho avuto erano relativi al disco o in un software che non aveva davvero bisogno di un driver (non ho idea del motivo per cui hanno deciso di eseguire nel kernel). Non credo che tu possa fare alcuna affermazione generale su quale tipo di software abbia più spesso arresti irreversibili.
Nome falso

3

Process Hacker ha un comando Varie → Terminator che proverà un sacco di metodi diversi per terminare il processo:

fallendo nella maggior parte dei tentativi

descrizioni complete

Nei miei test, tutto ciò che ha fatto è stato bloccare Process Hacker e trasformarlo anche in un processo invendibile, ma forse funzionerà in alcuni casi.


2
Terminator è stato rimosso da Process Hacker e spostato in un plug-in. C'è stato un thread del forum al riguardo. Il manutentore ha affermato: "Terminator è inutile ... perché non è più efficace della normale funzionalità di terminazione". Alcune persone hanno risposto e non erano d'accordo.
indimenticabileSupportaMonica

Successivamente, dmex ha spostato Terminator in un plugin. Il codice sorgente è qui . Al momento della stesura di questo documento, non esiste ancora un file binario . Quando il file binario viene rilasciato, verrà pubblicato nella pagina delle versioni di dmex .
indimenticabileSupportaMonica

1
Ho presentato una richiesta di funzione proprio ora, richiedendo una versione compilata di Terminator. Per ora, immagino che potresti usare qualsiasi versione di Process Hacker precedente alla 2.39. Ad esempio, è possibile utilizzare la versione 2.38, disponibile qui .
indimenticabileSupportaMonica

C'è anche l'opzione a cui era collegato un debugger e la ragione per non uccidere è quella. Varie lo rileva e aggiunge il debugger di distacco
Ghita,

2

A volte il processo può essere bloccato su una risorsa o thread o qualcosa del genere, e uscire o liberarlo, libera il processo e lo fa terminare. È in qualche modo simile a come quando si elimina (nel cestino) un file in Explorer che è in uso, in realtà non scompare e sembra bloccato (senza restituire immediatamente un errore in uso / bloccato), ma se si chiudere il programma che lo ha bloccato entro cinque secondi, il file scompare improvvisamente.

L'ho visto accadere in alcune occasioni, specialmente con programmi che hanno una finestra pop-up o qualcosa che in qualche modo viene nascosto; trovare un modo per chiudere la finestra di dialogo consente di terminare il thread, permettendo così al processo di terminare.

Sospetto che con l'aumento della pratica, ancora relativamente nuova, della programmazione multi-thread, cose come questa diventeranno più comuni, almeno per un po '.


0

È probabile che i programmi in uso siano stati sviluppati prima di Windows Vista / 7 e non siano compatibili con le modifiche apportate.

La soluzione migliore è individuare l'eseguibile per i programmi che presentano questo problema, fare clic con il tasto destro, andare su Proprietà, quindi selezionare Compatibilità, infine selezionare Windows XP come modalità di compatibilità.


0

avviare CMD come amministratore e utilizzare taskkill per disattivarlo. Esempio:

taskkill / F yourprogram.exe

O

taskkill / F / im yourprogram.exe

Se sei bloccato sulla sintassi del taskkill CMD, digita taskkill /?


1
Benvenuto in Super User! Sebbene ciò possa aiutare a risolvere il problema, non spiega perché e / o come risolve il problema. Fornire questo contesto aggiuntivo migliorerebbe significativamente il suo valore educativo a lungo termine. Modifica la tua risposta per aggiungere una spiegazione, incluso cosa fanno i parametri e quali limitazioni e ipotesi si applicano. Grazie.
Fixer 1234

ERRORE: impossibile terminare il processo "AutoHotkeyU64_UIA.exe" con PID 16872. Motivo: non esiste un'istanza in esecuzione dell'attività.
Shayan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.