This is: BusyBox v1.13.2, Linux 2.6.26 arch=crisv32
Have spent some time chasing this bug.
I didn't find a simple way to reproduce, yet.
The bug occurs in a somewhat complex chain of forked processes. Seems
'pidof' is to blaim. The shell code line:
if [ "$(pidof <process name>)" ]; then
That <process name> does not exist.
Changing that line to:
pid=$(pidof <process name>) || :
if [ "$pid" ]; then
seems to work around the bug. Still, that's not IMO a future safe
solution.
After some tweaking with a SIGSEVG signal handler, I suspect a race in
pidof between the point where readdir picks up pids under /proc/<pid> and
the point where the /proc/<pid>/stat is read. Some of those processes are
dead. Still, the linked list keeps some invalid data which, when used,
might lead to overwritting the stack. Not sure about that though. Error
handling may be missing/faulty.
Thoughts?
Cheers,
--
Cristian
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox