I am not a Windows programmer and I only know a very little about Windows programming. But I do follow the technical stuff and I was a system's programmer in Unix for many decades.
From what I gather happened was that somewhere between XP and Vista, the MS internals changed so that all GUI operations were done in user-mode, not kernel-mode. Originally this was done in the kernel for speed, but it meant that a bad video call could crash the system.
Now a bad video call just crashes the app.
As a result, just about every tool now has two or more parts - a kernel service or driver that does the work, and a GUI client that sends it messages and reads its output for display purposes.
This is why some tools seem to be sluggish now and then - they are just not running fast enough or at a high enough priority to keep up with the driver.
The threads that I see running when Sonar hangs always seem to be in the audio driver - wmaud.sys or whatever it's called. Usually in ASIO-land or somewhere like that.
So I think that that part of the kernel is immune from some types of task pre-emption - or it never looks for the terminate message. Maybe these parts were never designed to be stopped by an outside process or are running in some super-user mode.
I don't know - just guess work. But it helps me understand things a little.