This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[review v4] Introduce thread-safe way to handle SIGSEGV
- From: "Pedro Alves (Code Review)" <gerrit at gnutoolchain-gerrit dot osci dot io>
- To: Tom Tromey <tromey at sourceware dot org>, gdb-patches at sourceware dot org
- Date: Tue, 26 Nov 2019 11:23:49 -0500
- Subject: [review v4] Introduce thread-safe way to handle SIGSEGV
- Auto-submitted: auto-generated
- References: <gerrit.1571543710000.Ic832bbb033b64744e4b44f14b41db7e4168ce427@gnutoolchain-gerrit.osci.io>
- Reply-to: gnutoolchain-gerrit at osci dot io
Pedro Alves has posted comments on this change.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/171
......................................................................
Patch Set 4:
(1 comment)
| --- 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:
> The copy is needed here because `name` is a `const char *` and
> it isn't guaranteed to live long enough.
Ah, missed that. Thanks for the clarification.
| + 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 16:23:49 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Pedro Alves <palves@redhat.com>
Comment-In-Reply-To: Tom Tromey <tromey@sourceware.org>
Gerrit-MessageType: comment