From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 6BVpGQCdD2gOcAoAWB0awg (envelope-from ) for ; Mon, 28 Apr 2025 11:21:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=simark.ca; s=mail; t=1745853696; bh=A12uBZkVpwP4zT/uscLMfu+mEM0bNP35GqcI8OOMVDk=; h=Date:Subject:To:References:From:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=d1KI+/GlKYkyjOedMF9/gFJe11RuR8BRCvNGYu/dvvJmhFrL4C2yk122HXOHCiphJ 5uN0Jm9x4orJnkBjEpLiixW1DGPKw2W2eVuwxxXhga4pbyfWQXxslkMMqvYZHdJGlV 1qN3TRg1uzgwV0wa/ox9TmATjOLr+Uml2X3JqRYQ= Received: by simark.ca (Postfix, from userid 112) id 53DE71E10E; Mon, 28 Apr 2025 11:21:36 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,WEIRD_PORT autolearn=unavailable autolearn_force=no version=4.0.1 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=simark.ca header.i=@simark.ca header.a=rsa-sha256 header.s=mail header.b=CXJshsY2; dkim=pass (1024-bit key) header.d=simark.ca header.i=@simark.ca header.a=rsa-sha256 header.s=mail header.b=p4wMiTHw; dkim-atps=neutral Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 446401E0C0 for ; Mon, 28 Apr 2025 11:21:35 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D96843857C58 for ; Mon, 28 Apr 2025 15:21:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D96843857C58 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=simark.ca header.i=@simark.ca header.a=rsa-sha256 header.s=mail header.b=CXJshsY2; dkim=pass (1024-bit key) header.d=simark.ca header.i=@simark.ca header.a=rsa-sha256 header.s=mail header.b=p4wMiTHw Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id C1D3B3858C60 for ; Mon, 28 Apr 2025 15:21:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C1D3B3858C60 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=simark.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=simark.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C1D3B3858C60 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1745853662; cv=none; b=UtkbtguCNaRPdC40SqAjMGymUMA0r/96V57JwNua9QAyFgPMyuy6hE21F2RoI0kocBkfBNvTd4M4HTJqdJG0AgmqAuCpZ4nbl1xYiyWZzUEWgkizYYbbEWa83cniP4Qd6/MWRyUjT3hluuoNcMrthUw1t8zqk8VM5aLpANdR354= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1745853662; c=relaxed/simple; bh=A12uBZkVpwP4zT/uscLMfu+mEM0bNP35GqcI8OOMVDk=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:MIME-Version: Subject:To:From; b=LCLt2TU7/ImGeEJZ5qdf88FO/JzTjDwiHjpG0eH5O+EmUKl96afP3tdNSDh7ozb5fdAXyRw6sOat4gefaCQTnaaHFZOVg2pnuzDWNZ85yWt9jtPORmbqrCSVI6sSdo/ImJ9k6tCOlU+BuXKDkOrhiZ6u1QxlV1dxVaVDhbnKekc= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C1D3B3858C60 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=simark.ca; s=mail; t=1745853662; bh=A12uBZkVpwP4zT/uscLMfu+mEM0bNP35GqcI8OOMVDk=; h=Date:Subject:To:References:From:In-Reply-To:From; b=CXJshsY2jBNh8+5VdrmtczEWC3d7Gl1/LJLipbET/uhrxTTFg5iI1iV8LwuXO4iWd vKVy1WjFiXAT6Q7ZsvoiwyTM843jWK5NdxJL9d3oprh27+Em5WHIqUVJnH8eB0UF2H zo/Axt4jb/W2i/feJMsrs8dlw3TKpTigHu24pgp0= Received: by simark.ca (Postfix, from userid 112) id 5A3011E10E; Mon, 28 Apr 2025 11:21:02 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=simark.ca; s=mail; t=1745853661; bh=A12uBZkVpwP4zT/uscLMfu+mEM0bNP35GqcI8OOMVDk=; h=Date:Subject:To:References:From:In-Reply-To:From; b=p4wMiTHwp/6BAN6RdToEU08X6rQ1tYjEKx9B6e8gXymkvnn1sR3WGeSD1BjkBrcZU 9qoRcDI/Q+cVgWF2u20fSGmV7ELcgdSEV26td3G0YsjXJB8roAtniq6jOe0pWrROxN cV1+luwxq9V6vurLLgNAeNIBp12jFcmEKYdOZRos= Received: from [172.16.0.192] (96-127-217-162.qc.cable.ebox.net [96.127.217.162]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 10F021E0C0; Mon, 28 Apr 2025 11:21:00 -0400 (EDT) Message-ID: <0eedfe61-5b44-45c2-806c-493f75bb881b@simark.ca> Date: Mon, 28 Apr 2025 11:21:00 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] [gdb] Handle nullptr stream in gdb_flush To: Tom de Vries , gdb-patches@sourceware.org References: <20250425171845.9934-1-tdevries@suse.de> <20250425171845.9934-3-tdevries@suse.de> Content-Language: fr From: Simon Marchi In-Reply-To: <20250425171845.9934-3-tdevries@suse.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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~public-inbox=simark.ca@sourceware.org On 4/25/25 1:18 PM, Tom de Vries wrote: > Using the trigger patch described in the previous commit, I get: > ... > $ gdb > (gdb) error detected on stdin > > Fatal signal: Segmentation fault > ----- Backtrace ----- > 0x64c7b3 gdb_internal_backtrace_1 > /data/vries/gdb/src/gdb/bt-utils.c:127 > 0x64c937 _Z22gdb_internal_backtracev > /data/vries/gdb/src/gdb/bt-utils.c:196 > 0x94db83 handle_fatal_signal > /data/vries/gdb/src/gdb/event-top.c:1021 > 0x94dd48 handle_sigsegv > /data/vries/gdb/src/gdb/event-top.c:1098 > 0x7f372be578ff ??? > 0x10b7c0a _Z9gdb_flushP7ui_file > /data/vries/gdb/src/gdb/utils.c:1527 > 0xd4b938 gdbpy_flush > /data/vries/gdb/src/gdb/python/python.c:1624 > 0x7f372d73b276 _PyCFunction_FastCallDict > Objects/methodobject.c:231 > 0x7f372d73b276 _PyCFunction_FastCallKeywords > Objects/methodobject.c:294 > 0x7f372d794a09 call_function > Python/ceval.c:4851 > 0x7f372d78e838 _PyEval_EvalFrameDefault > Python/ceval.c:3351 > 0x7f372d796e6e PyEval_EvalFrameEx > Python/ceval.c:754 > 0x7f372d796e6e _PyFunction_FastCall > Python/ceval.c:4933 > 0x7f372d796e6e _PyFunction_FastCallDict > Python/ceval.c:5035 > 0x7f372d6fefc8 _PyObject_FastCallDict > Objects/abstract.c:2310 > 0x7f372d6fefc8 _PyObject_Call_Prepend > Objects/abstract.c:2373 > 0x7f372d6fe162 _PyObject_FastCallDict > Objects/abstract.c:2331 > 0x7f372d700705 callmethod > Objects/abstract.c:2583 > 0x7f372d700705 _PyObject_CallMethodId > Objects/abstract.c:2640 > 0x7f372d812a41 flush_std_files > Python/pylifecycle.c:699 > 0x7f372d81281d Py_FinalizeEx > Python/pylifecycle.c:768 > 0xd4d49b finalize_python > /data/vries/gdb/src/gdb/python/python.c:2308 > 0x9587eb _Z17ext_lang_shutdownv > /data/vries/gdb/src/gdb/extension.c:330 > 0xfd98df _Z10quit_forcePii > /data/vries/gdb/src/gdb/top.c:1817 > 0x6b3080 _Z12quit_commandPKci > /data/vries/gdb/src/gdb/cli/cli-cmds.c:483 > 0x1056577 stdin_event_handler > /data/vries/gdb/src/gdb/ui.c:131 > 0x1986970 handle_file_event > /data/vries/gdb/src/gdbsupport/event-loop.cc:551 > 0x1986f4b gdb_wait_for_event > /data/vries/gdb/src/gdbsupport/event-loop.cc:672 > 0x1985e0c _Z16gdb_do_one_eventi > /data/vries/gdb/src/gdbsupport/event-loop.cc:263 > 0xb66f2e start_event_loop > /data/vries/gdb/src/gdb/main.c:402 > 0xb670ba captured_command_loop > /data/vries/gdb/src/gdb/main.c:466 > 0xb68b9b captured_main > /data/vries/gdb/src/gdb/main.c:1344 > 0xb68c44 _Z8gdb_mainP18captured_main_args > /data/vries/gdb/src/gdb/main.c:1363 > 0x41a3b1 main > /data/vries/gdb/src/gdb/gdb.c:38 > --------------------- > A fatal error internal to GDB has been detected, further > debugging is not possible. GDB will now terminate. > > This is a bug, please report it. For instructions, see: > . > > Segmentation fault (core dumped) > $ q > ... > > Fix this in gdb_flush by checking for nullptr stream parameter, such that we > get instead: > ... > $ gdb > (gdb) error detected on stdin > $ q > ... > > Tested on x86_64-linux. > --- > gdb/utils.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/gdb/utils.c b/gdb/utils.c > index ce3c26ef140..90063e4a96d 100644 > --- a/gdb/utils.c > +++ b/gdb/utils.c > @@ -1524,7 +1524,8 @@ pager_file::flush () > void > gdb_flush (struct ui_file *stream) > { > - stream->flush (); > + if (stream != nullptr) > + stream->flush (); Can we add the nullptr check only where it's needed? I'm thinking that we should move towards removing gdb_flush (replacing the call sites to call ui_file::flush directly). And when we do so, we wouldn't want to add nullptr checks everywhere that gdb_flush is currently called. Simon