aboutsummaryrefslogtreecommitdiff
path: root/libctf/ctf-impl.h
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2024-03-05 16:03:15 +0000
committerPedro Alves <pedro@palves.net>2024-04-12 18:37:29 +0100
commit9c25a9d0f7542113e995fdc967e522fc5aabd936 (patch)
treee6faffe8e8f56da329ce8874d01c284f3de5961d /libctf/ctf-impl.h
parent032e5e0c0c08977e8109e8482cd944bac8572d92 (diff)
downloadbinutils-9c25a9d0f7542113e995fdc967e522fc5aabd936.zip
binutils-9c25a9d0f7542113e995fdc967e522fc5aabd936.tar.gz
binutils-9c25a9d0f7542113e995fdc967e522fc5aabd936.tar.bz2
Cygwin/testsuite: Avoid infinite hang
On Cygwin, the gdb.base/fork-no-detach-follow-child-dlopen.exp testcase hits a sequence of cascading FAILs: (gdb) run Starting program: ..../gdb.base/fork-no-detach-follow-child-dlopen/fork-no-detach-follow-child-dlopen [New Thread 12672.0x318c] [New Thread 12672.0x2844] [New Thread 12672.0x714] FAIL: gdb.base/fork-no-detach-follow-child-dlopen.exp: runto: run to add (timeout) frame FAIL: gdb.base/fork-no-detach-follow-child-dlopen.exp: frame (timeout) list FAIL: gdb.base/fork-no-detach-follow-child-dlopen.exp: list (timeout) And the test program never makes progress. ... and at this point, Cygwin is completely stuck. I can't run any other Cygwin program. However, if we run the test program outside DejaGnu, we see something different: (gdb) b add Function "add" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (add) pending. (gdb) r Starting program: ..../gdb.base/fork-no-detach-follow-child-dlopen/fork-no-detach-follow-child-dlopen [New Thread 10968.0x834] [New Thread 10968.0x29a4] [New Thread 10968.0x16b8] [New Thread 10968.0xf9c] [Switching to Thread 10968.0x16b8] Thread 4 "sig" hit Breakpoint 1.2, pending_signals::add (pack=..., this=0x7ffa1e748a40 <sigq>) at /usr/src/debug/cygwin-3.4.9-1/winsup/cygwin/sigproc.cc:1304 1304 se = sigs + pack.si.si_signo; (gdb) Ah, the test wanted to run to a global "add" function, but managed to stop at an internal Cygwin method called "add". And stopping there deadlocks everything Cygwin in the system. (I believe some cygwin1.dll mechanisms use cross-process synchronization or communication, we're probably blocking something like that.) Fix this by using "break -q". The tests FAIL because we don't support follow-fork for Cygwin, but at least we no longer deadlock the machine. Approved-by: Kevin Buettner <kevinb@redhat.com> Change-Id: I7181d8481c2ae1024b0d73e3bb194f9a4f0a7eb9
Diffstat (limited to 'libctf/ctf-impl.h')
0 files changed, 0 insertions, 0 deletions