public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Ken Brown <kbrown@cornell.edu>
To: "Henry S. Thompson" <ht@inf.ed.ac.uk>
Cc: cygwin@cygwin.com
Subject: Re: Another pipe-related problem?
Date: Wed, 10 Nov 2021 13:03:09 -0500	[thread overview]
Message-ID: <83df50b8-5c0c-41b9-1e9e-4ea6bfa3d69f@cornell.edu> (raw)
In-Reply-To: <f5bfss33oxi.fsf@ecclerig.inf.ed.ac.uk>

On 11/10/2021 12:23 PM, Henry S. Thompson wrote:
> Ken Brown via Cygwin writes:
> 
>> On 11/9/2021 9:53 PM, Ken Brown via Cygwin wrote:
>>> Back to the drawing board.
>>
>> It finally occurred to me to stop looking for a bug in
>> fhandler_pipe::raw_read and instead see if something is in fact
>> repeatedly writing to the pipe, so that drain_signal_event_pipe
>> never finishes.  Putting a breakpoint at fhandler_pipe::raw_write, I
>> found that this is in fact the case.  While the main thread is
>> repeatedly reading from the pipe, a second thread is repeatedly
>> writing to it.  Here's the backtrace of that thread:
> 
> Argh.  Thanks for the hard labour on this.  This is not a part of the
> XEmacs code I have any experience of.  Is there any clue you can give
> about how things changed in all the September commits to
> fhandler_pipe.cc that might have exposed the XEmacs bug?

The main change was that we stopped using Win32 Overlapped I/O 
(https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-and-overlapped-input-and-output) 
and switched to using the NT API.  As a result, pipe I/O became much more 
efficient.  It wouldn't surprise me if the efficiency alone is what exposed the bug.

The good news is that the bug doesn't seem to occur in XEmacs 21.4 (on 32-bit 
Cygwin).  So one way to approach this would be to bisect the XEmacs git repo to 
find the commit that introduced the bug.  You'd probably have to do the work on 
32-bit Cygwin since, if I remember correctly, XEmacs 21.4 didn't build on 64-bit 
Cygwin.

Ken

  reply	other threads:[~2021-11-10 18:03 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-08 13:12 Henry S. Thompson
2021-11-08 14:35 ` Ken Brown
2021-11-08 18:52   ` Ken Brown
2021-11-09 10:55   ` Henry S. Thompson
2021-11-09 14:11     ` Ken Brown
2021-11-09 14:47       ` Henry S. Thompson
2021-11-09 22:16       ` Ken Brown
2021-11-09 22:20         ` Ken Brown
2021-11-10  2:53           ` Ken Brown
2021-11-10  3:51             ` Backwoods BC
2021-11-10 14:47             ` Ken Brown
2021-11-10 17:23               ` Henry S. Thompson
2021-11-10 18:03                 ` Ken Brown [this message]
2021-11-10 18:42                   ` Henry S. Thompson
2021-11-10 23:07                     ` Andrey Repin
2021-11-11 11:06                       ` Andrey Repin
2021-11-11 14:16                     ` Ken Brown
2021-12-08 21:09                     ` XEmacs versus Cygwin 3.3 (was Re: Another pipe-related problem?) Henry S. Thompson
2021-12-09  8:39                       ` Aidan Kehoe
2021-11-09 23:22       ` Another pipe-related problem? Takashi Yano
2021-11-09 23:29         ` Takashi Yano
2021-11-09 23:48           ` Takashi Yano
2021-11-10  0:16             ` Takashi Yano
2021-11-10  0:37               ` Takashi Yano
2021-11-10  2:02                 ` Ken Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83df50b8-5c0c-41b9-1e9e-4ea6bfa3d69f@cornell.edu \
    --to=kbrown@cornell.edu \
    --cc=cygwin@cygwin.com \
    --cc=ht@inf.ed.ac.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).