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