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
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.