Subject: bug#17561: Emacs can forget processes

From: Jorgen Schaefer <[email-masked]>
Date: Thu, 29 May 2014 20:23:00 +0200

On Thu, 29 May 2014 19:55:20 +0200
Andreas Schwab <[email-masked]> wrote:

> Jorgen Schaefer <[email-masked]> writes:
> 
> > It works. A bit later:
> >
> > rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM PROF], 8) = 0
> > rt_sigprocmask(SIG_SETMASK, [QUIT ALRM PROF], NULL, 8) = 0
> >
> > That's fine, CHLD is not masked. A while later, then, this:
> >
> > --- SIGIO (I/O possible) @ 0 (0) ---
> > rt_sigreturn(0x1d)                      = 11684722
> > ioctl(3, FIONREAD, [0])                 = 0
> > rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM CHLD PROF], 8) = 0
> 
> So the damage happend somewhere between these blocks.  Please try this
> patch to better see when CHLD became blocked:

See the attached trace. I spared you the few megs of read/select loop
this time.

I don't understand it, though.

Line 4685 has a SIGCHLD. The next rt_sigprocmask that mentions CHLD is
in line 4726, where SIGCHLD is in the oldset. It wasn't at 4714/4715.
Huh? How did it get there?