Capture backtrace at abort with gdb

Tom de Vries <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Hi,

I ran into a gdb abort in test-case gdb.base/bp-cmds-continue-ctrl-c.exp.

I decided to use gdb itself to try and capture the backtrace at the
point of abort.

I tried moving gdb to gdb.exec and adding a script gdb with:
...
#!/bin/sh

gdb=/path/to/gdb.exec

exec $gdb -batch -ex r -ex bt -ex q --args $gdb "$@"
...

This didn't work.  There's a difference how gdb handles ^C
normally, in which case just "Quit" is printed:
...
$ /usr/bin/gdb -q
(gdb) Quit
(gdb)
...
and when gdb is run as inferior of gdb:
...
$ /usr/bin/gdb -q -batch -ex r --args /usr/bin/gdb -q
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[Detaching after vfork from child process 24707]
(gdb)
Program received signal SIGINT, Interrupt.
0x00007ffff58ae6a4 in __GI___poll (fds=0x5555564d03a0, nfds=4,
timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29        return SYSCALL_CANCEL (poll, fds, nfds, timeout);
...

I managed to make this work in the end by adding this as first command:
...
-ex "handle SIGINT nostop print pass"
...

[ FWIW, the abort was the PyOS_InterruptOccurred problem for python 3.8,
fixed by commit c47bae859a "Fix Python3.9 related runtime problems". ]

I wonder:
- should we have a comment about this in testsuite/README
- should we facilitate this in some way, by having a contrib script or
  a command line switch
- should we use this mechanism in the gdb testsuite
- should we make gdb abort in a more intelligent fashion
?

Thanks,
- Tom
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.