On 6/3/2019 12:35 PM, Corinna Vinschen wrote: > On May 30 12:56, Ken Brown wrote: >> On 5/26/2019 11:10 AM, Ken Brown wrote: >>> fhandler_pipe is currently the only class derived from >>> fhandler_base_overlapped. This patch series rewrites parts of >>> fhandler_pipe so that it can be derived from fhandler_base instead. >>> We can then simplify the code by removing fhandler_base_overlapped. >>> >>> In particular, this gets rid of the peculiar situation in which a >>> non-blocking write can return with I/O pending, leading to the >>> ugliness in fhandler_base_overlapped::close. >>> >>> I've marked these patches as drafts because I've undoubtedly >>> overlooked some things. Also, I haven't systematically done any >>> regression tests. I have, however, run all the sample pipe programs >>> in Kerrisk's book "The Linux Programming Interface: Linux and UNIX >>> System Programming Handbook". I've also run emacs-X11, gdb, git, >>> make, etc., so far without problems. >> >> This isn't ready for prime time yet. I've run into occasional errors >> like this when doing a parallel build of emacs (-j13 in this case): >> >> make: INTERNAL: Exiting with 14 jobserver tokens available; should be >> 13! >> >> This would seem to indicate problems with make's jobserver pipe. I've >> already found two bugs in patch 4, but I'm still seeing this error >> once in a while. >> >> I'll send a v2 if/when I find the problem. > > Either way, you're collecting goldstars like crazy here :)
Thanks. I think I've found the problem. I was mishandling signals that arrived during a read. But after I fix that, there's still one nagging issue involving timerfd code. I'll write to the main list with details. I *think* it's a timerfd bug, but it's puzzling that I only see it when testing my new pipe implementation. Ken