Matt Graham wrote:
Under Linux, a process in state D (waiting for a syscall to return) *cannot*
be killed, even with SIGKILL. The kernel programmers found a number of
circumstances where terminating a process in state D could lead to Undefined
Behavior, as I understand it. The example I remember was a process doing a
read() syscall on a dodgy disk. Kernel code says, "When the read from the
disk completes, I'll use DMA to shove the result into page 0x131072." Disk
can't deliver immediately because it's flaky. User kill -9s the process.
Kernel MM code releases page 0x131072, some other process grabs hold of that
page. Disk eventually gets its act together, uses DMA to write data to that
page, other process gets its data corrupted. How embarrassing.
perhaps the kernel and/or filesystem drivers should be upgraded to
recognize when the userspace is abending / no longer present and cancel
all pending i/o for that userspace. this is what z/OS does.
yvette hirth
_______________________________________________
drbd-user mailing list
drbd-user@lists.linbit.com
http://lists.linbit.com/mailman/listinfo/drbd-user