catch signal does not appear multi-inferior safe

Chris January <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <1405076204.3524.8.camel@chris-xps13>
Hello,

It appears to me that the 'catch signal' support in GDB is not
multi-inferior safe. Combining the 'catch signal' command with the
'checkpoint' command, for example, results in an internal error:

break-catch-sig.c:152: internal-error:
signal_catchpoint_remove_location: Assertion `signal_catch_counts[iter]
> 0' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)

see the end of this e-mail for reproducer.

When checkpointing / catching a fork signal_catchpoint_remove_location
may be called twice in a row - once for the parent and once for the
child. This causes signal_catch_counts to go below 0. I would like some
advice on how to fix this problem as I am not sure what the correct fix
is.

Regards,
Chris January - VP Engineering - Allinea Software Ltd.


The problem can be reproduced using the following GDB commands - run GDB
from gdb/testsuite/gdb.base:

file checkpoint
break main
run
catch signal SIGSEGV
break 48
continue
checkpoint
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.