From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id OS+yLDmBmWosTyUAWB0awg (envelope-from ) for ; Thu, 03 Sep 2026 10:16:25 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=yahoo.de header.i=@yahoo.de header.a=rsa-sha256 header.s=s2048 header.b=etwi9MHr; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A44621E033; Thu, 03 Sep 2026 10:16:25 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.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,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.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 8D13A1E033 for ; Thu, 03 Sep 2026 10:16:22 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 511174BAE7ED for ; Thu, 3 Sep 2026 14:16:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 511174BAE7ED Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=yahoo.de header.i=@yahoo.de header.a=rsa-sha256 header.s=s2048 header.b=etwi9MHr Received: from sonic.asd.mail.yahoo.com (sonic-euwe4-0022.asd.mail.yahoo.com [34.2.86.21]) by sourceware.org (Postfix) with ESMTPS id B7DF74BAE7E8 for ; Thu, 3 Sep 2026 14:15:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B7DF74BAE7E8 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=yahoo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B7DF74BAE7E8 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=34.2.86.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788444947; cv=none; b=FovVMKWCsQyuxvXo1mOann3eZ1E70oL3qgsTxucvHaZH6stH3M4eOQWIXnoK+2Z/Fcz3FZd/wx9Jf3ALlfi5lEIT3p+YjIPhs9hOEr4yUtHSABoQqaOZOiKFS8FLjaRm6Yk83LXgYjmchtD/Ys2OUnlG0BAbeCyNvmxbwXuTs6U= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788444947; c=relaxed/simple; bh=NHGKpQajP5x28eto4D5qVfH3iuXSrfRXLCbTwRdK8Kg=; h=DKIM-Signature:Date:From:To:Message-ID:Subject:MIME-Version; b=N6FlVMfCdKxy/smhT3yOJGiUMKqWzvlc3QCjqsWq+gH38Rk4K2n5Oa4sFf5pgYIVIEG3a/jiePUoHSS0+ztvv40M/Nt6VQIRoYICj1xQHsWMba4su9t4m0jW5HlQ0ZZ5jzE8iktNoqFmmemQ9xU1g6yXcg1t2suwE+mCH6j9Nfs= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=yahoo.de header.i=@yahoo.de header.a=rsa-sha256 header.s=s2048 header.b=etwi9MHr DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B7DF74BAE7E8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1788444945; bh=NHGKpQajP5x28eto4D5qVfH3iuXSrfRXLCbTwRdK8Kg=; h=Date:From:To:In-Reply-To:References:Subject:From:Subject:Reply-To; b=etwi9MHrR8PxF96sJM+xJCMUftHRJFjoPd/0okUXI+vsAwyquOEpbfZKP6oQnu/zg5HZouAAj7UpTnydJ5ZPNzHpK//5ZCgnvUpM04aHN+EQzSQUhoqAbugwIgV3lbBwG++tg4FXtlnLQuNwvnXW/OIkUjgb6kVDLCzK+w1Y1sTYLW/cpH0JHuO07qEMLgK9hogGWe0LeAipxvX9NLDwL1lqNUblVYxjtlDcfCa/1fNL5tAoNoyOzkFKxPNVqZQQHe+pNuWOtWR+z6LMAqA3so16pbYsgWH3Mw7RYXNK84Lbm/z11/lnxNmZtUceexbbc/dc6wSxPssAqEcw24yAjg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1788444945; bh=qSn6UWUP+8Rj5OkS6DO/St8WgV1+axmdAUa/1gq51ld=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=I1ERAgK4zumLxuluJfxZ2BvjCZvGB/0qYd4bSuLOobEbZcHrkFPCZgmZ3HnRUzLvigzWp5X/iwyGDJiYFpaMxPfJQiIYzFRcpg5W2a9UiMTGhaDzcOKjZJvOteK/GFADBVG2F9E7+ck+snsJaugWgjXBSjtrgMN/+CbRXZQY+eFxe/ghQH4oxAmHbt82PubUKB7o3Y9PCqkMrbi1e9LX45QqQn9jX1PcoKcri7wqoX115l8RetW6L93GX1162d9iiAVXYP8TPVEECf5V1KukYMYzMKbkr/fq78jK8Ibdq1DS/qsi3ZbrxmjdsljWr+EHIcrrC2pF47c69QdEwE8Jzw== X-YMail-OSG: S7HSXHoVM1m_XU9y3dHmeOhLMK7ZwqPmz_Rs8JtAZ2kA6IAQi8uGG4UMIkYl4TD 3H5UKDJe6VpTkn.yzMOqTXQtuLic_sSB5mOwej5ADfKDOV.E_DYkW.t5tn6Ae9IGHe71LLn2yN5Z KC5Wj8hdKMb4QxI_KR9g2YIp0bH_AioFk5cyRLmiAowYLP.y6xZkpqp7c.1fzUTE2GNaCdMGyU7. kEnIboxH06B716nEQTEV3hgGitYWtghaz3EH.VGbJt4f5L_Zp6KzgWWoiSenOBOZ8p4mXOBJQF4H qXNjl8fbKZl1yay2SZM3ST3BAetXQfVniaINufDd6bscoDkqsDa5EO4kVrVfSrm1DulAxEIm8tts WAi66JjkT9DWeRyrAFsbTlfBZo8GWAagCHlAKcKY6Bbo7Kn.AhaUfllm1hkvm87usi0Ir1lo9tve Q2OC8Zw3rintcdauso4EEQ_HRdXTyD5EkYZztl2kNkS._SRM18gKIt6Rt0St09e0_SFpAAf3HgYW cjLwTSk_b6oFvNuaYv.SGHEk0D88OhJkMQg8DETE9upN2lS76DLQ8zGixc2mBkCFjIeMBr4lnhiK TI82dUY1kbRCb1z9t293LiLOhxTpiwZxKJ0ZelId27tZEHYiVDKjTJ8jlDOfaOt0ajdSjWs0tMEP RUwO6uxyE3AiGSmQ2rZbo9v5v4BpSGSHW60JXouqvKguDl6rW65bfGZyvUtIsSOVgAg4yrxA_GHr uSyUsymwMCmb5UIqOrNsjHcMSMLYv4kPPHLmzWfTUJ18RT2g10j5iz6J1OhBHYkDHfxne93f6sZg kpudxXMVfkT6aMLwxbqYMnRdR0eHteb4Ew96IDBgyF0XW8Y_YV9euXsdNI2yK0rN1xV4dSwzPoPY 2dlx.BuYusS0osEu41id1zygUYg7jwlGbegSu6mqanl4MHja5xEfiTiLJUM4WT5eLG7G16YqG2.q zvm_wEZErCXlt.JkK2chCWpMY5q.0LsHkUUPm9AwimeFFY950lAy1NrKsI1SbgRHXPA0Dbta6S1h _K0MVn1lLtnHQeH5rYkJE7T_3l8kfQvNAzRxbP7LMdZq00YOKQfaIklmu16oedcJIWCxRBQXgpBo 75kULTOFLVNsritfh2dAWDJYcuhfeyPbuc.K9bxjrCK6VOxOI5317tSyRcS_6T7tgWEXKE8W8zF. e5f6A6MP9K7bJhS6H7b2C5MoA7glDNIwArQvJ_yF_2k3TW2JONbIwFeogI21GN1w1Aek5jDgBwAk NwjzyoRBJwCjVdrMvHufW0zZEQGX3_g5IQOzDGtQihJF_c2RPWgteInAoopTdCCRqIpHG1q4rVnq 6Cgr0FaUGLrXSlnZfgq1hDpAK3cfZMY7czqz2HSlm2YNyQ1674F2KQFHumsPoTlWX1ho9gtehib8 OBc19ZLIdB72RsRzWdUY6wUKM4SVL7rsSpQnpPsLs1eFXfB0dr9Jbn0q9tBMWdhfLImGmKVI9mxU bLDv8sUQTlSEmE02Pqbsu9J7_Wbdw8bmBuku7iCqfp_9qNQN.zCVUMMR0Nf5RapRODgTJlqdnu81 _4M.QhvD8kLQl3ty6JDYMWREFDhbHNLy73GS0gxIhIZPeNi5gqvE8Gohid6KUXC5uvq4BcEVUelH h3SQXqThxiiRjrz4IHapOALMK_SrKGmnFhrc9.JiGLBJhrF208RV2Yvh28WTQH3hjBNywGljBD1U x.cmKHeFgLtARzUFDqg1m3QwrZTOO7kpuZBhg2oemJJ8XW1hArgbBckvBJvajV980VjJW3YXcQGa HZ2kyEaqeWn21BU8lbZpOfekD3xwWjAlO8RWcIPqUc4lL5qJUMrnneNLw6HxZzXNysb.FDrjRb8p 4BbnzNxNz6HYoRVlHERMExkQEL9OWs4aLJb.1wvqIvOL5ZmWnUT3AQv2ujjHPtOKML98MnG9rc7_ SuctLvfSYC5gVg2euVQ_xg_VoY8POUESHIk7BpBtS4hnqj1NL0TRFegyLLVP8ll8EqAvwkV8Dp5G klJwrd1R8mvm_ZCZUIiQpO4XSeNaHx032rJxUD4gsIwugyUyds9ZcQbW7BUTh5zycHdVlXSs8fYx 6vNnFeYMeqRPN0dPoOA-- X-Sonic-MF: X-Sonic-ID: 6a512e7e-b276-4844-8c8b-cfc5c07165bb Received: from sonic.gate.mail.ne1.yahoo.com by mail-asdoutdeli-p-cin-euwe4-prod-sonicconsumer-svc-102 with HTTP; Thu, 3 Sep 2026 14:15:45 +0000 Date: Thu, 3 Sep 2026 14:15:39 +0000 (UTC) From: Hannes Domani To: "gdb-patches@sourceware.org" , Tom Tromey Message-ID: <761954008.936951.1788444939778@mail.yahoo.com> In-Reply-To: <20260902180928.3545493-1-tromey@adacore.com> References: <20260902180928.3545493-1-tromey@adacore.com> Subject: Re: [PATCH] Return correct thread for cached event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.26460 YMailCLDNorrin 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 Am Mittwoch, 2. September 2026 um 20:10:06 MESZ hat Tom Tromey Folgendes geschrieben: > Commit 2e1aacf15a9 ("Windows gdb+gdbserver: Make current_event > per-thread state") introduced a regression.=C2=A0 This was detected by th= e > AdaCore internal test suite in a somewhat unusual configuration: when > using "attach" with a 32-bit Windows process, an extra stop would be > generated, like: >=C2=A0 >=C2=A0 =C2=A0 =C2=A0(gdb) break break_me >=C2=A0 =C2=A0 =C2=A0Breakpoint 1 at 0x1211a04: file pck.adb, line 18. >=C2=A0 =C2=A0 =C2=A0(gdb) continue >=C2=A0 =C2=A0 =C2=A0Continuing. >=C2=A0 >=C2=A0 =C2=A0 =C2=A0Thread 4 received signal SIGINT, Interrupt. >=C2=A0 =C2=A0 =C2=A0[Switching to thread 4 (Thread 6652)] >=C2=A0 =C2=A0 =C2=A00x77034210 in ntdll!RtlUserThreadStart () from C:/Wind= ows/SysWOW64/ntdll.dll >=C2=A0 > Here, we expect to stop in break_me, but instead stop in some Windows > DLL. >=C2=A0 > I tracked this down to this hunk in the aforementioned commit: >=C2=A0 > -=C2=A0 =C2=A0 =C2=A0 return debug_event_ptid (&windows_process.current_e= vent); > +=C2=A0 =C2=A0 =C2=A0 return ptid_t (windows_process.process_id, > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 windows_process.main_thread_id= , 0); >=C2=A0 > What happens here is that the "cached" stop ends up being reported in > the main thread, rather than whatever thread actually caused this > stop. >=C2=A0 > This patch fixes the problem by arranging to also cache the thread > ptid. >=C2=A0 > I am not sure whether the call to switch_to_thread here is really > needed; but since other returns seem to switch the thread, I thought > this one ought to as well. >=C2=A0 > I tested this using the AdaCore internal test suite. >=C2=A0 > As this is a regression, when it lands I also plan to apply it to the > gdb 18 branch. >=C2=A0 > Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=3D34583 > --- > gdbserver/win32-low.cc | 5 +++-- > gdbserver/win32-low.h=C2=A0 | 2 ++ > 2 files changed, 5 insertions(+), 2 deletions(-) >=C2=A0 > diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc > index 13c14a7c69f..55e4b2e2fe3 100644 > --- a/gdbserver/win32-low.cc > +++ b/gdbserver/win32-low.cc > @@ -337,6 +337,7 @@ do_initial_child_stuff (HANDLE proch, DWORD pid, int = attached) >=C2=A0 =C2=A0 =C2=A0 =C2=A0|| status.kind () =3D=3D TARGET_WAITKIND_STOPPE= D) >=C2=A0 =C2=A0 =C2=A0{ >=C2=A0 =C2=A0 =C2=A0 =C2=A0windows_process.cached_status =3D status; > +=C2=A0 =C2=A0 =C2=A0 windows_process.cached_ptid =3D current_thread->id; >=C2=A0 =C2=A0 =C2=A0 =C2=A0break; >=C2=A0 =C2=A0 =C2=A0} >=C2=A0 > @@ -1145,8 +1146,8 @@ win32_process_target::wait (ptid_t ptid, target_wai= tstatus *ourstatus, >=C2=A0 =C2=A0 =C2=A0fails).=C2=A0 Report it now.=C2=A0 */ >=C2=A0 =C2=A0 =C2=A0 =C2=A0*ourstatus =3D windows_process.cached_status; >=C2=A0 =C2=A0 =C2=A0 =C2=A0windows_process.cached_status.set_ignore (); > -=C2=A0 =C2=A0 =C2=A0 return ptid_t (windows_process.process_id, > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 windows_process.main_thread_id= , 0); > +=C2=A0 =C2=A0 =C2=A0 switch_to_thread (find_thread_ptid (windows_process= .cached_ptid)); > +=C2=A0 =C2=A0 =C2=A0 return windows_process.cached_ptid; >=C2=A0 =C2=A0 =C2=A0} >=C2=A0 >=C2=A0 =C2=A0while (1) > diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h > index 439adb84bc2..f4f02851734 100644 > --- a/gdbserver/win32-low.h > +++ b/gdbserver/win32-low.h > @@ -193,6 +193,8 @@ struct gdbserver_windows_process : public windows_nat= ::windows_process_info >=C2=A0 =C2=A0 =C2=A0 =C2=A0win32_wait should return it next, instead of fe= tching the next >=C2=A0 =C2=A0 =C2=A0 =C2=A0debug event off the win32 API.=C2=A0 */ >=C2=A0 =C2=A0struct target_waitstatus cached_status; > +=C2=A0 /* The ptid corresponding to the above status.=C2=A0 */ > +=C2=A0 ptid_t cached_ptid; >=C2=A0 >=C2=A0 =C2=A0/* True if current_process_handle needs to be closed.=C2=A0 *= / >=C2=A0 =C2=A0bool open_process_used =3D false; >=C2=A0 > base-commit: 49c379f8c2f8ff888b621b4a070dc1976b942577 > --=C2=A0 > 2.55.0 This fix works for me, and the change itself LGTM as well. With this windows_process_info::main_thread_id can be removed I think. Tested-By: Hannes Domani Hannes