Make, ccache and unreaped defunct shells
I've installed sarge/amd64 on a machine with a couple of Opteron
275s. We're using make (Debian version), ccache 2.4 and distcc 2.18.3
to build quite a large amount of code using -j12.
At some point during the build make will stop spawning new
jobs. Looking at the process listing there are a large number
(equivalent to the number passed to -j) of completed shell processes
sat unreaped with make sat asleep waiting for them.
mac 32196 1.0 0.2 24876 19648 pts/5 S+ 11:51 0:02 make
mac 13234 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14254 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14296 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14308 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14470 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14491 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14518 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14530 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14545 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14571 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14589 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
mac 14610 0.0 0.0 0 0 pts/5 Z+ 11:52 0:00 [sh] <defunct>
According to /proc/32196/wchan the make process is in pipe_wait.
It seems like there is a fundamental problem with waiting for child
processes somewhere. Has anyone seen anything similar or recommend the
best course of action?
---8<---
ii libc6 2.3.2.ds1-22
ii kernel-image-2.6.8-11-amd64 2.6.8-16sarge1
ii make 3.80-9
--->8---
--
Mike Crowe
Reply to: