How can I kill an unkillable process?
Unfortunately, the only real recourse is to reboot.
I've had this problem too, and I could find absolutely no way to successfully kill the crashed process. I tried just about every pskill/similar app I could find, and they all fail.
As I understand it, the most common cause of this problem is when the offending process loads a system driver, and then sends it an request that it fails to complete. Apparently the kernel can't properly deallocate the memory from the process when it closes because the crashed driver is in a IO wait state that requires access to the process address space.
(Mostly cribbed from) http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx
Process Hacker has a Miscellaneous → Terminator command that will try a bunch of different methods to kill your process:
In my tests, all this did was lock up Process Hacker and turn it into an unkillable process too, but maybe it will work in some cases.
Sometimes the process could be blocked on a resource or thread or something, and quitting or freeing that up, frees the process and lets it end. It is somewhat similar to how when you delete (to the recycle bin) a file in Explorer that is in use, it doesn’t actually go away and seems stuck (without immediately returning an in-use/locked error), but if you quit the program that has it locked within five seconds, the file suddenly disappears.
I have seen this happen on occasion, especially with programs that have a pop-up dialog or something that somehow gets hidden; finding a way to dismiss the dialog allows the thread to terminate, thus allowing the process to end.
I suspect that with the increase in, yet still relatively new practice of multi-threaded programming, things like this will become more common, at least for a while.