How to "gracefully" abort kernel execution?


I’m looking for a way to abort a running kernel, while not having to reboot afterwards.

Until now I haven’t found a way to terminate a long running kernel (faulty or not) reliably. The watchdog can’t be relied on as it doesn’t always kick in after the time-out period and even if it does the display is reduced to 640x480 16bit color, making it impossible to continue work. Calling functions like abort() while the kernel is running seems to terminate the application but the graphics card/driver/whatever doesn’t switch back to display mode, the screen will not update anymore making a reboot necessary.

Sadly I’m forced to develop on a windows machine and is not possible for me to install a second dedicated graphics card for computation so any clues would be appreciated.

I think this is fixed as of 2.2. We did a lot of work to make sure that you could kill misbehavior apps cleanly with the new drivers that come with 2.2. I think the WinXP work has made it in, although I haven’t tested it. The Linux work just barely missed the cutoff, I think, but you’ll probably see it in an upcoming driver very soon after (you can sigkill a misbehaving app–it’s glorious).