From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id WUHyI00dI2q0kzYAWB0awg (envelope-from ) for ; Fri, 05 Jun 2026 15:02:37 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; secure) header.d=gmx.de header.i=ronald.hecht@gmx.de header.a=rsa-sha256 header.s=s31663417 header.b=HzgycLgT; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 902311E062; Fri, 05 Jun 2026 15:02:37 -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,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (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 7F9B01E062 for ; Fri, 05 Jun 2026 15:02:36 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2B9D14BA799F for ; Fri, 5 Jun 2026 19:02:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2B9D14BA799F Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=gmx.de header.i=ronald.hecht@gmx.de header.a=rsa-sha256 header.s=s31663417 header.b=HzgycLgT Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by sourceware.org (Postfix) with ESMTPS id E6AC34BA5435 for ; Fri, 5 Jun 2026 19:02:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E6AC34BA5435 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E6AC34BA5435 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1780686129; cv=none; b=iWY0zgCFaT3Yxbr3xmTdq6drHaz2+eytdce8oGXjr/g4JfR7TEuary2B69CfhH62nRHvM7z0Q8ZDaqBFeAwxAyd6tOqystrWCy53E99kthilLWb6prPqjWn2R2VxdT5I5crKDjqyjJyffxLPAF1Zak5HcnR9MbGlgTEZKNG+biI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1780686129; c=relaxed/simple; bh=EebMedT4pXmYTPGbWqdF0ISQNE7GhIVoZlwuU3aHdaI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=GDg4mstv84Hgr8XZ9V0c109liVcLml5VsrJKk5Rn5fJRPIm1z9gETz52ajhFU9j7tdkFxW7bYM/QW503ZVi0SDvMvRKlNFrZK4nRXJIfdZp8aS7QHY09zh9t2zarpSHG3dJVghFABOUPFMaR2q3pAsEG4SA7Y8kfWujHqO57oWI= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, secure) header.d=gmx.de header.i=ronald.hecht@gmx.de header.a=rsa-sha256 header.s=s31663417 header.b=HzgycLgT DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E6AC34BA5435 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780686127; x=1781290927; i=ronald.hecht@gmx.de; bh=wYztc/6Hzw0/sQa7VQDVppZf3tC175hOHAxla+5luYY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID: MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=HzgycLgTEWM3tTfCHb4iuczWKqaqy0fJ+f1OoaZpXbNxjxYtqGY8uClpnx4VWq6m LEGTJbMzUcVtLYZIpWHxRYveHmUElCMZqZlFvNJNoK95XvKKA7/syov85VEGe38Gq 0MFQGjHVPX3sSI2TqM3yvGw2lrZZrqBR6OP+J4yeu+CmrS6P6Ho9vBLc3ZZBb9+mG UfhANHRiUyVllkSTqVYroLeg3sOrFXOJj7r7UPXY9SlPvMN3ghwPaTEyTpR2kvYkR aceZTR5mi/D23NQOtqchPQsA2M/mrxbNb3nGRCQ6dvhYOlMFNiE3v3M5+AhQZPdRn jEP0kAW51Ia+2A8ZAw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N7i8Y-1xHdtM1xP0-00r6hB; Fri, 05 Jun 2026 20:57:02 +0200 From: Ronald Hecht To: gdb-patches@sourceware.org Cc: Ronald Hecht Subject: [PATCH] gdb: z80: Fix endless backtrace loop and assertion crashes Date: Fri, 5 Jun 2026 20:56:47 +0200 Message-ID: <20260605185647.47976-1-ronald.hecht@gmx.de> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:6aQy//ZqH+gJhsg/EW2Kf6BEpronwsoBejmkJrcQkwP+meM0l9U 7rj4hK8IzLDOxsLWpc5XwVZQ4OT2X4bhZ7qyL6kH0wZVimIH47u66PN8fs8gmMUyoBbdgDb MnFdRNGyBpfAJefJ+6L8nh6SNIV2HX/44cFgh9pvcCIjfSWmctOf5jUqfQQPfvCpMPodtYf R5i+LJTPoDxrqNs0L44OQ== UI-OutboundReport: notjunk:1;M01:P0:SGGWf/5J+40=;fsYTJdRqXhYBBD4ZbVS/iDErfPB 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 silJ8Ehhv18CbY6wOVUqU9pwLaE= 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 This patch fixes two distinct issues in the Z80 frame unwind cache: 1. An infinite loop in the stack pointer wrapping logic. The `for (;; ++sp= )` loop could run endlessly if the overflow condition `sp < this_base` was never met due to 16-bit address space wrapping. Introduced a `loop_coun= t` to break out after 4 iterations as a sensible heuristic for Z80. 2. A potential internal GDB assertion failure. The code previously called `.addr()` directly on saved registers without verifying if they actuall= y held an address, causing crashes when encountering unexpected register states (e.g. REG_UNKNOWN). Added a check for `.is_addr()` beforehand. gdb/ChangeLog: * z80-tdep.c (z80_frame_unwind_cache): Prevent infinite loop by adding loop_count. Check is_addr() before calling addr(). =2D-- gdb/z80-tdep.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c index 3a0d5f7e393..5e1c3a877b3 100644 =2D-- a/gdb/z80-tdep.c +++ b/gdb/z80-tdep.c @@ -597,6 +597,7 @@ z80_frame_unwind_cache (const frame_info_ptr &this_fra= me, CORE_ADDR sp; CORE_ADDR sp_mask =3D (1 << gdbarch_ptr_bit(gdbarch)) - 1; enum bfd_endian byte_order =3D gdbarch_byte_order (gdbarch); + int loop_count =3D 0; /* Assume that the FP is this frame's SP but with that pushed stack space added back. */ this_base =3D get_frame_register_unsigned (this_frame, Z80_SP_REGNU= M); @@ -604,7 +605,7 @@ z80_frame_unwind_cache (const frame_info_ptr &this_fra= me, for (;; ++sp) { sp &=3D sp_mask; - if (sp < this_base) + if (++loop_count > 4 || sp < this_base) { /* overflow, looks like end of stack */ sp =3D this_base + info->size; break; @@ -644,9 +645,14 @@ z80_frame_unwind_cache (const frame_info_ptr &this_fr= ame, /* Adjust all the saved registers so that they contain addresses and no= t offsets. */ for (i =3D 0; i < gdbarch_num_regs (gdbarch) - 1; i++) - if (info->saved_regs[i].addr () > 0) - info->saved_regs[i].set_addr - (info->prev_sp - info->saved_regs[i].addr () * addr_len); + { + if (info->saved_regs[i].is_addr ()) + { + if (info->saved_regs[i].addr () > 0) + info->saved_regs[i].set_addr + (info->prev_sp - info->saved_regs[i].addr () * addr_len); + } + } =20 /* Except for the startup code, the return PC is always saved on the stack and is at the base of the frame. */ =2D-=20 2.43.0