From patchwork Tue May 21 05:00:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Edlinger X-Patchwork-Id: 90517 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5CAD03858C50 for ; Tue, 21 May 2024 04:58:42 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2050.outbound.protection.outlook.com [40.92.59.50]) by sourceware.org (Postfix) with ESMTPS id 0AA303858D1E for ; Tue, 21 May 2024 04:57:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0AA303858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=hotmail.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=hotmail.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0AA303858D1E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.92.59.50 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716267483; cv=pass; b=iMnyomhq+EEXvVnrZr4zxtZ+qvZP3b2ESfQIBFt61Z9yW8AZl581lZ6qNt78zbOvgHMqqLwRK3/dqLFyxpc2OQgpkdF6Ld5+O33l9kQCP4Noz1VAmSNjXJlGs9YoYZ3KyoehYk6uJcuvUenj+0//4FgjEC53srU7IBuEMJstj6w= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716267483; c=relaxed/simple; bh=+bEezXZJT7YMFdOByYLJuCqXc9WsXDbCs9BrMugmKIs=; h=DKIM-Signature:Message-ID:Date:To:From:Subject:MIME-Version; b=ALuo/5irXyDIoMDeFALvrw/l4DO/yMUxV/iPR0URrzEQTl1AuvUtxzMx3z3ZK9+WiSJitPpJtbduu7p7dyNw4FRrN2yPsBuI9SRuPuWwhevmuIEkXuxO85Hw63HOxti11lZ4mrzDlT4wSMlWcgQwTHkyfo0b77GU7/DAu0ywVbI= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kp0MgsE5jRcjRBxqU8a39ylZX2EsXRHMSwx+uAEjVt8E9mw+oxziFbzB65qf18LUhyDJzLxKTo9R5MI3WrXIkKIjgmvwHfP/NWQAyphdZfykb69YpVCZZg+x1+WNWZMhRl+gayhi5KL/evw+fr9RK1ONuPtxY/O33HZzz6amLPe37dUl2E1hNSwc8466MSFfOqg5PRyWekOVZW1QpN/31nv9xwBPy8M0qc594IMcvwDZgWg1AW1shf2DOMBbTcitUKyrn8TiGLmczRWtNBvdfvmzxO7cvsFPDGH3R8tSyhr8AjKSfgaQmU9jENEXj23rooPR5F6OeR2Nu3Mp9qWmmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ApTVarJ59QZ+jrM8cWg+SvoRyk4djUFfphTv51+ToVk=; b=XLS79BQg1da+96jfHGK32SigEHVeZR0t3GNx+F3GsHLLZRfMOSp3K8b1MWAK4jrsarYQ8b8bNyOS/Djb8Fiei+BEjz3z6BPSfl0fBKTaRqN3NjvOoySGshQfJkIwYmRUc0IXCmbWGKDdLeZtUeMNmpe1nsKTbk9Lspho6gIWPmEn6JdbNsMfrVcH+GBSe8qAXvC3uvnZJQR/E1owRDe+R33tiY6XGsTWWJo+rHLuzaMfMF0MR837QHRrsoc/I8qGrbpktHdnJAGwsmGvIGvWeAwhg1lKEg10+l6KXVlNd4srFZQNvrmRADugAPiefmESqeFpuELc2gSafMCGYf2J2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=HOTMAIL.DE; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ApTVarJ59QZ+jrM8cWg+SvoRyk4djUFfphTv51+ToVk=; b=Pq16z0NzJ4i1M82b4rqm2+YBH8GA6owpWw7qxx2ZPhY5xTN6dwejLF+NQnVftmrW93WA6jPbZd6r/xkMGRg5GhdFgH2K8otBEM6mDQctueNclxJHMlzNVTOC7P09MjUtyZe5jNsGFXPDAao3WC6AefUYArZPJ3WOCfrhbcNVWK/vhNr7/pQNlB8w9y+VBIxZB9OF816Dm+8G1qxVbH2JHhDucx/2CjAUH5gLV1lAGgWmTaSVYQGq49tweAupZ0s2v7xWwVIx26zCDOyHrqd5DOyZLAySLW8t6yOE3zhI5/jN/I7BgfL1drSAB34bLEajOs5cTbdyw5zzimp7Zt1N0g== Received: from AS8P193MB1285.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:333::21) by AS8P193MB1350.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:38e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.36; Tue, 21 May 2024 04:57:56 +0000 Received: from AS8P193MB1285.EURP193.PROD.OUTLOOK.COM ([fe80::e65d:5dd2:5662:c61f]) by AS8P193MB1285.EURP193.PROD.OUTLOOK.COM ([fe80::e65d:5dd2:5662:c61f%4]) with mapi id 15.20.7587.035; Tue, 21 May 2024 04:57:56 +0000 Message-ID: Date: Tue, 21 May 2024 07:00:09 +0200 User-Agent: Mozilla Thunderbird Content-Language: en-US To: "gdb-patches@sourceware.org" From: Bernd Edlinger Subject: [PATCH] Fix signal unsafe call inside a signal X-TMN: [XIzXyJMXTz13w2tMeI9nq7hYyX/Oh+FO64fogC63sS/HCA6xscfGEGdOjom1P8PH] X-ClientProxiedBy: FR3P281CA0207.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a5::12) To AS8P193MB1285.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:333::21) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P193MB1285:EE_|AS8P193MB1350:EE_ X-MS-Office365-Filtering-Correlation-Id: a0e2afd0-cdc6-40a1-caff-08dc79529405 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|1602099003|3412199016|440099019; X-Microsoft-Antispam-Message-Info: VH7yVdYku9hsq9f3bDikQrC8XFeAMDjTkvrh+CVVYUpfj6L/KhYIAjglbykm2aJJyIAH8zIY+vFHwS7uytglfWHkhYaWBMjdzHsICgj7XFxaDksIwpQ3wNhO9q+iIR28fe15dhmMnVlfUOsT7IUnF44WRoSj66Yq5K10dXYkENofRDcHtsbdapWWsL+uwLLI8P3mHr0hIFrzGIAIclyQMUspi8MEB30g1gJ22BEfLT/kj1D8St5u3WccjG/1DxjSirsn1TxdfTZHTqpaFkfHUy7TPJalLypxcFH6jrqXFkUHj8iS9Lmj2cWqW2i7tgjlMpcelXsF+vmw1F1LGzYrnLDsFHNBbKlC0HBB+DNPGN6iMOyHbsRjaSEid+82MwgChraOSz1iqPcbP9Iu96ucy0ycdL406Iu8HljuMgo9LHnaMmlikZUmipvGs6bqOPmOv+HqH+ZjLk/JNLRP7na1YgPDuN7p0jiIZyecHsbBjykemU7ymlXoTLFG5SgLjwmXSshSJvLCqxMLrbN/3rtSszCsbNj5IxDjT8t00msKzXuLhUGIr1Lu9qFpQCyGYbOVRzy5RySV5Ou8pY5/WRiyPomLBLp/sJuczLkInJFyQlGJmQv+8FO23Tgwlfx65PmbdBI11j+3nn5XF8+QESP9ATsgK5RoTMz8yXuHFZ3bcWY= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?mUxRfCIfVWFc8NtYLr2rBCWviMpo?= =?utf-8?q?qbFLiK+TVNCv4IXgJGy38ImD0k7G1zlA2LnpWd+uEhDhDiRCZql4ygNPmLqp3B5RG?= =?utf-8?q?fnWstWc/ZAMzyzjYMRGvnq0gCQIkzgEIA5T738QZ+tNNJH0NuRS8zAdnnNgh7NpeE?= =?utf-8?q?eChP4YiblztqAY/CLQmO9geL/gd5Nrhd0jH/u17NNwvpAfkVrONBoScPQfna63UFv?= =?utf-8?q?ZJtOn0b+OZPOS1GpxR9QaThyamg9jgTvcwjoKW6mjtJRP4tOe1I4sKdyBR1VG//lN?= =?utf-8?q?zlojxuQMNxBZeH5aIlKRaM5/b5G3NkoHUTRmOeYPqaYweRVJjkYCtK78qrDqXTYKZ?= =?utf-8?q?xHH9NtkDIo7noc5BAlqthHLxcQrNpG1mKZ655Qbcu2bpDFgJao+OQIGO47T+Ob/it?= =?utf-8?q?76s3Wn4AVpn5GClv/wozYEsmjRDXd8Xl5W7zDFuIzoVrzOdIGrRxPc2pDB5NSijKp?= =?utf-8?q?TlG4kvO2s/fe7O1iMOOM0dj6dbCS/c5l2fifMtN0+/Ciwq/8SliXhTKKpSg/odlgA?= =?utf-8?q?73G7cAuWLzJVmgiJ6l60NwGj9kZTbyjKmYsiBIez0HU7A98aPxheMIMh/Hp1wQrEJ?= =?utf-8?q?sgai7R5llktr/M3hYaSMGhei+L4RyrUuiH11eOZ7Sip4xHDeOgWAADTnNC0wUeH9Q?= =?utf-8?q?TVe8nG8in4+fvF8cPe9bFdHtEKZ/BF3V/MqFk/EXOygtx12TmWazXoMXiXsmgfcFA?= =?utf-8?q?kp1uEGG2Q33mquAIiUUQBhS0RfPjJ7iNVOCUMguk5QzA4slwn4RnGPyoKHcFrxZHv?= =?utf-8?q?Tj+DnEbkr95aELWFjrJuLSEcYgaVr/rpsJSVhv72mVI1EDioJ522JLRi58zpFphSV?= =?utf-8?q?YB/U2U9DkjxkHienp7rQ5FDoXPTXAtgo66LxJyLUhUGIjujCOPUP0h5o3gLYnUg2J?= =?utf-8?q?TQ2+bMRQcmVZnpCbAX+f5CdtuB8mBMkmFWgQo2Gb0G35XKvR/FBWY20sFrn3T30xB?= =?utf-8?q?6deuOFm+AmvG3m9FOJ4Hp8mDKJia4Mrw6AJk5tORmf360H0HU0te2nha4uU7sGwn+?= =?utf-8?q?a2ZTbBtllf3YpXVgpc+jZX1QZKaxQmzuJFIrM1LqE2yAhkuDgJslPfELkMUkGnTxV?= =?utf-8?q?efK5BE/H7n8cbwuZ/vrTFf4bBRzTog2hXyFmChtscBrdO2iycuEwDPtz//l+q6553?= =?utf-8?q?x7NYQ+VOSuPFoIupXzcpqj+Ai6S+Dolhn0PxfSJSYKgzHNtWRlkZOl94uSIMMZm/n?= =?utf-8?q?nnM3fJFswTjHFww50yxZMaKrUIk4g2hRFWgHpKxzD/pkBT4a9hW6IcZ1p/37IQ87O?= =?utf-8?q?uEuUPyWhoodXyUMr?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-80ceb.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: a0e2afd0-cdc6-40a1-caff-08dc79529405 X-MS-Exchange-CrossTenant-AuthSource: AS8P193MB1285.EURP193.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2024 04:57:55.9201 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8P193MB1350 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org As mentioned in https://sourceware.org/bugzilla/show_bug.cgi?id=31713#c9 it can easily happen that the signal handler function handle_fatal_signal() uses various signal unsafe functions. Fix that by pre-computing the necessary language specific strings. --- gdb/bt-utils.c | 13 ++++++++--- gdb/event-top.c | 58 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 61 insertions(+), 10 deletions(-) diff --git a/gdb/bt-utils.c b/gdb/bt-utils.c index f658ce0d4bc..c5d266a0cac 100644 --- a/gdb/bt-utils.c +++ b/gdb/bt-utils.c @@ -125,6 +125,8 @@ gdb_internal_backtrace_1 () /* See the comment on previous version of this function. */ +static str_backtrace_incomplete = _("Backtrace might be incomplete.\n"); + static void gdb_internal_backtrace_1 () { @@ -139,7 +141,7 @@ gdb_internal_backtrace_1 () backtrace_symbols_fd (buffer, frames, gdb_stderr->fd ()); if (frames == ARRAY_SIZE (buffer)) - sig_write (_("Backtrace might be incomplete.\n")); + sig_write (str_backtrace_incomplete); } #else @@ -149,6 +151,11 @@ gdb_internal_backtrace_1 () /* See bt-utils.h. */ +#ifdef GDB_PRINT_INTERNAL_BACKTRACE +static const char *str_backtrace = _("----- Backtrace -----\n"); +static const char *str_backtrace_unavailable = _("Backtrace unavailable\n"); +#endif + void gdb_internal_backtrace () { @@ -161,12 +168,12 @@ gdb_internal_backtrace () gdb_stderr->write_async_safe (msg, strlen (msg)); }; - sig_write (_("----- Backtrace -----\n")); + sig_write (str_backtrace); if (gdb_stderr->fd () > -1) gdb_internal_backtrace_1 (); else - sig_write (_("Backtrace unavailable\n")); + sig_write (str_backtrace_unavailable); sig_write ("---------------------\n"); #endif diff --git a/gdb/event-top.c b/gdb/event-top.c index 0425bcf9f99..ec75356efc5 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -891,6 +891,29 @@ unblock_signal (int sig) return false; } +/* Signal safe language specific strings. */ + +#ifdef GDB_PRINT_INTERNAL_BACKTRACE +static const char *str_fatal_signal = _("Fatal signal: "); +static const char *str_sigsegv = strsignal(SIGSEGV); +#ifdef SIGFPE +static const char *str_sigfpe = strsignal(SIGFPE); +#endif +#ifdef SIGBUS +static const char *str_sigbus = strsignal(SIGBUS); +#endif +#ifdef SIGABRT +static const char *str_sigabrt = strsignal(SIGABRT); +#endif +static const char *str_unknown_signal = _("Unknown signal"); +static const char *str_fatal_error_detected_gdb_will_now_terminate = + _("A fatal error internal to GDB has been detected, " + "further\ndebugging is not possible. GDB will now " + "terminate.\n\n"); +static const char *str_this_is_a_bug = _("This is a bug, please report it."); +static const char *str_for_instructions_see = _(" For instructions, see:\n"); +#endif + /* Called to handle fatal signals. SIG is the signal number. */ static void ATTRIBUTE_NORETURN @@ -909,19 +932,40 @@ handle_fatal_signal (int sig) if (bt_on_fatal_signal) { sig_write ("\n\n"); - sig_write (_("Fatal signal: ")); - sig_write (strsignal (sig)); + sig_write (str_fatal_signal); + switch (sig) + { + case SIGSEGV: + sig_write (str_sigsegv); + break; +#ifdef SIGFPE + case SIGFPE: + sig_write (str_sigfpe); + break; +#endif +#ifdef SIGBUS + case SIGBUS: + sig_write (str_sigbus); + break; +#endif +#ifdef SIGABRT + case SIGABRT: + sig_write (str_sigabrt); + break; +#endif + default: + sig_write (str_unknown_signal); + break; + } sig_write ("\n"); gdb_internal_backtrace (); - sig_write (_("A fatal error internal to GDB has been detected, " - "further\ndebugging is not possible. GDB will now " - "terminate.\n\n")); - sig_write (_("This is a bug, please report it.")); + sig_write (str_fatal_error_detected_gdb_will_now_terminate); + sig_write (str_this_is_a_bug); if (REPORT_BUGS_TO[0] != '\0') { - sig_write (_(" For instructions, see:\n")); + sig_write (str_for_instructions_see); sig_write (REPORT_BUGS_TO); sig_write ("."); }