From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2078.outbound.protection.outlook.com [40.107.22.78]) by sourceware.org (Postfix) with ESMTPS id 12A853858D37 for ; Mon, 10 Oct 2022 09:52:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 12A853858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=DnVA7kA4K48msAKVUb10f/dH0+6RrleWYKy5v7VMtFDHOua9TEGUc/oNdQAhS5ymm/nHjfFRSkR4a8V8AghTuUYGyNECU0rMzJGt+FBsx6I9N3ICSWiHDwiM+p7cwlZm/WZDVEPop/KLxiEJq8UFcglrh9PjGvDa1dgJMBEy4hHrEaoWr4fmCIynP3cDejpev8qFaDrm6JsnK5aOJJDi6WpIZWU2czL0ocGbPhp2DKP+J+ix4u3teLBlq7Uga3LxGBDkR80KFwEwwb0YNn2DUEEPzCRw7i9PleutNtupPU4wmAP5Y/SXPpFt1xM8tRnAHprfxFAursQs4t9dU4b54w== ARC-Message-Signature: i=2; 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=JizZ38IoMVYsHrsqz/e8RBlVtbXSG19iIk8xUl3CVC0=; b=E749Ydd/oCgtoGUuA3kE5KKmt1XCCdqWdVUm0O27gmSBjlrwYhHGMIBjS9bSOoJNrY6wwjQXChA6DNQaH9m+zNVtlo64grttdHWvxMZIRQUOrAlHOTHq8o+loGrtiJmeY0iVadTctqa+wUWa4PYcbEnH+DeywD1oGDVmrZGM2dKex/eAUenj51l/yFjcTKC5Fb7/bMzjloYNs61Q5EQ1iW/u2/L+LEpJAOBD+J1hErc1NsY3oT5iupEOspssQuejgBHu1j+YnMlEHe8h24CbFUVPDlXrcfBfbFxO/udT3R7HvcdPX7/1akR5TATwGLiFTi9724mmo7qrfMaV/WOPrQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JizZ38IoMVYsHrsqz/e8RBlVtbXSG19iIk8xUl3CVC0=; b=Q2a/bB6Xo1JRyMs276q+/7F+/I1C0G2W/dgHHbkGAOojXehc5Kugik8tDwRCYP6Jr1u3wnjt+q1Ge0MWXM5tN70AqdGSl9tfMw1rkVWn6vOWN4g65MCxN+56TdvCMiDvS2xgJgfmeLIKLC6Vt4Kfy3uWM6FeBijuEOxUi4h0XjE= Received: from AM6PR10CA0004.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:89::17) by AM0PR08MB5364.eurprd08.prod.outlook.com (2603:10a6:208:186::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Mon, 10 Oct 2022 09:52:54 +0000 Received: from AM7EUR03FT037.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:89:cafe::dd) by AM6PR10CA0004.outlook.office365.com (2603:10a6:209:89::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15 via Frontend Transport; Mon, 10 Oct 2022 09:52:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT037.mail.protection.outlook.com (100.127.140.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.10 via Frontend Transport; Mon, 10 Oct 2022 09:52:54 +0000 Received: ("Tessian outbound 86cf7f935b1b:v128"); Mon, 10 Oct 2022 09:52:54 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4bf7a55d17a949df X-CR-MTA-TID: 64aa7808 Received: from 122d14b0b106.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id FF4B5E09-FD27-44F2-9EBA-CEACFA54DD3D.1; Mon, 10 Oct 2022 09:52:47 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 122d14b0b106.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 10 Oct 2022 09:52:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eCO+OOVtfk8mFm+/7vUfJWudjqpaVNPKPZMmOpIzGORbApBeTzCVOhLmMlzRmB6+03VzbUiHvhhssyqoxB0+mHIV/pNjIAUQ2l1kukgoQthdWpjIrwFN0rgH6f+BDHGaPr27PJsrrHVuC5btKWzlPVSzlKMcQPZFpC3vF7DY8hNa1gKF0KZrtqQD/74pm4tWro86RpTH1vh9C/912o8fLoii+NRvu676SxAVMRk0zJB4BoTXZ8kX5g73IpmmBDhMTLX/BspR8fCPSzCaeMz0DzB8qj6/3YXjMSrRO8kof7VnbyysbLPr3IiOIpO9ZLnUTQoeflaNja/hv/CoyA1PRA== 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=JizZ38IoMVYsHrsqz/e8RBlVtbXSG19iIk8xUl3CVC0=; b=Yh3B9HP12891WXM93KXZU55bnRWObI6AauWauRYqJjPFj7oGxhzzwIXZbiKhCcsGOreTZCfJ4Fl6yQJ4aDuSssY6NJv8Bwog1wFqazHHvzytgSoJ7ouy3RT8OCXnJuFFPnEhNYJsnwJWHL1v0RSX8Qe4APiVjtWwRQX4LtAUgzB4MpMQun9eBME8IZ5cyfz9Jsy/c9MyWebkCJXjZMGEJAYQbRyFaPD25EUu/Y5msWVMOJfBIyHnGp8Y3sYdC6kQAqW81tN5leSQ7XRR5yMMbFkmqwcZEtaSRqLnGZo9F1Ce9FDMqpYTsEjuWv/VFYyN46C73dkKvqlz/erW5OTvNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JizZ38IoMVYsHrsqz/e8RBlVtbXSG19iIk8xUl3CVC0=; b=Q2a/bB6Xo1JRyMs276q+/7F+/I1C0G2W/dgHHbkGAOojXehc5Kugik8tDwRCYP6Jr1u3wnjt+q1Ge0MWXM5tN70AqdGSl9tfMw1rkVWn6vOWN4g65MCxN+56TdvCMiDvS2xgJgfmeLIKLC6Vt4Kfy3uWM6FeBijuEOxUi4h0XjE= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) by DU2PR08MB7343.eurprd08.prod.outlook.com (2603:10a6:10:2f2::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Mon, 10 Oct 2022 09:52:45 +0000 Received: from VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::bbeb:a49e:d969:5d2]) by VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::bbeb:a49e:d969:5d2%6]) with mapi id 15.20.5709.015; Mon, 10 Oct 2022 09:52:45 +0000 Message-ID: <18edddf7-6779-96e1-2ed2-facaf7bea2d9@arm.com> Date: Mon, 10 Oct 2022 10:52:43 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: Context switch during stepping causes weird behavior Content-Language: en-US To: Adrian Oltean , "gdb@sourceware.org" References: From: Luis Machado In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LNXP265CA0078.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:76::18) To VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB3919:EE_|DU2PR08MB7343:EE_|AM7EUR03FT037:EE_|AM0PR08MB5364:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c51b802-f6d6-4b53-84a0-08daaaa533f2 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: RaNsE10y4MdGLj43Ma5In8HVXqbQpNbVhdwzBkZKgCdHdW/kpgxsqUomhg5gGsdAJe3MM6Sp0ehEWn3tHc6oDrI6u9ipKhuuWPNXy9W6JRlltUrQzbMx897rzKnbUi9TGRdq/zzgLhgXubaShXjDSdi+7m2olbmglQuyOt7Tj6G/4PBN2ZJlcFg38MjdPDiQpseGkyX77LrEQXcZYeu+1MWfCU0OFgiGXjFol8TSV8VmLZjbD1Ogcqg/aTo8eN4m/0D8JefwsQ+DFFAPOsnIOwJhQS0tJk1UrSoKVIrqS2oHkByH1wFgKsrtL6p3wQ/W84/cuzVSdCHiE/O7hN8YPvS2ZpdIrUD4ssCUCa1E9Mb/c++NrQbH6g1yybITZPrFmpT+LcqT1ouY2c4l9SDPgGc0TQXCgU6H/acVFAVSA4YJG4wrhIZzt+eLVCNBmCoPvLkWXJ8l/xvNI3SKk0uT/e1hDWFyRlgBgpWeVg74ZmDFR79wRqYMY6d9Y2HnAwNazcE+1N/T0SgeFYls6ekONHK1W/HgPLA6RkZiLLA9/wxL1o21MSCGS/IBCEFIbUsu0ymQ+4LDToYDywdgSiI4RUbBrld8Jh9GkMIq7EuB/MXTdY90AmpOoCWft4DgkBEOh37zOYDF+osKvOdGFoNYbANFmZHWKRTvIoQMbsdGNMs09VyqUYWfZqSJS/S+2T+nRPwvapQ8EAZ73QXqMYtwICF9GFfpre/16a9WXUZ+O+mT5Ds30Vnv+6TiE8T2kU3fkcHdnmnaw22iSIqG1rZUXDUuJtgrPt5ZPFqQMjrzBmM= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB3919.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(136003)(346002)(39860400002)(396003)(366004)(451199015)(31686004)(38100700002)(66899015)(66946007)(6486002)(8936002)(36756003)(66476007)(66556008)(5660300002)(30864003)(8676002)(44832011)(41300700001)(83380400001)(2616005)(316002)(2906002)(31696002)(478600001)(86362001)(26005)(110136005)(186003)(6512007)(53546011)(6506007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB7343 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 86e0ab8a-a956-49f3-71bf-08daaaa52e48 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1zawjmj+Z48nyP3VNGdiTePao4ftn8CaNTFyc0S8gMpeBMhJPikoznqxOosWyViRznveqk8Qk4b6IrdITt5ZyHYjTixv8wGpSNSTBLfbc3PQACQmepa/RFWesZF1dQTiOPIF+JefIBx6ZLxXRahhvzN8QDn+LhwG+mp/Px4R2WlGmN3yMMcw30AhnGbvR1UuA7QhxVV4T10HVOqVUwsbasvdPLa+Yak50uxao/tPU1MBW1AghEaFzADSdLRGH1i/xJ/B3yF30veHb39Kkb4Xfi2IWHDa7vOMlBs/GES01lZdzQV/TTjanloZ/8dq4h4R6NGYtHzHxjjb1lnSBgymTrTOdb815pr+gdk0zpDJoFQQ+JVGEs4xsbLA9tXtmp65ROM2RoPwJlhZVsmvDVAr42uKyNq/R4vh4DaNVwdUQ98L2ZjgYUjD+6esE/Mg9+CnpE3aBz85RC4XsGRCNJq8fIwz6GKqra25EouEOXJaeWlj7iDKLJHkss7ZiCYTOrbbXsykm9LKd7FSlEnCS+epuix1sRN1CaOXRbj842znbze/gl5t/rijNvQtvbaqdd8jyAxdhViv/wcx/ixlQSM+C3t+BN3lmwQn7sfW9zOaTLAXaEiGQmh8zqMKK/WPKyOMj4NKQlXu7V+8siexD+c72D+g8Cd0RjlGpZfajVZW6+79RtMh8eTUyu3EvWZrOvXToRo7DtxCA8bGKl/rGGTWLzCu6MxdgyQIyYHjHK+E/LIcrnh5LoRaLe193OPENvlehaDUpsI32SOwtJugHIbaE/YOx5t53J7C8/QTvQCmcTXPzB3FrSbeApn3/5Wl/p3g X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230022)(4636009)(396003)(346002)(39860400002)(376002)(136003)(451199015)(40470700004)(36840700001)(46966006)(6512007)(26005)(31686004)(186003)(66899015)(110136005)(316002)(31696002)(82740400003)(81166007)(356005)(6486002)(478600001)(36756003)(86362001)(36860700001)(40460700003)(8676002)(83380400001)(47076005)(6506007)(2616005)(336012)(53546011)(30864003)(5660300002)(40480700001)(44832011)(82310400005)(8936002)(41300700001)(70206006)(70586007)(2906002)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2022 09:52:54.3266 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0c51b802-f6d6-4b53-84a0-08daaaa533f2 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5364 X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY 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: On 10/4/22 13:19, Adrian Oltean via Gdb wrote: > 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 performing > all the step actions (single stepping, range stepping, resuming, setting temp > 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 initiating > 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 GDB'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 cores) > that constantly loop inside the "idle" subsystem. > > I'm attaching below some logs. Maybe some trained eyes can help with some hints > 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, 0xffff8000100a40a0 > or 0xffff8000113dfb20 are somewhere in the "idle" loop inside the Linux kernel. > > 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 = 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/arch/arm64/kernel/process.c:78 > 2 Thread 6 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 3 Thread 2 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/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/arch/arm64/kernel/process.c:78 > 6 Thread 5 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 7 Thread 7 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 8 Thread 8 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 9 Thread 9 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 10 Thread 10 __delay (cycles=25000) at /linux/arch/arm64/lib/delay.c:34 > 11 Thread 11 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 12 Thread 12 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 13 Thread 13 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 14 Thread 14 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 15 Thread 15 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/arm64/kernel/process.c:78 > 16 Thread 16 0xffff8000113dfb1c in __cpu_do_idle () at /linux/arch/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=0xffffffffffffffff, signal=GDB_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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 3] at 0xffff800009458000 > infrun: infrun_async(1) > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: -1.0.0 [Thread 0], > infrun: status->kind = ignore > infrun: TARGET_WAITKIND_IGNORE > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.3.0 [Thread 3], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff800009458004 > infrun: stepping inside range [0xffff800009458000-0xffff800009458040] > infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 3] at 0xffff800009458004 > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.3.0 [Thread 3], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 0xffff8000100a40a0 > infrun: stepped into subroutine > infrun: inserting step-resume breakpoint at 0xffff80000945803c > infrun: resume (step=0, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 3] at 0xffff8000100a40a0 > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.4.0 [Thread 4], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 4] at 0xffff80000945803c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.4.0 [Thread 4], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff800009458040 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 1] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.1.0 [Thread 1], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > infrun: switching back to stepped thread > infrun: resuming previously stepped thread > infrun: expected thread advanced also (0xffff8000100a40a0 -> 0xffff8000113dfb1c) > infrun: clear_step_over_info > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: stop_pc = 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=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 2] at 0xffff8000113dfb1c > infrun: prepare_to_wait > infrun: target_wait (-1.0.0, status) = > infrun: 1.2.0 [Thread 2], > infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP > infrun: TARGET_WAITKIND_STOPPED > infrun: clear_step_over_info > infrun: stop_pc = 0xffff8000113dfb20 > ///..... And a lot more... GDB doesn't really like things changing behind its back, and I don't think this case is handled very well (or at all). When the thread migrates to a different core, would it be possible to re-order the thread numbering so GDB's view of the threads is unchanged?