From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-obe.outbound.protection.outlook.com (mail-eastus2azon11021018.outbound.protection.outlook.com [52.101.57.18]) by sourceware.org (Postfix) with ESMTPS id E20753858403 for ; Mon, 12 Sep 2022 18:42:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E20753858403 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=URkwdyHJmdnlzg7Q6bNRdkbdNEXkHv24Ce6/WUU5yJuHStD3Y1aFKdKGymg/BdGZ8LkzHbbeSdGe/CTsANblgZFsYZnGaX/e0v5e7P3NXfcxrZIirJXCri4850agNp4CZvbYizNH9WQrMrvTD2EVNFUnpJDl3PvCXLaDnjTiUTOZxiZJDfo3QiQ2Rflj8NnAmOwJTh1cgi56vRnJx6YUiLN3lep0U23URiNYM6pCbtlt6sHNPi+QjppkzYTnLDo+PWsyVV49wzdQJSGMGrRsMtc9l4Hpd5M2OZTg0YPP3LmtMQlUTWJtCHjqDVHGfpRnXuRsHjwt++GJFRLIu11RHg== 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=2CmZP2Txkjl+SkJKN2JIvgjKu1fZOcaAHZcMLFmUjnQ=; b=NT9zMnxg7EnMBIvoXZCafJm/5Mh+uyHjCXu5Gx5cQdEBBOGwl75ZIB0ps3OYl6ArNmsN3VTevrhJCWKJKwLS4HsYc0BrzDIalHBf+UUzLEzPk43BjkS8aQIS+JZjfT8EvL83QWxIQMsMMTC3hUOgoRbX+Hp6wyrPUN6fWCAeusKtweXxmfR8+lhD/+3OYsMDot5haUVemdEehY3qLcGgVWmCy9q7/UX2UJfPjgso0CPzmg7jOJ9AsJEJIVxPQzGmM7rUlSl451EAxQriHsy7YlFevG+6Yon+weEq9fzd54g3EfNqLD9wM5lFF09arLqwNzM3xmtAKO86oU9qIosn3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2CmZP2Txkjl+SkJKN2JIvgjKu1fZOcaAHZcMLFmUjnQ=; b=RWJUQslukMEnL8UaV7wpipInKSzw/zN7e2N6Jg7L/OEVNPWv+1ZsDjWow3eCae1uWlxey9hQ/Q8PDlZe+a0PG+1q4CZvykF/dhbXduIDG42gSUKLsNWyNN8ljxZuN6oj3id0++Q/n+5eKSCiXUohnYpa8mrs9wvHEUvG5x19Vr4= Received: from MN2PR21MB1439.namprd21.prod.outlook.com (2603:10b6:208:20a::15) by IA1PR21MB3547.namprd21.prod.outlook.com (2603:10b6:208:3e0::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.4; Mon, 12 Sep 2022 18:42:07 +0000 Received: from MN2PR21MB1439.namprd21.prod.outlook.com ([fe80::f4a7:ceab:8433:f994]) by MN2PR21MB1439.namprd21.prod.outlook.com ([fe80::f4a7:ceab:8433:f994%6]) with mapi id 15.20.5654.003; Mon, 12 Sep 2022 18:42:07 +0000 From: Bill Messmer To: Simon Marchi , "gdb@sourceware.org" Subject: RE: [EXTERNAL] Re: Issues With Thread Events In User Mode GDBServer Thread-Topic: [EXTERNAL] Re: Issues With Thread Events In User Mode GDBServer Thread-Index: AdjEhp9G/nFU1LmjTkSOuj12IeJY0wBiXbQAADGsXyA= Date: Mon, 12 Sep 2022 18:42:07 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=0b22abd3-9458-4d7a-8526-d33046a9a699;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-09-12T18:37:58Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR21MB1439:EE_|IA1PR21MB3547:EE_ x-ms-office365-filtering-correlation-id: cd96471d-a46d-44e0-9cd2-08da94ee7ea7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PLmFUHQupOiDmv9+mENoNFFQzT3apI7hfBaYrhvl6dtaPO8gK4qrvVFxItgrNC+HaMWEFrx6kkpj877G6boorL3Tkxe7eBMw5D4t750I46hEQpkA/cALyDttO168yNFWUTTNc8F2Nt+CmNNMnwK0TbMaEZ4yyuBX6IGl6I3MQb6aj4XN5FX6p7rfWaJKJmzCcbzovheyLOX8pX1AnPYm1Ap999byzBvUDf7BtXvQKGu2QivOIPcbR+iPHN4QstEiTbUVm+L7DI6Z8rYKY1qShyfuNUDM7l9AHbJ6fCeXVGFya82NWxwX+QkHo7S3WIXyZ2LLotAhXg5mx7LwmkXmjgVvrcbctk2Hx9EuDYj1LhIBGz566eRnnSyhYg2S6Ou4/K2zXvJHXRE8n3VkZEOvUnNNCwrzWVezn6GSPJiQ2jC42NuN8LncpVdYuwlrX0Ozq6niYfyCYae3aCf8EIIZ+h1d8mYuXhotyKUVyz0of37+8oBukNNcCGxJOqS4t/65fML2Os66m+sznmVB/rxBzppCbNT+ezuX46eC6mku/gvoB8dWHFAUd9BG7def/wDJ2FaxjeXaS9XfJ4E/rxZXgfLz36kiPcfFuAJGP26mvPS6b8pCQgseOgxZRp13W5pm/kSGuUaRZ8aFsZeCmKDb54V2NzcFm5umApVRl0ZJ203ojs8cftSLQXqFREMhVuSLqW4srHRV+gH+T/+Z3IQFaWSlyvHQKF786tV8NIg6Th5DfUB4rIPOKkZx+M65Ox4o/GyigWl4/tqP2tH/egUb7ToVUkKtVdXh1pvj1rU1HOtQhtczf3AGdau6TEtPyWH6yCSi6VL0/Vp6pAa4Hg06fg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR21MB1439.namprd21.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(366004)(39860400002)(136003)(376002)(346002)(451199015)(41300700001)(66446008)(8990500004)(10290500003)(33656002)(38070700005)(8676002)(76116006)(66946007)(52536014)(83380400001)(966005)(64756008)(66556008)(186003)(66476007)(55016003)(110136005)(82960400001)(316002)(82950400001)(38100700002)(5660300002)(86362001)(53546011)(71200400001)(6506007)(7696005)(9686003)(26005)(2906002)(122000001)(478600001)(8936002)(30864003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?B0Fl8ILeynFESKRz6n11TqreJUlKttCbMCsKHLYlCX+yPTZzwztZirHXDjkk?= =?us-ascii?Q?X0Bl2Y76lEQqM4kFENTm+7ugHR8g5Gba7v+1nznYdbr0mZCsUJWSvpx0A8L0?= =?us-ascii?Q?MAx4EIslrELixJ2DtkJHGTTp7xH3/yYyk3kro0vWaLxLxA/Wa6rsukXKFCvh?= =?us-ascii?Q?RTHptjcBKo9mCIik8H7KKn8DB8L91jKSZNlolmrKxLTyPRVkVzkAT1ZlBa1v?= =?us-ascii?Q?MHMYlkmdLzAroKpCcUK94pa+GAO8HcfIzw8GH0/WImakXAkqboZ1ylqC+Gt9?= =?us-ascii?Q?64rgROZMfV7+wJuJ3sXiCm33sXqN55ofKZYSD0SwQc7i5lXn95KPeieiTh94?= =?us-ascii?Q?5YtDh58yGAzC0Un/soid+TT1r+AarAE/LFd4OVZrsP0EQo1WnobbwcAXp9JZ?= =?us-ascii?Q?RylAKycLkV7qfOpCNyF9vUDR95QR0sz7o5eNAsVzpRd2kUm+q+Qy+2l0X1I+?= =?us-ascii?Q?nNc01zBviCSL8TIe+DL8M9RgwYV2QicqZFq+LIAnGcKR0oLfum3BrKhHwX8M?= =?us-ascii?Q?Q8Q62a6DDGYN0e072sj3gaLUxlv29iWniTcD5HY7Yq7D5AwBdyDDqSsu4Xjw?= =?us-ascii?Q?8/Kr/Mj6LzZ5Hcs3F5DmaLiOXO3yizHTpwQL3cQU6SBamvnq3BAen+pjm1Vg?= =?us-ascii?Q?no4XjpdA2ieX15jHAimWGZkyWyUv9IqUzai5a+RdTyVBGXutVB28bVoJvk4Z?= =?us-ascii?Q?BhTsm/bslj1XIo20g7kv7v/tfT9fNQGUIcPMoR9tmxinMUGyiAKj0+QKLtUO?= =?us-ascii?Q?Gra2I22UtuW5B+C7lmvvXPgkznjky6dLklKt+Szuf6/Ac8DSid0k2e7vpCJu?= =?us-ascii?Q?y+tQ3eMLOl5tym+UB83DWf1YHKu7aZ0Qn1p/o25nScQNfzkpJJ3cD+cY82mV?= =?us-ascii?Q?S2V/K2MNCV8phHSohzRYYCtnefW8cnU22psMRTGFJe6uaudB85YmHrZov+Xo?= =?us-ascii?Q?MDS6CS9gpNXkjpYaW9FhuGgegIdKH6cO6LLbzdZ47kUrV5jGwJ68c5fm7hi+?= =?us-ascii?Q?NL1QoV25zGmJXejQuKuPDI7KNeVZD1xff8m5v/OYyB3HocLI3N3Nm3PLSEOg?= =?us-ascii?Q?rfOFJ4eOS703C/inQksi6lhNtjdSFXyx/BXRewIDsxkhzFZgCH/FIrKqvbRS?= =?us-ascii?Q?ylVn0YgbGiLEVTIGDIZw/EbcvV/qpohE3rujMtScONY3071IZ+0UfPchjUiz?= =?us-ascii?Q?2TP+UCO/OlasPnTkVFesjTQkmGezU+c20MsXXsWCeW1DQNs5igelzmMcfbpb?= =?us-ascii?Q?VFPRVWz/B3SDp3ZFdINoqiKUqUcdhYzgpSACP2t2V0lvc3TdRfDxt2duX0Vz?= =?us-ascii?Q?NRvKiZb2BTAUEtuayNuwzWM/aeZZ9G516r+U/5MMJYXdxyJzdQiuRzFYc9Ks?= =?us-ascii?Q?n1npskOOCueQW830SShNojEymlX39aVVokMWXajacyzpnOuoV0AQIv8UiJ5Y?= =?us-ascii?Q?qKMsBimu/4jv9vJozhtx25g8NXRAbGGnPIm44K+jRtO49BW5vNwRynZNh8MH?= =?us-ascii?Q?8VVrhA1Y3RfU5seSpwC2gzqnKgTlKq/14I3wycYXi6BrjNBc6D8CQhC3bU7i?= =?us-ascii?Q?O4LZ2egZUjMxl4TVmE9oN1RUSnsqZ9HyHQXQygQk?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR21MB3547 X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,WEIRD_PORT autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Simon, Thanks for the response. I have a silly test app which spins up and then w= aits on 5 pthreads each of which sleep for a varying amount, compute a Fibo= nacci number, and then exit. I spin up the standard gdbserver fetched from= Ubuntu VM (gdbserver localhost:1234 ./thread_test) and connect to it. Wit= h that gdbserver, I get the following communication log between my plug-in = and the gdbserver (somewhat condensed -- I removed most of the memory relat= ed back and forth): GDBServerComposition: Command: ? GDBServerComposition: CommandOuptut: T0506:0000000000000000;07:10dfffff= ff7f0000;10:b032fef7ff7f0000;thread:262b;core:e; GDBServerComposition: Command: qSupported GDBServerComposition: CommandOuptut: PacketSize=3D47ff;QPassSignals+;QP= rogramSignals+;QStartupWithShell+;QEnvironmentHexEncoded+;QEnvironmentReset= +;QEnvironmentUnset+;QSetWorkingDir+;QCatchSyscalls+;qXfer:libraries-svr4:r= ead+;augmented-libraries-svr4-read+;qXfer:auxv:read+;qXfer:siginfo:read+;qX= fer:siginfo:write+;qXfer:features:read+;QStartNoAckMode+;qXfer:osdata:read+= ;multiprocess+;fork-events+;vfork-events+;exec-events+;QNonStop+;QDisableRa= ndomization+;qXfer:threads:read+;ConditionalTracepoints+;TraceStateVariable= s+;TracepointSource+;DisconnectedTracing+;StaticTracepoints+;InstallInTrace= +;qXfer:statictrace:read+;qXfer:traceframe-info:read+;EnableDisableTracepoi= nts+;QTBuffer:size+;tracenz+;ConditionalBreakpoints+;BreakpointCommands+;QA= gent+;Qbtrace:bts+;Qbtrace-conf:bts:size+;Qbtrace:pt+;Qbtrace-conf:pt:size+= ;Qbtrace:off+;qXfer:btrace:read+;qXfer:btrace-conf:read+;swbreak+;hwbreak+;= qXfer:exec-file:read+;vContSupported+;QThreadEvents+;no-resumed+ GDBServerComposition: Command: qSupported:QThreadEvents+ GDBServerComposition: CommandOuptut: PacketSize=3D47ff;QPassSignals+;QP= rogramSignals+;QStartupWithShell+;QEnvironmentHexEncoded+;QEnvironmentReset= +;QEnvironmentUnset+;QSetWorkingDir+;QCatchSyscalls+;qXfer:libraries-svr4:r= ead+;augmented-libraries-svr4-read+;qXfer:auxv:read+;qXfer:siginfo:read+;qX= fer:siginfo:write+;qXfer:features:read+;QStartNoAckMode+;qXfer:osdata:read+= ;multiprocess+;fork-events+;vfork-events+;exec-events+;QNonStop+;QDisableRa= ndomization+;qXfer:threads:read+;ConditionalTracepoints+;TraceStateVariable= s+;TracepointSource+;DisconnectedTracing+;StaticTracepoints+;InstallInTrace= +;qXfer:statictrace:read+;qXfer:traceframe-info:read+;EnableDisableTracepoi= nts+;QTBuffer:size+;tracenz+;ConditionalBreakpoints+;BreakpointCommands+;QA= gent+;Qbtrace:bts+;Qbtrace-conf:bts:size+;Qbtrace:pt+;Qbtrace-conf:pt:size+= ;Qbtrace:off+;qXfer:btrace:read+;qXfer:btrace-conf:read+;swbreak+;hwbreak+;= qXfer:exec-file:read+;vContSupported+;QThreadEvents+;no-resumed+ GDBServerComposition: Command: QThreadEvents:1 GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: QNonStop:0 GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: qXfer:features:read:target.xml:0,3e8 GDBServerComposition: CommandOuptut: li386:x86-64= GNU/Linux GDBServerComposition: Command: qXfer:threads:read::0,3e8 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: qXfer:exec-file:read:262b:0,3e8 GDBServerComposition: CommandOuptut: l/home/wmessmer/thread_test/thread= _test GDBServerComposition: Command: qXfer:auxv:read::0,3e8 GDBServerComposition: CommandOuptut: l! <<<< SIGNIFICANT MEMORY RELATED COMMUNICATION REMOVED HERE >>>> GDBServerComposition: Command: Z0,555555555100,1 GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: qXfer:threads:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: qXfer:libraries-svr4:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: m555555554000,400 GDBServerComposition: CommandOuptut: 7f454c46... GDBServerComposition: Command: m555555554400,400 GDBServerComposition: CommandOuptut: 00000000... GDBServerComposition: Command: m555555554800,400 GDBServerComposition: CommandOuptut: 00000000... GDBServerComposition: Command: m555555554c00,400 GDBServerComposition: CommandOuptut: 00000000... GDBServerComposition: Command: m555555554000,40 GDBServerComposition: CommandOuptut: 7f454c4602010100000000000000000003= 003e00010000000011000000000000400000000000000000400000000000000000000040003= 8000d00400025002400 GDBServerComposition: Command: m555555554000,4 GDBServerComposition: CommandOuptut: 7f454c46 GDBServerComposition: Command: m555555554000,4c GDBServerComposition: CommandOuptut: 7f454c4602010100000000000000000003= 003e00010000000011000000000000400000000000000000400000000000000000000040003= 8000d00400025002400060000000400000040000000 ModLoad: 00005555`55554000 00005555`55558018 /home/wmessmer/thread_te= st/thread_test GDBServerComposition: Command: m555555554000,40 GDBServerComposition: CommandOuptut: 7f454c4602010100000000000000000003= 003e00010000000011000000000000400000000000000000400000000000000000000040003= 8000d00400025002400 GDBServerComposition: Command: m555555554000,4 GDBServerComposition: CommandOuptut: 7f454c46 GDBServerComposition: Command: m555555554000,4c GDBServerComposition: CommandOuptut: 7f454c4602010100000000000000000003= 003e00010000000011000000000000400000000000000000400000000000000000000040003= 8000d00400025002400060000000400000040000000 . GDBServerComposition: Command: m3d8,348 GDBServerComposition: CommandOuptut: E01 ReadVirtual() failed in GetXStateConfiguration() first read attempt (er= ror =3D=3D 0.) GDBServerComposition: Command: Hg262b GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: g GDBServerComposition: CommandOuptut: 00000000... <<<< SIGNIFICANT MEMORY RELATED COMMUNICATION REMOVED HERE >>>> <<<< INITIAL POINT AT WHICH THE GDBSERVER IS BROKEN IN >>>> 00007fff`f7fe32b0 4889e7 mov rdi,rsp 0:000> g GDBServerComposition: Command: m7ffff7fe32b0,1 GDBServerComposition: CommandOuptut: 48 GDBServerComposition: Command: Hg262b GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: g GDBServerComposition: CommandOuptut: 00000000... GDBServerComposition: Command: Hg262b GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: P12=3D33000000 GDBServerComposition: CommandOuptut:=20 GDBServerComposition: Command: g GDBServerComposition: CommandOuptut: 00000000... GDBServerComposition: Command: G00000000... GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: vCont;c GDBServerComposition: CommandOuptut: T0206:0000000000000000;07:10dfffff= ff7f0000;10:b032fef7ff7f0000;thread:262b;core:e; GDBServerComposition: Command: qXfer:threads:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: qXfer:siginfo:read::0,3e8 GDBServerComposition: CommandOuptut: l=20 =20 (262b.262b): Signal SIGINT code SI_USER (Sent by kill, sigsend, raise) = at 0x7ffff7fe32b0 originating from PID 262b First chance exceptions are reported before any exception handling. This exception may be expected and handled. GDBServerComposition: Command: Hg262b GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: g GDBServerComposition: CommandOuptut: 00000000... <<<< SIGNIFICANT MEMORY RELATED COMMUNICATION REMOVED HERE >>>> 00007fff`f7fe32b0 4889e7 mov rdi,rsp 0:000> g GDBServerComposition: Command: m7ffff7fe32b0,1 GDBServerComposition: CommandOuptut: 48 GDBServerComposition: Command: vCont;c GDBServerComposition: CommandOuptut: T0506:0000000000000000;07:10dfffff= ff7f0000;10:0151555555550000;thread:262b;core:e; GDBServerComposition: Command: z0,555555555100,1 GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: g GDBServerComposition: CommandOuptut: 1c000000... GDBServerComposition: Command: G1c000000... GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: m555555557e68,8 GDBServerComposition: CommandOuptut: 18e1fff7ff7f0000 GDBServerComposition: Command: m7ffff7ffe128,8 GDBServerComposition: CommandOuptut: 0063fcf7ff7f0000 GDBServerComposition: Command: Z0,7ffff7fc6300,1 GDBServerComposition: CommandOuptut: OK GDBServerComposition: Command: qXfer:libraries-svr4:read::0,1000 GDBServerComposition: CommandOuptut: l <<<< SIGNIFICANT MEMORY RELATED COMMUNICATION TRUNCATED HERE >>>> ModLoad: 00007fff`f7fc2000 00007fff`f7fc2000 linux-vdso.so.1 GDBServerComposition: Command: m7ffff7d8e000,40 GDBServerComposition: CommandOuptut: 7f454c4602010103000000000000000003= 003e0001000000509f0200000000004000000000000000f0c02100000000000000000040003= 8000e00400042004100 GDBServerComposition: Command: m7ffff7d8e000,4 GDBServerComposition: CommandOuptut: 7f454c46 GDBServerComposition: Command: m7ffff7d8e000,4c GDBServerComposition: CommandOuptut: 7f454c4602010103000000000000000003= 003e0001000000509f0200000000004000000000000000f0c02100000000000000000040003= 8000e00400042004100060000000400000040000000 ModLoad: 00007fff`f7d8e000 00007fff`f7fb5e50 /lib/x86_64-linux-gnu/li= bc.so.6 GDBServerComposition: Command: m7ffff7fc3000,40 GDBServerComposition: CommandOuptut: 7f454c4602010103000000000000000003= 003e0001000000b002020000000000400000000000000068a60300000000000000000040003= 8000b0040001b001a00 GDBServerComposition: Command: m7ffff7fc3000,4 GDBServerComposition: CommandOuptut: 7f454c46 GDBServerComposition: Command: m7ffff7fc3000,4c GDBServerComposition: CommandOuptut: 7f454c4602010103000000000000000003= 003e0001000000b002020000000000400000000000000068a60300000000000000000040003= 8000b0040001b001a00010000000400000000000000 ModLoad: 00007fff`f7fc3000 00007fff`f7ffe2d8 /lib64/ld-linux-x86-64.s= o.2 GDBServerComposition: Command: vCont;c GDBServerComposition: CommandOuptut: T05create:;06:80ffffffffffffff;07:= 009fd8f7ff7f0000;10:ed49ebf7ff7f0000;thread:262c;core:10; GDBServerComposition: Command: qXfer:threads:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: vCont;c GDBServerComposition: CommandOuptut: T05create:;06:80ffffffffffffff;07:= 008f58f7ff7f0000;10:ed49ebf7ff7f0000;thread:262d;core:12; GDBServerComposition: Command: qXfer:threads:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: vCont;c GDBServerComposition: CommandOuptut: T05create:;06:80ffffffffffffff;07:= 007fd8f6ff7f0000;10:ed49ebf7ff7f0000;thread:262e;core:0; GDBServerComposition: Command: qXfer:threads:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: vCont;c GDBServerComposition: CommandOuptut: T05create:;06:80ffffffffffffff;07:= 006f58f6ff7f0000;10:ed49ebf7ff7f0000;thread:262f;core:5; GDBServerComposition: Command: qXfer:threads:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: vCont;c GDBServerComposition: CommandOuptut: T05create:;06:80ffffffffffffff;07:= 005fd8f5ff7f0000;10:ed49ebf7ff7f0000;thread:2630;core:a; GDBServerComposition: Command: qXfer:threads:read::0,1000 GDBServerComposition: CommandOuptut: l GDBServerComposition: Command: vCont;c <<<< GDBServer Crashes Here >>>> The GDBServer then segfaults when the first thread exits. GDB itself shows= that the gdbserver faulted at: Program received signal SIGSEGV, Segmentation fault. resume (actions=3Dactions@entry=3D0x55e85605f590, num_actions=3Dnum_act= ions@entry=3D1) at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:2966 2966 /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc: No such file= or directory. (gdb) bt #0 resume (actions=3Dactions@entry=3D0x55e85605f590, num_actions=3Dnum= _actions@entry=3D1) at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:2966 #1 0x000055e854c61020 in handle_v_cont (own_buf=3D0x55e85604aed0 "vCon= t;c") at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:2910 #2 handle_v_requests (own_buf=3D0x55e85604aed0 "vCont;c", packet_len= =3D, new_packet_len=3D) at /build/gdb-wIRHdd/gdb-12.0.90/= gdbserver/server.cc:3177 #3 0x000055e854c6299e in process_serial_event () at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:4523 #4 handle_serial_event (err=3D, client_data=3D) at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:4555 #5 0x000055e854c994b6 in gdb_wait_for_event (block=3Dblock@entry=3D1) at /build/gdb-wIRHdd/gdb-12.0.90/gdbsupport/event-loop.cc:700 #6 0x000055e854c9994b in gdb_wait_for_event (block=3D1) at /build/gdb-wIRHdd/gdb-12.0.90/gdbsupport/event-loop.cc:596 #7 gdb_do_one_event () at /build/gdb-wIRHdd/gdb-12.0.90/gdbsupport/eve= nt-loop.cc:237 #8 0x000055e854c50872 in start_event_loop () at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:3553 #9 captured_main (argv=3D, argc=3D) at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:4033 #10 main (argc=3D, argv=3D) at /build/gdb-wIRHdd/gdb-12.0.90/gdbserver/server.cc:4119 So I went into *resume* and added the "cs.last_status.kind() !=3D TARGET_WA= ITKIND_THREAD_EXITED) to the below code in that function as the "current_th= read->last_status" reference is the source of the segfault: if (cs.last_status.kind () !=3D TARGET_WAITKIND_EXITED && cs.last_status.kind () !=3D TARGET_WAITKIND_SIGNALLED && cs.last_status.kind () !=3D TARGET_WAITKIND_NO_RESUMED && cs.last_status.kind () !=3D TARGET_WAITKIND_THREAD_EXITED) current_thread->last_status =3D cs.last_status; After making this change, the server no longer crashes at the first thread = exit, but instead, I get a packet that is w0;2635 Here's the problem though. When I receive the various "T05create;..." pack= ets, the debuggee process is frozen. There's a bunch of printf's in my tes= t app... and nothing happens until I issue the vCont back to the server. = On receipt of the w0;2635 packet, however, the process just keeps going... I suspect that's a bug in the gdbserver (I'm no expert here in either gdbse= rver or its code). That's the first question... and the second is whether= there's some other way that thread creations and exits get detected other = than QThreadEvents:1 (as this doesn't seem to be well supported). Sincerely, Bill Messmer wmessmer@microsoft.com -----Original Message----- From: Simon Marchi =20 Sent: Sunday, September 11, 2022 11:56 AM To: Bill Messmer ; gdb@sourceware.org Subject: [EXTERNAL] Re: Issues With Thread Events In User Mode GDBServer [You don't often get email from simark@simark.ca. Learn why this is importa= nt at https://aka.ms/LearnAboutSenderIdentification ] On 2022-09-09 16:04, Bill Messmer via Gdb wrote: > Folks, > > Apologies if this is the wrong mailing list to ask a question regarding G= DBServer / RSP and a potential bug. > > I have been working on new extensibility API surfaces for the Windows pla= tform debuggers that allow folks to write plug-ins that can connect those d= ebugging tools to a variety of new targets including ones that are not Wind= ows based. We've had the ability to do this for post-mortem targets for so= me time and are, of late, working to expand that API surface to various for= ms of live targets. > > As proof of concept for the API surface, I've been experimenting with wri= ting such a plug-in to connect to the standard user mode GDBServer for Linu= x. A few things I'll note: > > > 1. When thread events are enabled on the server via a QThreadEvents:1,= GDBServer immediately crashes on any thread exit in "resume" on a NULL der= ef of current_thread. > > > > 1. I tried a quick patch here (adding "cs.last_status.kind() !=3D TARG= ET_WAITKIND_THREAD_EXITED") to the set of conditions that won't set "curren= t_thread->last_status" and the wXXX thread exit packets get sent; however, = regardless of whether the target is in non-stop mode or not, the process is= STILL RUNNING at the time the server sends the "wXXX" packet. > > > Am I missing something with GDBServer and thread events or is this just n= ot well supported...? The process seems to be stopped at the point that a = thread creation event gets sent... but not for a thread exit... I assume = that's a bug somewhere in GDBServer...? Or am I misreading the docs at htt= ps://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fsourceware= .org%2Fgdb%2Fonlinedocs%2Fgdb%2FGeneral-Query-Packets.html&data=3D05%7C= 01%7Cwmessmer%40microsoft.com%7C0880b41dbd38466bdd5a08da942739ce%7C72f988bf= 86f141af91ab2d7cd011db47%7C1%7C0%7C637985193606221095%7CUnknown%7CTWFpbGZsb= 3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C300= 0%7C%7C%7C&sdata=3Dat6X74%2FAK1fkpb4aEGEZonPzTqzZ%2FYTgKeV7MEJcsUY%3D&a= mp;reserved=3D0...? Is there some alternate means by which thread create/e= xit notifications come...? > > Sincerely, > > Bill Messmer > wmessmer@microsoft.com Hi Bill, I don't quite understand the situation you are describing. Can you maybe s= end a log of the communication between your tool and GDBserver? Simon