From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2042.outbound.protection.outlook.com [40.107.21.42]) by sourceware.org (Postfix) with ESMTPS id 80BE13858407 for ; Tue, 4 Oct 2022 12:19:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 80BE13858407 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=nxp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WY50aGuDUkHqli6fjf2SNAKj+2KujmUQoSZW+qo1SYQ8Q0dk3CEkjPaZbMKHTL+Wnh2Q++zHE5TMqWIPQI2K+6hE84tyQYa8ZdfWT17SxRvT0r9pUPELckgipCXBjerEBTR+A+IF4l5eSiG+D1uB1ALqNZQZLNuq0UebVfnH7ehHf4VTsQUwBwCdz9MTVkqhf06dUrTVTlF0po+qj+96Shyj0+O0bQsJwp8Ap9GbDJGQzQMiCOmLNaEU7bQAxID5qzIFYu+mMOvJADjGXTAQfsgpRcELBgRzLgN4OOMmEb0TMLTJKMpwyLh+Ij8LokPgxMqltFtUq6C0ICkGQIIQYg== 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=lw0gxwATyLFxLoiFWI8yb7NKGapE820wEfiqPNjo/lk=; b=Bgx0OHgJX86x8II2IqBq+23ib+SAoQ9c8K5FjICHndMfOaRasfOBcy/rcUr3rE0XQI8CyPntkuL3HUKA+CUIDKT2s12cMoOZkjFfL08O+KAALDCi8LHZsLLE5WfESKkwzVYSqVc4Q8mFBnUove0UvCyAQw7IC4RsA4xLVl6E35z/JUjGGd/HjtcWPs5tIZIqtntimpLQoNZnSZM+Uuby3vfiQTz6V/yuPaLE8hjaebh3aNYC4r9A09f+YWYBVooKj8xufrTr/zBMiE6os57H73XKuBwViqiuCpWIyY47+WdK7qixHqOcIlwPZ20yfkJqzOD1UPqSyR2u7oF4frd6+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lw0gxwATyLFxLoiFWI8yb7NKGapE820wEfiqPNjo/lk=; b=gwUvr6BVw7sSHdQparqgZfRFyW0ri2E4yN7+lVLGGAhTmnSN9okOV57rPxJlUcEUi1b2GGhLrEMo8WTjchZqFG7yZS7SFKDcLcdvigyhF5yOjgsReYi/nNvdt4jWuC2jU9pGY4sFREReubpbJuTZOL+iBbHV/FF0Ncz1v8S0ZIQ= Received: from AM6PR04MB4630.eurprd04.prod.outlook.com (2603:10a6:20b:17::21) by PR3PR04MB7388.eurprd04.prod.outlook.com (2603:10a6:102:84::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.31; Tue, 4 Oct 2022 12:19:02 +0000 Received: from AM6PR04MB4630.eurprd04.prod.outlook.com ([fe80::394f:f106:fd10:b4e0]) by AM6PR04MB4630.eurprd04.prod.outlook.com ([fe80::394f:f106:fd10:b4e0%7]) with mapi id 15.20.5676.031; Tue, 4 Oct 2022 12:19:02 +0000 From: Adrian Oltean To: "gdb@sourceware.org" Subject: Context switch during stepping causes weird behavior Thread-Topic: Context switch during stepping causes weird behavior Thread-Index: AdjX61rU27Iv8rUTRcOF+Ot/yLvU1w== Date: Tue, 4 Oct 2022 12:19:02 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM6PR04MB4630:EE_|PR3PR04MB7388:EE_ x-ms-office365-filtering-correlation-id: 069020ce-7ab3-4db4-e3ed-08daa6029f94 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: YUBN2gN9WOQaiSbckSlgQKD2nVmPFtV4pl2l7z04kF9veznna7ahVd8iouxtF0wnQsf8HFCVaKmmmtFCjaiH0QkiCeneLXjQZDMFQo9Dk60AQztJIoQXm/PPsQdFQVBpuW0q37FMv5krF3DbQhMpSjLq6eOqsV8PCB+MhMJfpONjgHZtppO47AqRBhbtGsU14RRlJcOzFjvuIbJ8RWapvweDP1kDZYmq1e8YLsbJU6GmNt0E6lbxucF2DMKDcTzx+U+/D+pLdp2suFR5R8Rn5UzPqQwfH35M5TtDEgOn+wNHwNDFckLdD0XJxxNf30gHeY4LDz/EytKQ34PMSoqBwFN+zQKD0H2XJxJY90asTQ252a7n4HRkRusm7oihZkv5Am0bG3jVSxyzMrHBUuCsTLdJgo6H9X2KL8n4CSuI+msZZNezTmqskFZ9odOUlBT1yjHkJcLbaqkcbHeiTyR8UknVOr/77aKm5/3dDOrfeF+RJKamA6P7DEnIIqDa/l3dUXRwAulzdHuI18nKNuMxQmxikDINvqr7FEBBV1i1K/P0yzZxoszZSFsaCW167wkyDHCrkjgy1xQ1L56UztFrXS1ElgUpnFj/uRhp/QKn/fy8fdh5dGdB8qqIQASufVcryi93ML8eKDU7fIqZFDYWQNxWCdJ50GGLQsqb2ZVF6RfAJNEBMNCnIVRJwL0zrz9MvJa8XLzOE52iVBeuj7Kwgx4HJNJ0qqPY+RbeyfuSLGpNlTxd4N0QuAhf7VRkygS6AFeKyfh6NlIjsnbwA0fZPQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4630.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(376002)(346002)(396003)(39860400002)(136003)(451199015)(38100700002)(66899015)(186003)(2906002)(71200400001)(122000001)(38070700005)(44832011)(30864003)(6916009)(86362001)(55016003)(8936002)(52536014)(83380400001)(41300700001)(316002)(66476007)(8676002)(66446008)(66946007)(66556008)(64756008)(478600001)(76116006)(26005)(5660300002)(7696005)(55236004)(6506007)(33656002)(9686003)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?TyrxDoy7yi/j+OVB5fhZ23M17R529Hoic7byQ8WbF/oF3byIJXZZWZa6zpUA?= =?us-ascii?Q?Qyj07eM+tEaaINHPnUogK56/1H8aowujW0QAeLQ4/edUI59Ep0AVBqNtWyBF?= =?us-ascii?Q?ylE6Iklo0l1ha5ZXQyAIOExbAik8s4EAXHY4wU0p3p0BJwZBuTLsNPW9IEz2?= =?us-ascii?Q?v8i8dFh49PJm9BYYgY//z9U2gwu6HwkC11H1ec1qIGGMLxhOCKOCuPT8giM+?= =?us-ascii?Q?2EazUKN+gKRaA6JOXHT28ITI8M8mLUo38Zrkhdq9h1S0A+g9sx8VDjZh6PMW?= =?us-ascii?Q?/DgEyFmyV/i8JHTfgfPFZqd+Kq/z9amObSHG/6trKqwE9E0xQLJD3oHCpzbE?= =?us-ascii?Q?e242wtdNpQl+6OTvar69Ae2XYbKZJyW46vmzj41bfzp3WwqQLIF8iXV2nfQY?= =?us-ascii?Q?mnNKbym99Vqk7Nu5NWSITTRO4iBRTLLfu+ouIrE1izsky6aY55Enn8WN64+k?= =?us-ascii?Q?7P2e629F82KOAqtIuZwUVOt1yPKDInZOGArIDUNEgXUvihDjXp/8L6KDoRLu?= =?us-ascii?Q?i4wwTuEMpXxVF2/YoZX3cPTn4luufKBQWusX/ltzhjoizQMTMTE27e/UDMes?= =?us-ascii?Q?eUaE9EwtA9tWf3LSTXLYvU3wXb4HamZDQzBC4qo9jC/lGqvqo42xPsWDC+LD?= =?us-ascii?Q?KTkxIz9Sh4LMFAq5FmygCqmjAsWrHBccCv77cDfRTWeH8LwCM2VJGA84XTCM?= =?us-ascii?Q?x7MiGrxCuRntbZnUJT6p697VsTYGQSYI+UwKU33sQxWVWb/78CqMntucg5jw?= =?us-ascii?Q?czh1fg57i5RijWwaAfM4IBRjUTU2MCXiwpgOxyIVVtPu8j+/5vqHtNqPjUO3?= =?us-ascii?Q?gkooVJ4VWLb84uqxAqPem8UatqQTOEz9iBZMgP3aflpdXkjwlvMeVrCjQjS9?= =?us-ascii?Q?+LL16xDGxiY9xGKdwLYI1cKMw9OnSwkZALCIA6BWXMvEFoYYXo+dGoB/x0IJ?= =?us-ascii?Q?/BEnjfgqlceWV2OTTNfWDD9l/tlNCkxVCj1TkdO2p2IAHARQtWpyOP2UDnIB?= =?us-ascii?Q?CCX+ICIb0dMwXD/UiK51IHBlXGHIhusnb9rNPVmo6KFxnByT6nMzKRaobuho?= =?us-ascii?Q?1x0ccTEkdly/nsMGyBX52sbkB2DgZk3r81r/fjpI1MwESRNH7tfYiHy0BuuG?= =?us-ascii?Q?BlojwAVFR8lL2Ua2pKQlrKE8M0YvSCR8JLe0KfGFi2ShpopvFHSuhUCMdfb/?= =?us-ascii?Q?KSZkVPBDImpFL4A655JUY/kr7izNqrB7NbyMrc1VtIwnqbg3Hfp9uafIg7Ph?= =?us-ascii?Q?EVAzfR/dUnVnqsPEv4q9D7wd2vpEgke1MSnq5MZOntP3IDwb4Dc+tl+CBnT1?= =?us-ascii?Q?0WzdbzE8DsrBABaJDrPyWQSG1WOK5sjIpjwLeQnGRr1rHlWJcc9XbekL4UtR?= =?us-ascii?Q?oqQE5Qz4sq6spyTB/VqGnIfJ6ueiP5Awhx+CMWwIcoOkgw6tCSQwGbFecIX4?= =?us-ascii?Q?dyo5AP6s1Xv5ZmOeznODYZqVl4aw1h+wSfsu4UmYnDKfUcOJ0NtO702hRIYZ?= =?us-ascii?Q?hTELd4BwEqFuHWXvlPfViAXZTEa38cQPH/Tm6B7xSMEhsdn2jDpzYoU5Hzmw?= =?us-ascii?Q?X0xwGNr65YkzSkde1cQRfaf+O9R39cF0pMK6JuzT?= Content-Type: multipart/alternative; boundary="_000_AM6PR04MB46305DBC542B0EEF27FB951BF15A9AM6PR04MB4630eurp_" MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 069020ce-7ab3-4db4-e3ed-08daa6029f94 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2022 12:19:02.3514 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ubIzdqTpkDvP0teaedpzSPpYBwYeil99Xbp61shk1rzEziKP/IEF7rMsIuCx0gkep8QrlzNUPihbHAQI6575LA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7388 X-Spam-Status: No, score=-3.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,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: --_000_AM6PR04MB46305DBC542B0EEF27FB951BF15A9AM6PR04MB4630eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi everyone, I'm currently facing an issue that occurs while stepping over code running = in a kernel thread that gets moved by the target OS (Linux) on a different core. To give you a little bit of background on my setup: - I have a custom GDB server able to control ARMv8 targets; - I'm using GDB 7.11.1 and GDB 11.1 but seeing the same behavior; - I'm running GDB in all-stop mode; - A thread from GDB is actually associated to a physical core from target; - I'm actually debugging a Linux kernel 5.15 with GDB (a bare-metal debug session but with an extra layer of python scripts to help control the target Linux kernel). What is the problem? I have a HW break somewhere inside the initialization function of a kernel module. Target stops in the breakpoint but the problem I face happens during a step over inside this init sequence. While GDB perf= orming all the step actions (single stepping, range stepping, resuming, setting te= mp breaks, etc.) the Linux kernel decides to move the execution to a different core (so a different thread in my debug model). As a result, temp breaks set during stepping are hit on a different thread than the one used for initiat= ing the step over. This completely messes-up the debug session. In other words, GDB ends-up in an infinite loop trying to finish the step over by switching to the initial thread, resuming it, setting other breaks that are than hit = by other threads, resuming from those temp breaks, etc. Also, once GDB looses control of the stepping, the target Linux enters the "idle" loop, making GD= B's job even more complicated when it comes to resuming from pointless breaks set during stepping. Note that it has to deal with 16 threads (actual HW co= res) that constantly loop inside the "idle" subsystem. I'm attaching below some logs. Maybe some trained eyes can help with some h= ints about how to avoid such an issue. Note that control is lost around address 0xffff80000945803c, when target is resumed and the actual kernel thread is = moved from thread 3 to thread 4. Moreover, addresses 0xffff8000113dfb1c, 0xffff80= 00100a40a0 or 0xffff8000113dfb20 are somewhere in the "idle" loop inside the Linux ker= nel. Any help would be appreciated. Thank you, Adrian ---------------------------------------------------------------------------= ---- (gdb) list warning: Source file is more recent than executable. 1191 static struct ctl_table_header *verbosity_sysctl_header; 1192 static int __init init_cryptodev(void) 1193 { 1194 int rc; 1195 1196 cryptodev_wq =3D create_workqueue("cryptodev_queue= "); 1197 if (unlikely(!cryptodev_wq)) { 1198 pr_err(PFX "failed to allocate the = cryptodev workqueue\n"); 1199 return -EFAULT; 1200 } (gdb) info threads Id Target Id Frame 1 Thread 1 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 2 Thread 6 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 3 Thread 2 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 * 4 Thread 3 init_cryptodev () at /cryptodev_linux/ioctl.c:1196 5 Thread 4 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 6 Thread 5 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 7 Thread 7 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 8 Thread 8 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 9 Thread 9 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 10 Thread 10 __delay (cycles=3D25000) at /linux/arch/arm64/lib/= delay.c:34 11 Thread 11 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 12 Thread 12 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 13 Thread 13 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 14 Thread 14 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 15 Thread 15 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 16 Thread 16 0xffff8000113dfb1c in __cpu_do_idle () at /linux/a= rch/arm64/kernel/process.c:78 (gdb) frame 0 #0 init_cryptodev () at /cryptodev_linux/ioctl.c:1196 1196 /cryptodev_linux/ioctl.c: No such file or directory. (gdb) show schedule-multiple Resuming the execution of threads of all processes is off. (gdb) next infrun: clear_proceed_status_thread (Thread 1) infrun: clear_proceed_status_thread (Thread 6) infrun: clear_proceed_status_thread (Thread 2) infrun: clear_proceed_status_thread (Thread 3) infrun: clear_proceed_status_thread (Thread 4) infrun: clear_proceed_status_thread (Thread 5) infrun: clear_proceed_status_thread (Thread 7) infrun: clear_proceed_status_thread (Thread 8) infrun: clear_proceed_status_thread (Thread 9) infrun: clear_proceed_status_thread (Thread 10) infrun: clear_proceed_status_thread (Thread 11) infrun: clear_proceed_status_thread (Thread 12) infrun: clear_proceed_status_thread (Thread 13) infrun: clear_proceed_status_thread (Thread 14) infrun: clear_proceed_status_thread (Thread 15) infrun: clear_proceed_status_thread (Thread 16) infrun: proceed (addr=3D0xffffffffffffffff, signal=3DGDB_SIGNAL_DEFAULT) infrun: step-over queue now empty infrun: resuming [Thread 3] for step-over infrun: skipping breakpoint: stepping past insn at: 0xffff800009458000 infrun: skipping breakpoint: stepping past insn at: 0xffff800009458000 infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 3] at 0xffff800009458000 infrun: infrun_async(1) infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: -1.0.0 [Thread 0], infrun: status->kind =3D ignore infrun: TARGET_WAITKIND_IGNORE infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.3.0 [Thread 3], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff800009458004 infrun: stepping inside range [0xffff800009458000-0xffff800009458040] infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D0, curren= t thread [Thread 3] at 0xffff800009458004 infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.3.0 [Thread 3], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000100a40a0 infrun: stepped into subroutine infrun: inserting step-resume breakpoint at 0xffff80000945803c infrun: resume (step=3D0, signal=3DGDB_SIGNAL_0), trap_expected=3D0, curren= t thread [Thread 3] at 0xffff8000100a40a0 infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.4.0 [Thread 4], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff80000945803c infrun: context switch infrun: Switching context from Thread 3 to Thread 4 infrun: BPSTAT_WHAT_SINGLE infrun: thread [Thread 4] still needs step-over infrun: skipping breakpoint: stepping past insn at: 0xffff80000945803c infrun: skipping breakpoint: stepping past insn at: 0xffff80000945803c infrun: skipping breakpoint: stepping past insn at: 0xffff80000945803c infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 4] at 0xffff80000945803c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.4.0 [Thread 4], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff800009458040 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 1 infrun: [Thread 1] hit another thread's single-step breakpoint infrun: need to step [Thread 1] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 1] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.1.0 [Thread 1], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 infrun: switching back to stepped thread infrun: resuming previously stepped thread infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113d= fb1c) infrun: clear_step_over_info infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc =3D 0xffff8000113dfb1c infrun: context switch infrun: Switching context from Thread 3 to Thread 2 infrun: [Thread 2] hit another thread's single-step breakpoint infrun: need to step [Thread 2] over single-step breakpoint infrun: resume (step=3D1, signal=3DGDB_SIGNAL_0), trap_expected=3D1, curren= t thread [Thread 2] at 0xffff8000113dfb1c infrun: prepare_to_wait infrun: target_wait (-1.0.0, status) =3D infrun: 1.2.0 [Thread 2], infrun: status->kind =3D stopped, signal =3D GDB_SIGNAL_TRAP infrun: TARGET_WAITKIND_STOPPED infrun: clear_step_over_info infrun: stop_pc =3D 0xffff8000113dfb20 ///..... And a lot more... --_000_AM6PR04MB46305DBC542B0EEF27FB951BF15A9AM6PR04MB4630eurp_--