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

Re: job control problem

On Mar 6,  6:01pm, hanpingtian wrote:
} And I noticed that when trying to run a lot of jobs in background can
} cause zsh quit or frozen.


Zsh is attempting to reclaim job table space during the SIGCLD handler.
I did a quick test and somewhere after a few hundred jobs the child
handler gets called during a free(), and the handler then calls free()
again and ends up deadlocked on a system mutex in the guts of glibc.

This is especially likely with "zsh -x" because the PS4 prompt is
allocated and freed each time it's printed.  If I leave off the -x,
the whole loop to 10000 runs to completion.

However, if I try to reproduce this with bash by frobbing "ulimit -u",
bash exits for me at exactly the same point as zsh.  In fact we just
had a whole discussion on zsh-workers [*] about bash exiting on fork
failure, and how zsh either did not but ought to, or exited success
when it should probably exit with failure.

I modified t.sh to echo the loop counter so I cound run it without -x
and still see how many iterations it made.

schaefer[501] bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.
schaefer[502] bash /tmp/t.sh
/tmp/t.sh: fork: Resource temporarily unavailable
schaefer[503] echo $?

No "retry" mentioned.  What am I missing?

[*] http://www.zsh.org/mla/workers/2012/msg00187.html thread up to
    http://www.zsh.org/mla/workers/2012/msg00201.html or so

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