[PATCH draft 0/6] Remove the fhandler_base_overlapped class

Ken Brown kbrown@cornell.edu
Fri Jun 7 12:09:00 GMT 2019


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


More information about the Cygwin-patches mailing list