On 6/11/19 10:48 AM, Corinna Vinschen wrote:
> Hi Ken,
>
> On Jun 8 12:20, Ken Brown wrote:
>> On 6/7/2019 5:43 PM, Ken Brown wrote:
>>> On 6/7/2019 3:13 PM, Ken Brown wrote:
>>>> On 6/7/2019 2:31 PM, Achim Gratz wrote:
>>>>> Ken Brown writes:
>>>>>> 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.
>>>>>
>>>>> Anything triggering a race or deadlock will depend on so many other
>>>>> things that it really is no surprise to see seemingly unrelated changes
>>>>> making the bug appear or disappear. There are certainly races left in
>>>>> Cygwin, I see them from time to time in various Perl modules, just never
>>>>> reproducible enough to give anyone an idea of where to look.
>>>>
>>>> That makes sense.
>>>>
>>>> In the meantime, I've already discovered another problem, within an hour of
>>>> posting my claim that everything was working fine: If I start emacs-X11
>>>> with
>>>> cygserver running, I can't fork any subprocesses within emacs. I get
>>>>
>>>> 0 [main] emacs 2689 dofork: child 2693 - died waiting for dll loading,
>>>> errno 11
>>>>
>>>> Back to the drawing board.... I've never looked at the cygserver code, but
>>>> maybe it will turn out to be something easy.
>>>
>>> Good news (for me): This isn't related to my pipe code. The same problem
>>> occurs
>>> if I build the master branch. I'll bisect when I get a chance (probably
>>> tomorrow). In the meantime, all I can say is that strace shows a
>>> STATUS_ACCESS_VIOLATION at shm.cc:125.
>>
>> A bisection shows that the problem starts with the following commit:
>
> Thanks for bisecting!
>
>> commit f03ea8e1c57bd5cea83f6cd47fa02870bdfeb1c5
>> Author: Michael Haubenwallner <michael.haubenwall...@ssi-schaefer.com>
>> Date: Thu May 2 12:12:44 2019 +0200
>>
>> Cygwin: fork: Remember child not before success.
>>
>> Do not remember the child before it was successfully initialized, or we
>> would need more sophisticated cleanup on child initialization failure,
>> like cleaning up the process table and suppressing SIGCHILD delivery
>> with multiple threads ("waitproc") involved. Compared to that, the
>> potential slowdown due to an extra yield () call should be negligible.
>
> Please revert the patch for the time being. Michael, this needs some
> more work, apparently.
Because of https://cygwin.com/ml/cygwin/2019-06/msg00110.html:
Is there still some problem related to that commit I need to figure out?
/haubi/