Bug#344546: incomplete /proc/<pid>/stat breaks killall5
The fields startcode and endcode in /proc/<pid>/stat are hardcoded to "0", both
for normal processes and "kernel" processes (or whatever you want to call them).
killall5 (sysvinit) uses these values to determine wether a process belongs to
kernel. When both startcode and endcode are 0, then it's a kernel one. So on
GNU/kFreeBSD, it thinks _every_ process is a kernel process.
As a consequence, it won't kill anything. So any mounted filesystems (including
the root fs) will fail to umount, causing occasional filesystem corruption.
I'm not sure how to fix this properly. I've tried hardcoding "endcode" to
(unsigned)-1, the result being that when killall5 is called, you lost your
system. It can be either:
- Because it "killed" a critical kernel process.
- Because it killed the shell I was running and/or init.
For now I'll send a patch to sysvinit maintainers asking to pass "-f" to umount.
This is not the proper fix, but I think it's reasonable to use -f anyway, just
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.8-2-k7
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C)