From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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?B?bVV4UmZDSWZWV0ZjOE50WUxyMnJCQ1d2aU1wb3FiRkxpSytUVk5DdjRJWGdK?= =?utf-8?B?R3kzOEltRDBrN0cxemxBMkxucFdkK3VFaERoRGlSQ1pxbDR5Z05QbUxxcDNC?= =?utf-8?B?NVJHZm5Xc3RXYy9aQU16eXpqWU1SR3ZucTBnQ1FJa3pnRUlBNVQ3MzhRWit0?= =?utf-8?B?Tk5KSDBOdVJTOHpBZG5uTmdoN05wZUVlQ2hQNFlpYmx6dHFBWS9DTFFtTzln?= =?utf-8?B?ZUwvZ2Q1TnJoZDBqSC91MTdOTnd2cEFma1ZyT05Cb1NjUFFmbmE2M1VGdlpK?= =?utf-8?B?dE9uMGIrT1pQT1MxR3B4UjlRYVRoeWFtZzlqZ1R2Y3dqb0tXNm1qdEpSUDR0?= =?utf-8?B?T2UxSTRzS2R5QlIxVkcvL2xOemxvanh1UU1OeEJaZUg1YUlsS1JhTTUvYjVH?= =?utf-8?B?M05rb0hVVFJtT2VZUHFhWXdlUlZKamtZQ3RLNzhxckRxWFRZS1p4SEg5TnRr?= =?utf-8?B?RElvN25vYzVCQWxxdGhITHhjUXJOcEcxbUtaNjU1UWJjdTJicERGZ0phbytP?= =?utf-8?B?UUlHTzQ3VCtPYi9pdDc2czNXbjRBVnBuNUdDbHYvd296WUVzbWpSRFhkOFhs?= =?utf-8?B?NVc3ekRGdUl6b1Zyek9kSUdyUnhQYzJwREI1TlNpaktwVGxHNGt2TzJzL2Zl?= =?utf-8?B?N08xaU1PT00wZGo2ZGJDUy9jNWwyZmlmTXROMCsvQ2l3cS84U2xpWGhUS0tw?= =?utf-8?B?U2cvb2RsZ0E3M0c3Y0F1V0x6SlZtZ2lKNmw2ME53R2o5a1pUYnlqS21Zc2lC?= =?utf-8?B?SWV6MEhVN0E5OGFQeGhlTUlNaC9IcDF3UXJFSnNnYWk3UjVsbGt0ci9NM2hZ?= =?utf-8?B?YVNNR2hlaStMNFJ5clV1aUgxMWVPWjdTaXA0eEhEZU9nV0FBRFRuTkMwd1Vl?= =?utf-8?B?SDlRVFZlOG5HOGluNCtmdkY4Y1BlOWJGZEh0RUtaL0JGM1YvTXFGay9FWE95?= =?utf-8?B?Z3R4MTJUbVdhelhvTVhpWHNtZ2ZjRkFrcDF1RUdHMlEzM21xdUFJaVVVUUJo?= =?utf-8?B?UzBSZlBqSjdpTlZPQ1VNZ3VrNVF6QTRzbHduNFJuR1B5b0tIY0ZyeFpIdlRq?= =?utf-8?B?K0RuRWJrcjk1YUVMV0Zqckp1TFNFY1lnYVZyL3Jwc0pTVmh2NzJtVkkxRURp?= =?utf-8?B?b0o1MjJKTFJpNTh6cEZwaFNWWUIvVTJVOURranhrSGllbnA3clE1RkRvWFBU?= =?utf-8?B?WEF0Z282Nkx4SnlMVWhVR0lqdWpDT1BVUDBoNW8zZ0xZblVnMkpUUTIrYk1S?= =?utf-8?B?UWNtVlpucENiQVgrZjVDZHR1QjhtQk1rbUZXZ1FvMkdiMEczNVhLdlIvRkJX?= =?utf-8?B?WTIwc0ZybjNUMzB4QjZkZXVPRm0rQW12RzNtOUZPSjRIcDhtREtKaWE0TXJ3?= =?utf-8?B?NkFKazV0T1JtZjM2MEgwSFUwdGUybmhhNHVVN3NHd24rYTJaVGJCdGxsZjNZ?= =?utf-8?B?cFhWZ3BjK2paWDFRWktheFFtenVKRklyTTFMcUUyeUFoa3VEZ0pzbFBmRUxr?= =?utf-8?B?TVVrR25UeFZlZks1QkUvSDduOGNid3VaL3ZyVEZmNGJCUnpUb2cyaFh5Rm1D?= =?utf-8?B?aHRzY0JyZE8yaXljdUV3RFB0ei8vbCtxNjU1M3g3TllRK1ZPU3VQRm9JdXBY?= =?utf-8?B?emNwcWorQWk2UytEb2xobjBQeGZTSlNZS2d6SE50V1Jsa1pPbDk0dVNJTU1a?= =?utf-8?B?bS9ubm5NM2ZKRnN3VGpIRnd3NTB5eFpNYUtyVUlrNGcyaFJGV2dIcEt4ekQv?= =?utf-8?Q?pkBT4a9hW6IcZ1p/37IQ87OuEuUPyWhoodXyUMr?= 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 List-Id: 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 ("."); } -- 2.39.2