Another pipe-related problem?

Ken Brown
Mon Nov 8 14:35:53 GMT 2021

On 11/8/2021 8:12 AM, Henry S. Thompson via Cygwin wrote:
> Running on Windows-10 21H1
> With Cygwin 3.3.0 and 3.3.1 I get a hang every time I try to launch XEmacs:
> #0  0x00007ffdf31cd474 in ntdll!ZwQueryTimer ()
>     from /c/Windows/SYSTEM32/ntdll.dll
> #1  0x00000001800479fa in cygwait (object=<optimized out>, timeout=0xffff09a0,
>      timeout@entry=0x0, mask=mask@entry=5)
>      at /usr/x86_64-pc-cygwin/sys-root/usr/include/w32api/psdk_inc/intrin-impl.h:838
> #2  0x000000018008f716 in cygwait (mask=<optimized out>,
>      howlong=<optimized out>, h=<optimized out>)
>      at /usr/src/debug/cygwin-3.3.1-1/winsup/cygwin/cygwait.h:45
> #3  cygwait (howlong=<optimized out>, h=<optimized out>)
>      at /usr/src/debug/cygwin-3.3.1-1/winsup/cygwin/cygwait.h:51
> #4  fhandler_pipe::raw_read (this=0x18034fe80, ptr=0xffff0bc0,
>      len=@0xffff0b40: 128)
>      at /usr/src/debug/cygwin-3.3.1-1/winsup/cygwin/
> #5  0x0000000180069244 in fhandler_base::read (this=0x18034fe80,
>      in_ptr=0xffff0bc0, len=@0xffff0b40: 128)
>      at /usr/src/debug/cygwin-3.3.1-1/winsup/cygwin/
> #6  0x000000018013ffcc in read (fd=3, ptr=0xffff0bc0, len=<optimized out>)
>      at /usr/src/debug/cygwin-3.3.1-1/winsup/cygwin/dtable.h:64
> #7  0x000000018018e88b in _sigfe () at sigfe.s:35
> #8  0x000000010066a11d in retry_read_1 (fildes=3, buf=0xffff0bc0, nbyte=128,
>      allow_quit=0) at sysdep.c:2425
> #9  0x000000010066a171 in retry_read (fildes=3, buf=0xffff0bc0, nbyte=128)
>      at sysdep.c:2437
> #10 0x0000000100494d86 in drain_signal_event_pipe () at event-unixoid.c:159
> #11 0x000000010056d1dc in mswindows_need_event (badly_p=1) at event-msw.c:1432
> This is an old executable, has worked since 2015 (!), but recompiling
> didn't help.  Reverting to 3.2 lets it run again.

This backtrace doesn't match the source of Cygwin's XEmacs package (which exists 
on 32-bit Cygwin only), so I assume you built this yourself, using a different 
version of XEmacs.  Cygwin's XEmacs doesn't hang for me.

Please provide build instructions for the version you compiled.  Your backtrace 
shows that fhandler_pipe::raw_read is blocked waiting for a mutex, but I can't 
tell why without seeing the XEmacs source.  My guess, just from looking at the 
function names, is that XEmacs is mixing POSIX reads with Win32 reads, messing 
up the mutex handling.


More information about the Cygwin mailing list