On Fri, 28 Jun 2002, Olivier Galibert stipulated:
There is a window between the start-process-internal and the
set-process-sentinel where, depending on scheduling and signals whims,
the process can finish. Then the sentinel is never called, and
everything craps up.
I know :) I've fixed it in 21.4, but I found more races before 21.5
cropped up. As soon as I've finished a massive flood of upgrades
on the boxes here I'll get a patch out.
(There are race windows between death/status-update-in-event-loop
wide enough to drive a tank through).
It seems to be rare enough in normal use (even if afaik the linux
I see it regularly :(
I have no clue on how to fix it. My lisp skills are inexistant.
This is a C core bug; look at process.[ch] and process-unix.c, and try
to make PROCESS_LIVE_P, PROCESS_READABLE_P, the process->status field
and the instream value all return the right values at the right time,
given the constraints on what signal handlers may portably do.
I'll be endeavouring to jump on this, probably, in the middle of the
week.
--
`What happened?'
`Nick shipped buggy code!'
`Oh, no dinner for him...'