Re: catch signal does not appear multi-inferior safe
Chris January <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <1409223530.3407.15.camel@chris-xps13> |
Hello Pedro, On Tue, 2014-08-19 at 16:37 +0100, Pedro Alves wrote: > On 07/11/2014 11:56 AM, Chris January wrote: > > 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. > > Signal catchpoint locations aren't really per-process; they're > global. GDB shouldn't be trying to detach them from the child. > Where is this happening? Is this from detach_breakpoint ? That's > odd, since that skips bp_loc_other locations? You are right. I was testing with an old version of GDB (7.6.2). It is fixed in recent versions by this commit: commit bd9673a4ded96ea5c108601501c8e59003ea1be6 Author: Philippe Waroquiers <[email protected]> Date: Tue May 21 18:47:05 2013 +0000 Fix internal error caused by interaction between catch signal and fork Sorry for the noise! Regards, Chris