From: Gary Benson <gbenson@redhat.com>
To: Andrew Burgess <aburgess@broadcom.com>
Cc: gdb-patches@sourceware.org, 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>
Subject: Re: [PATCH 3/3 v4] Demangler crash handler
Date: Mon, 09 Jun 2014 09:01:00 -0000 [thread overview]
Message-ID: <20140609090123.GA30086@blade.nx> (raw)
In-Reply-To: <53922EBD.7030300@broadcom.com>
Andrew Burgess wrote:
> On 05/06/2014 2:03 PM, Gary Benson wrote:
> > diff --git a/gdb/cp-support.c b/gdb/cp-support.c
> > index 91533e8..f4dde70 100644
> > --- a/gdb/cp-support.c
> > +++ b/gdb/cp-support.c
>
> > +
> > +/* Signal handler for gdb_demangle. */
> > +
> > +static void
> > +gdb_demangle_signal_handler (int signo)
> > +{
> > + if (gdb_demangle_attempt_core_dump)
> > + {
> > + if (fork () == 0)
> > + dump_core ();
>
> This worries me a little, when a problem case occurs gdb will dump
> core regardless of the users ulimit setting, without first asking
> the user, and doesn't tell the user that a core file was created.
>
> This feels quite unexpected behaviour to me, especially the bit
> about disregarding the ulimit setting without first asking for
> permission.
>
> Catching the crash feels like a good idea, but I'd prefer that gdb
> ask before circumventing the ulimit and dumping core.
This part of the same patch:
+ if (core_dump_allowed == -1)
+ {
+ core_dump_allowed = can_dump_core ();
+
+ if (!core_dump_allowed)
+ gdb_demangle_attempt_core_dump = 0;
+ }
calls this:
int
can_dump_core (void)
{
#ifdef HAVE_GETRLIMIT
struct rlimit rlim;
/* Be quiet and assume we can dump if an error is returned. */
if (getrlimit (RLIMIT_CORE, &rlim) != 0)
return 1;
if (rlim.rlim_max == 0)
return 0;
#endif /* HAVE_GETRLIMIT */
return 1;
}
which inhibits the core dump if the user's ulimit is 0.
> Alternatively we could just not dump core from gdb, report the bad
> symbol and let the user file a bug. With the demangler being so
> deterministic it should be possible to reproduce, if not, then we
> just ask the user to turn off the crash catch, adjust their ulimit
> (like we would with any other gdb SEGV crash), and rerun the test.
That was and is my preferred solution, but Mark Kettenis indicated
that he would not accept the patch unless a meaningful core file was
created.
> If we really want to create the core file by default, but aren't
> going to ask, then I'd propose we honour the ulimit setting, and
> make sure that the user is told that a core file was just written.
The problem with asking is that you'd have to ask within the signal
handler, and no code that prints to the screen is safe to call from
within a signal handler.
Even indicating that a core file was written is probably impossible:
you just have to abort and hope for the best. The nearest I could
do is set a flag in the signal handler and have the code it returns
to print "Attempting to dump core" or some such thing.
Thanks,
Gary
--
http://gbenson.net/
next prev parent reply other threads:[~2014-06-09 9:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-05 13:01 [PATCH 0/3 " Gary Benson
2014-06-05 13:02 ` [PATCH 1/3 v4] Add new internal problem for demangler warnings Gary Benson
2014-06-05 13:03 ` [PATCH 2/3 v4] Refactor and expose core-dumping functionality Gary Benson
2014-06-05 16:28 ` Doug Evans
2014-06-06 9:09 ` Gary Benson
2014-06-05 13:04 ` [PATCH 3/3 v4] Demangler crash handler Gary Benson
2014-06-06 18:16 ` Florian Weimer
2014-06-06 19:27 ` Gary Benson
2014-06-06 19:42 ` Florian Weimer
2014-06-06 21:12 ` Andrew Burgess
2014-06-09 9:01 ` Gary Benson [this message]
2014-06-09 10:26 ` Andrew Burgess
2014-06-09 11:48 ` Gary Benson
2014-06-05 16:19 ` [PATCH 0/3 " Doug Evans
2014-06-06 9:19 ` Gary Benson
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=20140609090123.GA30086@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