From: Gary Benson <gbenson@redhat.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org, aburgess@broadcom.com,
xdje42@gmail.com, fw@deneb.enyo.de,
mark.kettenis@xs4all.nl, palves@redhat.com,
tromey@redhat.com
Subject: Re: [PATCH 2/2 v2] Demangler crash handler
Date: Mon, 19 May 2014 15:48:00 -0000 [thread overview]
Message-ID: <20140519154822.GA20315@blade.nx> (raw)
In-Reply-To: <83iop1dd8e.fsf@gnu.org>
Eli Zaretskii wrote:
> > Date: Mon, 19 May 2014 12:48:02 +0100
> > From: Gary Benson <gbenson@redhat.com>
> > Cc: Andrew Burgess <aburgess@broadcom.com>, Doug Evans <xdje42@gmail.com>,
> > Eli Zaretskii <eliz@gnu.org>, Florian Weimer <fw@deneb.enyo.de>,
> > Mark Kettenis <mark.kettenis@xs4all.nl>,
> > Pedro Alves <palves@redhat.com>, Tom Tromey <tromey@redhat.com>
> >
> > The main change I have made is to cause the crash handler to be
> > disabled by default. The user must explicitly enable the handler
> > with "maint set catch-demangler-crashes on". This will simplify
> > triage of bugs such as PR 16957 [2], a new demangler crash that
> > was reported on Friday. The user did not supply enough
> > information to see the offending symbol, and I don't have the
> > necessary compiler or libraries to reproduce the bug locally.
> > With this patch we can instruct the user to enter "maint set
> > catch-demangler-crashes on" and repeat whatever they did to cause
> > the crash in the first place. We can then easily obtain the first
> > offending symbol GDB encountered.
>
> Can't say this option makes sense to me. Isn't there a way to
> display the necessary information in a message, even though you
> catch the signal?
To clarify, the current situation in GDB is that crashes in the
demangler are not caught:
(gdb) set lang c++
(gdb) maint demangle _Z1-Av23*;cG~Wo2Vu
Segmentation fault (core dumped)
With the patch, that is also the default situation. But with the
patch, with "maint set catch-demangler-crashes on", a signal handler
is installed across calls to the demangler, so that if the demangler
crashes you get something like this:
(gdb) set lang c++
(gdb) maint set catch-demangler-crashes on
(gdb) maint demangle _Z1-Av23*;cG~Wo2Vu
/home/gary/work/archer/demangle-crashcatcher/src/gdb/cp-support.c:1590: internal-warning: unable to demangle '_Z1-Av23*;cG~Wo2Vu' (demangler failed with signal 11)
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y
/home/gary/work/archer/demangle-crashcatcher/src/gdb/cp-support.c:1590: internal-warning: unable to demangle '_Z1-Av23*;cG~Wo2Vu' (demangler failed with signal 11)
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) y
Aborted (core dumped)
> > maint set catch-demangler-crashes (on|off)
> > maint show catch-demangler-crashes
> > Control whether the debugger should attempt to catch crashes in the
> > symbol name demangler. The default is not to attempt to catch
> > crashes. The first time a crash is caught the offending symbol is
> > displayed and the user is presented with options to terminate the
> > current session and/or to create a core file.
>
> Given this description, it sounds like all the necessary information
> is already displayed when the crash is caught. So why would we need
> an option?
Did my above explanation answer this question?
> > gdb/doc/
> > 2014-05-19 Gary Benson <gbenson@redhat.com>
> >
> > * gdb.texinfo (Maintenance Commands): Document new
> > "maint set/show catch-demangler-crashes" option.
>
> This part of the patch was absent from what you sent.
My apologies. And the whole reason I Cc'd you was because the patch
contained documentation changes :) I've inlined that part at the end
of this mail.
> > +#ifdef SIGSEGV
>
> AFAIK, SIGSEGV is an ANSI-standard signal, so I don't think you need a
> preprocessor conditional here.
Ok, I can remove this.
> > + add_setshow_boolean_cmd ("catch-demangler-crashes", class_maintenance,
> > + &catch_demangler_crashes, _("\
> > +Set whether to attempt to catch demangler crashes."), _("\
> > +Show whether GDB will attempt to catch demangler crashes."), _("\
>
> The "Set" and "Show" lines should be identical except for the
> initial word.
Ok, I will change the second to:
+Show whether to attempt to catch demangler crashes."), _("\
Thanks,
Gary
--
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index a6bde12..32f33a9 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -33142,6 +33142,16 @@ Expand symbol tables.
If @var{regexp} is specified, only expand symbol tables for file
names matching @var{regexp}.
+@kindex maint set catch-demangler-crashes
+@kindex maint show catch-demangler-crashes
+@item maint set catch-demangler-crashes [on|off]
+@itemx maint show catch-demangler-crashes
+Control whether @value{GDBN} should attempt to catch crashes in the
+symbol name demangler. The default is not to attempt to catch
+crashes. If enabled, the first time a crash is caught the offending
+symbol is displayed and the user is presented with options to
+terminate the current session and to create a core file.
+
@kindex maint cplus first_component
@item maint cplus first_component @var{name}
Print the first C@t{++} class/namespace component of @var{name}.
next prev parent reply other threads:[~2014-05-19 15:48 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-19 11:48 Gary Benson
2014-05-19 15:01 ` Eli Zaretskii
2014-05-19 15:48 ` Gary Benson [this message]
2014-05-19 16:55 ` Eli Zaretskii
2014-05-19 19:05 ` Gary Benson
2014-05-19 20:41 ` Pedro Alves
2014-05-20 2:43 ` Eli Zaretskii
2014-05-22 10:37 ` Gary Benson
2014-05-25 12:59 ` Florian Weimer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140519154822.GA20315@blade.nx \
--to=gbenson@redhat.com \
--cc=aburgess@broadcom.com \
--cc=eliz@gnu.org \
--cc=fw@deneb.enyo.de \
--cc=gdb-patches@sourceware.org \
--cc=mark.kettenis@xs4all.nl \
--cc=palves@redhat.com \
--cc=tromey@redhat.com \
--cc=xdje42@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox