From: "Pedro Alves (Code Review)" <gerrit@gnutoolchain-gerrit.osci.io>
To: Tom Tromey <tromey@sourceware.org>, gdb-patches@sourceware.org
Subject: [review v4] Introduce thread-safe way to handle SIGSEGV
Date: Tue, 26 Nov 2019 15:58:00 -0000 [thread overview]
Message-ID: <20191126155757.E7D2220AF6@gnutoolchain-gerrit.osci.io> (raw)
In-Reply-To: <gerrit.1571543710000.Ic832bbb033b64744e4b44f14b41db7e4168ce427@gnutoolchain-gerrit.osci.io>
Pedro Alves has posted comments on this change.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/171
......................................................................
Patch Set 4: Code-Review+2
(2 comments)
LGTM, with the nit below fixed.
| --- gdb/cp-support.c
| +++ gdb/cp-support.c
| @@ -1477,17 +1480,17 @@ static bool catch_demangler_crashes = true;
|
| /* Stack context and environment for demangler crash recovery. */
|
| -static SIGJMP_BUF gdb_demangle_jmp_buf;
| +static thread_local SIGJMP_BUF *gdb_demangle_jmp_buf;
|
| /* If nonzero, attempt to dump core from the signal handler. */
|
| -static int gdb_demangle_attempt_core_dump = 1;
| +static std::atomic<bool> gdb_demangle_attempt_core_dump;
PS3, Line 1487:
> What would be really great is to fuzz the demangler and fix all
> the bugs. Then we could ditch all of this code
One can dream. :-)
|
| /* Signal handler for gdb_demangle. */
|
| static void
| gdb_demangle_signal_handler (int signo)
| {
| if (gdb_demangle_attempt_core_dump)
| {
| if (fork () == 0)
| --- gdb/cp-support.c
| +++ gdb/cp-support.c
| @@ -1602,7 +1592,13 @@ #endif
| -
| - error_reported = 1;
| - }
| -
| - result = NULL;
| - }
| + /* If there was a failure, we can't report it here, because
| + we might be in a background thread. Instead, arrange for
| + the reporting to happen on the main thread. */
| + std::string copy = name;
PS4, Line 1595:
(I thought I had commented on this, but I can't find the comment now.)
This explicit copy is unnecessary/redundant, because you're using [=]
as capture. As is, you copy the string twice, first into the
"std::string copy" local, and then you copy that again in the lambda's
capture by value.
| + run_on_main_thread ([=] ()
| + {
| + report_failed_demangle (copy.c_str (), core_dump_allowed,
| + crash_signal);
| + });
| +
| + result = NULL;
| + }
| }
--
Gerrit-Project: binutils-gdb
Gerrit-Branch: master
Gerrit-Change-Id: Ic832bbb033b64744e4b44f14b41db7e4168ce427
Gerrit-Change-Number: 171
Gerrit-PatchSet: 4
Gerrit-Owner: Tom Tromey <tromey@sourceware.org>
Gerrit-Reviewer: Pedro Alves <palves@redhat.com>
Gerrit-Reviewer: Tom Tromey <tromey@sourceware.org>
Gerrit-Comment-Date: Tue, 26 Nov 2019 15:57:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Pedro Alves <palves@redhat.com>
Comment-In-Reply-To: Tom Tromey <tromey@sourceware.org>
Gerrit-MessageType: comment
next prev parent reply other threads:[~2019-11-26 15:58 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-20 4:02 [review] " Tom Tromey (Code Review)
2019-10-30 22:54 ` [review v3] " Tom Tromey (Code Review)
2019-11-22 20:07 ` Pedro Alves (Code Review)
2019-11-22 23:12 ` Tom Tromey (Code Review)
2019-11-22 23:50 ` [review v4] " Tom Tromey (Code Review)
2019-11-26 15:58 ` Pedro Alves (Code Review) [this message]
2019-11-26 16:11 ` Tom Tromey (Code Review)
2019-11-26 16:23 ` Pedro Alves (Code Review)
2019-11-26 21:13 ` [pushed] " Sourceware to Gerrit sync (Code Review)
2019-11-26 21:14 ` Sourceware to Gerrit sync (Code Review)
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=20191126155757.E7D2220AF6@gnutoolchain-gerrit.osci.io \
--to=gerrit@gnutoolchain-gerrit.osci.io \
--cc=gdb-patches@sourceware.org \
--cc=gnutoolchain-gerrit@osci.io \
--cc=tromey@sourceware.org \
/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