public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Johannes Khoshnazar-Thoma <johannes@johannesthoma.com>
To: The Cygwin Mailing List <cygwin@cygwin.com>
Subject: cygwin application hangs on closing console
Date: Mon, 22 Apr 2024 14:50:51 +0200	[thread overview]
Message-ID: <d268ca90-3c5b-4de6-9dd5-320ee713283c@johannesthoma.com> (raw)

Hi cygwin team :)

I have found something what may be a cygwin bug. Sometimes
(1 out of 1000 times) a drbdadm.exe process (which is part of WinDRBD's
user mode programs originally written for Linux) hangs for several
days on exiting (closing the console). I got a minidump and analyzed
the dump with gdb (the minidump enabled version at https://github.com/ssbssa/gdb)

I have to note that the application (drbdadm.exe) is run from a
Windows Service. Furthermore it is not a full cygwin installation
however the cygwin1.dll (3.4.10-1) is in the $PATH.

here is the gdb output:

(gdb) info thread
   Id   Target Id         Frame
* 1    Thread 0x14c8     0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   2    Thread 0x2e0      0x00007ffc6a405ee4 in ntdll!ZwReadFile () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   3    Thread 0x1060     0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   4    Thread 0x858      0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   5    Thread 0xe40      0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) thread 1
[Switching to thread 1 (Thread 0x14c8)]
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) bt
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#1  0x00007ffc66826d1f in WaitForSingleObjectEx () from C:\src\dlls-syms\KERNELBASE.dll\6502815021e000\KERNELBASE.dll
#2  0x00007ffc492ebb42 in fhandler_console::close (this=0x800007f20) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/fhandler/console.cc:1769
#3  0x00007ffc492dc365 in fhandler_base::close_with_arch (this=0x800007f20) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/fhandler/base.cc:1202
#4  0x00007ffc49353640 in init_cygheap::close_ctty (this=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/mm/cygheap.cc:133
#5  0x00007ffc492aee9f in close_all_files (norelease=norelease@entry=false) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/syscalls.cc:81
#6  0x00007ffc49226763 in do_exit (status=0) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:1125
#7  0x00007ffc4922693f in _exit (n=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:1240
#8  0x00007ffc49390899 in exit (code=0) at /usr/src/debug/cygwin-3.4.10-1/newlib/libc/stdlib/exit.c:65
#9  0x00007ffc49226923 in cygwin_exit (n=568) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:1234
#10 0x00007ffc492280aa in dll_crt0_1 () at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:999
#11 0x00007ffc49225c86 in _cygtls::call2 (this=0x7ffffce00, func=0x7ffc49226f80 <dll_crt0_1(void*)>, arg=0x0, buf=buf@entry=0x7ffffcdf0) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:41
#12 0x00007ffc49225d34 in _cygtls::call (func=<optimized out>, arg=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:28
#13 0x0000000000000000 in ?? ()
(gdb) thread 1
[Switching to thread 1 (Thread 0x14c8)]
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) info thread
   Id   Target Id         Frame
* 1    Thread 0x14c8     0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   2    Thread 0x2e0      0x00007ffc6a405ee4 in ntdll!ZwReadFile () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   3    Thread 0x1060     0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   4    Thread 0x858      0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
   5    Thread 0xe40      0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) bt
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#1  0x00007ffc66826d1f in WaitForSingleObjectEx () from C:\src\dlls-syms\KERNELBASE.dll\6502815021e000\KERNELBASE.dll
#2  0x00007ffc492ebb42 in fhandler_console::close (this=0x800007f20) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/fhandler/console.cc:1769
#3  0x00007ffc492dc365 in fhandler_base::close_with_arch (this=0x800007f20) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/fhandler/base.cc:1202
#4  0x00007ffc49353640 in init_cygheap::close_ctty (this=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/mm/cygheap.cc:133
#5  0x00007ffc492aee9f in close_all_files (norelease=norelease@entry=false) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/syscalls.cc:81
#6  0x00007ffc49226763 in do_exit (status=0) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:1125
#7  0x00007ffc4922693f in _exit (n=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:1240
#8  0x00007ffc49390899 in exit (code=0) at /usr/src/debug/cygwin-3.4.10-1/newlib/libc/stdlib/exit.c:65
#9  0x00007ffc49226923 in cygwin_exit (n=568) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:1234
#10 0x00007ffc492280aa in dll_crt0_1 () at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/dcrt0.cc:999
#11 0x00007ffc49225c86 in _cygtls::call2 (this=0x7ffffce00, func=0x7ffc49226f80 <dll_crt0_1(void*)>, arg=0x0, buf=buf@entry=0x7ffffcdf0) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:41
#12 0x00007ffc49225d34 in _cygtls::call (func=<optimized out>, arg=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:28
#13 0x0000000000000000 in ?? ()
(gdb) thread 2
[Switching to thread 2 (Thread 0x2e0)]
#0  0x00007ffc6a405ee4 in ntdll!ZwReadFile () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) bt
#0  0x00007ffc6a405ee4 in ntdll!ZwReadFile () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#1  0x00007ffc6682e704 in ReadFile () from C:\src\dlls-syms\KERNELBASE.dll\6502815021e000\KERNELBASE.dll
#2  0x00007ffc4929f541 in wait_sig () at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/sigproc.cc:1331
#3  0x00007ffc49224aa3 in cygthread::callfunc (this=this@entry=0x7ffc49416880 <threads>, issimplestub=issimplestub@entry=false) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygthread.cc:48
#4  0x00007ffc49225066 in cygthread::stub (arg=arg@entry=0x7ffc49416880 <threads>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygthread.cc:91
#5  0x00007ffc49225c86 in _cygtls::call2 (this=0x10ece00, func=0x7ffc49224fe0 <cygthread::stub(void*)>, arg=0x7ffc49416880 <threads>, buf=buf@entry=0x10ecd50) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:41
#6  0x00007ffc49225d34 in _cygtls::call (func=<optimized out>, arg=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:28
#7  0x00007ffc691584d4 in KERNEL32!BaseThreadInitThunk () from C:\src\dlls-syms\kernel32.dll\640993B0ad000\kernel32.dll
#8  0x00007ffc6a3b1791 in ntdll!RtlUserThreadStart () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#9  0x0000000000000000 in ?? ()
(gdb) thread 3
[Switching to thread 3 (Thread 0x1060)]
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) bt
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#1  0x00007ffc66826d1f in WaitForSingleObjectEx () from C:\src\dlls-syms\KERNELBASE.dll\6502815021e000\KERNELBASE.dll
#2  0x00007ffc492250a1 in cygthread::stub (arg=arg@entry=0x7ffc494168d8 <threads+88>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygthread.cc:112
#3  0x00007ffc49225c86 in _cygtls::call2 (this=0x19bce00, func=0x7ffc49224fe0 <cygthread::stub(void*)>, arg=0x7ffc494168d8 <threads+88>, buf=buf@entry=0x19bcd50) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:41
#4  0x00007ffc49225d34 in _cygtls::call (func=<optimized out>, arg=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:28
#5  0x00007ffc691584d4 in KERNEL32!BaseThreadInitThunk () from C:\src\dlls-syms\kernel32.dll\640993B0ad000\kernel32.dll
#6  0x00007ffc6a3b1791 in ntdll!RtlUserThreadStart () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#7  0x0000000000000000 in ?? ()
(gdb) thread 4
[Switching to thread 4 (Thread 0x858)]
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) bt
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#1  0x00007ffc66826d1f in WaitForSingleObjectEx () from C:\src\dlls-syms\KERNELBASE.dll\6502815021e000\KERNELBASE.dll
#2  0x00007ffc492250a1 in cygthread::stub (arg=arg@entry=0x7ffc49416930 <threads+176>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygthread.cc:112
#3  0x00007ffc49225c86 in _cygtls::call2 (this=0x22fce00, func=0x7ffc49224fe0 <cygthread::stub(void*)>, arg=0x7ffc49416930 <threads+176>, buf=buf@entry=0x22fcd50) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:41
#4  0x00007ffc49225d34 in _cygtls::call (func=<optimized out>, arg=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:28
#5  0x00007ffc691584d4 in KERNEL32!BaseThreadInitThunk () from C:\src\dlls-syms\kernel32.dll\640993B0ad000\kernel32.dll
#6  0x00007ffc6a3b1791 in ntdll!RtlUserThreadStart () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#7  0x0000000000000000 in ?? ()
(gdb) thread 5
[Switching to thread 5 (Thread 0xe40)]
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) bt
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#1  0x00007ffc66826d1f in WaitForSingleObjectEx () from C:\src\dlls-syms\KERNELBASE.dll\6502815021e000\KERNELBASE.dll
#2  0x00007ffc492250a1 in cygthread::stub (arg=arg@entry=0x7ffc49416988 <threads+264>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygthread.cc:112
#3  0x00007ffc49225c86 in _cygtls::call2 (this=0x24fce00, func=0x7ffc49224fe0 <cygthread::stub(void*)>, arg=0x7ffc49416988 <threads+264>, buf=buf@entry=0x24fcd50) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:41
#4  0x00007ffc49225d34 in _cygtls::call (func=<optimized out>, arg=<optimized out>) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/cygtls.cc:28
#5  0x00007ffc691584d4 in KERNEL32!BaseThreadInitThunk () from C:\src\dlls-syms\kernel32.dll\640993B0ad000\kernel32.dll
#6  0x00007ffc6a3b1791 in ntdll!RtlUserThreadStart () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
#7  0x0000000000000000 in ?? ()
(gdb) p master_thread_started
$7 = true
(gdb) thread 1
[Switching to thread 1 (Thread 0x14c8)]
#0  0x00007ffc6a405ea4 in ntdll!ZwWaitForSingleObject () from C:\src\dlls-syms\ntdll.dll\6502806A1cf000\ntdll.dll
(gdb) up
#1  0x00007ffc66826d1f in WaitForSingleObjectEx () from C:\src\dlls-syms\KERNELBASE.dll\6502815021e000\KERNELBASE.dll
(gdb)
#2  0x00007ffc492ebb42 in fhandler_console::close (this=0x800007f20) at /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/fhandler/console.cc:1769
1769    in /usr/src/debug/cygwin-3.4.10-1/winsup/cygwin/fhandler/console.cc
(gdb) p name
$8 = "cygcons.thread_sync.0", '\000' <repeats 19 times>, "r", '\000' <repeats 151 times>, "^8\025\r!‘\000\000"...
(gdb) p myself
$9 = {<pinfo_minimal> = {h = 0x118, hProcess = 0x0, rd_proc_pipe = 0x0}, destroy = false, winpid_hdl = 0x11c, procinfo = 0x1a2000000, waiter_ready = false, wait_thread = 0x0}

It looks like the cons_master_thread already exited, maybe clearing the master_thread_started
flag in that case helps? but this is only a wild guess ...

If you need more information, please let me know.

Thanks a lot and Best regards,

- Johannes

             reply	other threads:[~2024-04-22 12:50 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-22 12:50 Johannes Khoshnazar-Thoma [this message]
2024-04-22 18:51 ` Takashi Yano
2024-04-23  9:20   ` Johannes Khoshnazar-Thoma
2024-04-23 10:26     ` Takashi Yano
2024-05-15 15:37       ` Johannes Khoshnazar-Thoma
2024-05-15 15:48         ` Johannes Khoshnazar-Thoma
2024-05-15 20:24           ` Brian Inglis
2024-05-16  9:14           ` Takashi Yano

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=d268ca90-3c5b-4de6-9dd5-320ee713283c@johannesthoma.com \
    --to=johannes@johannesthoma.com \
    --cc=cygwin@cygwin.com \
    /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).