On Thu, Aug 26, 2010 at 09:07:08PM +0100, Nicholas Marriott wrote: > hi > > libevent has this clever stuff to reinitialise signals if the backend > requires it after calling event_reinit() (typically called after > fork()). > > unfortunately, it isn't enabled for poll and select, so both parent and > child continue to use the same socketpair for signals. > > one byte is written into this socketpair to wake up the main event loop > on a signal, so there is an occasional race between the processes to > read this byte, causing the losing process to hang, blocked in recv(). > > this problem was seen by kili@ during the period tmux was switched to > poll, i'm pretty surprised others didn't see it as well. > > this is the fix upstream have decided to go with for now, enabling the > reinit code for all backends (all but poll and select already use it). > > ok? >
I haven't observed the issue but the diff is ok by me -- Gilles Chehade