Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Bug#482346: zsh doesn't always wait for its children (-> zombie)



On May 24,  4:27pm, Stephane Chazelas wrote:
}
} From the straces, we see that zsh is not receiving any SIGCHLD.

If that were the only problem, then opening another shell window and
performing "kill -CHLD ..." on the original shell should clear it all
up.  But as PWS pointed out, the spiking load indicates that either
vlc or zsh is actively doing something, which may have to do with the
way zsh progates signals, or how it sets the signal masks before
forking vlc in the first place.

If it's zsh that's looping, then Vincent's stack trace indicates it
must be here in zwaitjob:

	while (!errflag && jn->stat &&
	       !(jn->stat & STAT_DONE) &&
	       !(interact && (jn->stat & STAT_STOPPED))) {
	    signal_suspend(SIGCHLD);
	    /* job handling stuff elided */
	    child_block();
	}

But if *that* were a tight loop, it would mean that signal_suspend()
isn't working.  It'd be nice to know what process or processes send
the load so high; 100% CPU usage is one thing, but 26+ processes in
runnable state sounds like another thing entirely.



Messages sorted by: Reverse Date, Date, Thread, Author