Discussion:
[ast-developers] CHLD trap corrupting shell internals?
Cedric Blancher
2013-06-12 17:03:53 UTC
Permalink
David, it is possible that ksh93 has similar issues? I noticed that
even in ast-ksh.20130611 ksh93's job handling does not make use of the
siginfo data provided with the CHLD signal and polls the child process
list instead.

Ced

---------- Forwarded message ----------
From: Chet Ramey <chet.ramey at case.edu>
Date: 24 May 2013 16:00
Subject: Re: deadlock in waitchld()
To: Roman Rakus <rrakus at redhat.com>
Cc: bug-bash at gnu.org, chet.ramey at case.edu
The race is in do-while loop in wait_for(). At the start of wait_for() we
are blocking SIGCHLD, however echo process ends during the loop and we
don't register it (don't handle SIGCHLD, which is sent).
Looking at the code, there is MUST_UNBLOCK_CHLD. May it make any harm to
enable it by default?
I spent a lot of time looking at this yesterday, and I have it pretty much
fixed. The problem is in the trap handling code, not wait_for(). The trap
problem ends up corrupting the jobs data structure, which is why wait_for
misbehaves.

Chet

--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU chet at case.edu http://cnswww.cns.cwru.edu/~chet/
--
Cedric Blancher <cedric.blancher at googlemail.com>
Institute Pasteur
Loading...