[review v4] Introduce thread-safe way to handle SIGSEGV
Tom Tromey (Code Review)
gerrit@gnutoolchain-gerrit.osci.io
Tue Nov 26 16:11:00 GMT 2019
Tom Tromey 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:
> (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.
You did comment earlier, on gdb-patches I think.
The copy is needed here because `name` is a `const char *` and
it isn't guaranteed to live long enough.
| + 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:11:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Pedro Alves <palves@redhat.com>
Gerrit-MessageType: comment
More information about the Gdb-patches
mailing list