From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic309-25.consmr.mail.ir2.yahoo.com (sonic309-25.consmr.mail.ir2.yahoo.com [77.238.179.83]) by sourceware.org (Postfix) with ESMTPS id 3E5A23833A0A for ; Wed, 7 Dec 2022 17:13:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3E5A23833A0A Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=yahoo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1670433224; bh=M/ESsG7g+Ar1JIhjHyoigAZdnpyLMVL5DR4/khirTtE=; h=Date:From:To:In-Reply-To:References:Subject:From:Subject:Reply-To; b=bgHfRdrTWX201TMOmxxI/covN/DhNgZhP640llHC2JhzELtHWOMpB5RH3QEKjqPAZqAWf22gotcXQJ5tX9P02vnnDXh2dWMNW3fZP8CVTGLeRHiop5IA9g4oLAGm+b9rzn0dQ7o0czWAQrryn726TflePbx5Ho7SzS+gGfcJcZeA0g8zZGemmCuRjE6P8o4iC0AtpJW9lmEb/Q2t334gxK+jmKnuEKuwBXenKIuCzlYI60XWDkH422C9LsNKEP15saQu//Q9Xnd7jraT3OhvRjiutBiAzLMOp0rZpMInQ6EVfJqf+yYwwsZNn4JSkyXeYbmzivAS1KZTDgRhbLnbSg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670433224; bh=eyR3yUluirTYL9zOHzY7OcJLc1EkeYr23uAWR7qKyDr=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=fbc3Hgb792DxJY9EK3SmlK1vqC/G9BFXH7pdFnM9SqsKqKqylAQEBXqMb5EUuKMrFr15ugEfeCfB2oK4uBzRs1HExuameQh9IDph2vZtClf3gywff/xC1OUjiZLb4HS3DBPrcI8gtYJstBgirK8Y7U2R0BiIotHnj4D3mQvBm06Z+cz3/EtFzOMUUbViZ5hZUNZsODt+T6yM/1O1HeLDJfGcNh4blLJVAnwZivk63DPqCgzdnxpSaX5IL1a2YewZ5aiQyTQEyEh38ztDHOSVsM/0Plp8FsyhkHPEujWsvZJU3BN1kzTXnihcrwPcYeVvqwgw2cvnVoj9qMQIJBcbdw== X-YMail-OSG: lVTmy1YVM1kbzVWodMMtWxCcHRuKNcek5ZULrrK4cn63eT6KBlwRuUC5F8mSyWJ qJNvpT8tpRh6Na6aw2t5XnB3KEcj24EGkYifxANdzffr061ETno3zVekkSKdRWpBa47k29wIGFek lTJ1e0p6QXn5debuonq1sMyKyJgCyK0bgBz0bJZstQNBxdgpqYJaFUJgc.29ElE7Rl1jETVPw7Yb K5ayYcc3y_FTtz_aIgPZ2kfmSiB7ABZVo9yegzRgTAwX7P5MXrW.VgtN4okJ4noa8DmOX1gvKSEU efrIfnNQkgKaddhU5dilH8Pdx2kJzXxmEpkkkRZM7idNm.Ln_KdYKq8Ken6iXtvu0cCh3HkrxxjX isvj8mZ4dVQRTQbN9HUAJ0QAVck.ZKOPGFDVQkb_Pd8cAy4Zsx41NtzAVIZgg4BQ9RQmPOBgqPk8 yK.dMN4.djqbOGyurM5Uc4pLQW1JXNzenrP5T0.1LbSZ1qKf.fB1fNx1LhNqSm2SlGDWuEcccUlV HeQwVuPUytwZIBmhLmyJRh1Rl4WXO2VFUsgzYiHkfKowjfwmQUPQ0_ofxlnrk2Dbvdh1hkQjknlM LTkDtBiqScGARJfG4S9MWsMJ_ArTEWJM143sgRk3Ro1dpQMpHndq45UJw1cUBFr8BcuUk5L9O57Q vHY2eBLL3u8qdmEnNQUjnlV6Jp54qd3FJTBVoYULAQWhLILj6J_SKQtkfhEsvPaQsUvANOUuJjZr pOCNPjK8t0DFzk59DF.berIcO7_cvGhhg8p2oKOy.MW59Jt_7y8USQJJ19khDhCvp_WBY83Cv8Rz 62Aa.eMlpx5Ip_hM_9O.KeiVN_KMhXYa4hLr0bmdsWRU2nbxEWR5WC1zreEK9YetLtgWf63Wcxfz .CUHdYjQdBl78pn0SQ3TfLYb6UgGWw5rUoKmXTlTxY6szO3TQ85JUmc6N5TATmD4iv0cYn91oDxq rXjE1NS8bCcB5Y09j6OXwMxJEBtHuZyyVt6njiYyJXGsmiVz8deuGwIb3JfnGyc0uwaHd2lh.gTj _0z4fxLJjLIZxvkPGnPdCogYDwXF3_jssDjzPFJ5AjOI.7rQPF3cOm4pmvCLtv1OQSk.be5gwhn2 SUnJHYR3uKlWdW1UfKiLHp49FPOXBqgIw.WN84VsVO_Ois6Iv91aBWXjiZNSWrAwt1dJlhue2I1s DLuKtT87NmqGcTfiQMIB3rtCDX63fMKnqJy0yxBvPgsb6anX9_sXMST5cyoGv.hCm3Z7BR0A727h 3abQ23ipwS6KcBzBeYbkTQ1M2RKqNpB1RcMWcN5xdh_gs0Z1V9CCVLDkLZXExP1A0lOaG2zgfig4 uIgwxkTOT3hg.to.RACEUgTCxDJH9Nh3HMJkHRU8rCVOU8EE1qCPUvNdj4n8fhp.a5._bXvfcA7S C8sqqU1bJ6IXparHxMknrfCUTjBI_lsElG59z5fxhiAYMADKqq2sWCx1LjKmpUZl0fOxtKcbEN5. pj397RDKH9IZ4wTWqLrFuLI8In9O0iam.g_5TrkT6spAl8NjVKgf7WRvx4qY85ulA256OHt5hqfo UZxTXnh4I6rMcfAphON3yXe831Swos2iQeMlwTxc.IzLit0nER21DRd3JueubPtU.8qMdWT6ndCo HzIqGyKhIcItIUNteNQ3n4G1oMz1SJgJZFcdEaenGqaiYMjoZn8ARbGLwnoUDlYS5lJqg0jwD0gP JV41f3ucD1duV.nbdDjjH66hVSbipwQX1qAx_N4Q6iKP8uyzcSfm_.WvXdRB_lpKa4rdrbbVfk9Z fFrxIKGEKl6dfKp1VJflzZtjyLgm8Llxz4JeBoMmo0Khrnf.dpaK6IEH8BRozBftY39f7UskmCMN 9A_XoSNdYEbJUcsBNQg0iTYg_YiElehwU71HBTUhSI6EUFG85z5geRdcnfkjU1h57AzV1NL78f.R kIU8Y4fV.JfOYW.37yl134EP4SAIEuXAHOi34v2I7DVr3z_YemwoY6j4Q3a4NRIfD178r_i.k085 vlhmlBhxPmQGSYrgcXKnZw3.rTg2f_oE5FOG7tCdSiBNFfPibCNYFmc56lUnU.rxucMVK9nOv7G_ G3d5z83uvPJqmBFNk9AWCvz1NwWRgJ89y.i_HsAYLH40S.3sB3lXWQyEM0oHQx2MnvlBqMBQfSXD u__mwxhO6LLVyXiHEYggbifvq1iAQ0fFtw51O.X7IxtaLlN5N5Im2VdmqDr4NbAnGL.KBUDWyCYf xBN2SlpcEWxHH1eo- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic309.consmr.mail.ir2.yahoo.com with HTTP; Wed, 7 Dec 2022 17:13:44 +0000 Date: Wed, 7 Dec 2022 17:13:42 +0000 (UTC) From: Hannes Domani To: "gdb-patches@sourceware.org" , Tom Tromey Message-ID: <102195784.4047621.1670433222150@mail.yahoo.com> In-Reply-To: <20221205185651.2704492-4-tromey@adacore.com> References: <20221205185651.2704492-1-tromey@adacore.com> <20221205185651.2704492-4-tromey@adacore.com> Subject: Re: [PATCH 3/3] Fix control-c handling on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.20926 YMailNorrin X-Spam-Status: No, score=-8.6 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,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: Am Montag, 5. Dezember 2022, 19:57:36 MEZ hat Tom Tromey via Gdb-patches <= gdb-patches@sourceware.org> Folgendes geschrieben: > As Hannes pointed out, the Windows target-async patches broke C-c > handling there.=C2=A0 Looking into this, I found a few oddities, fixed > here. > > First, windows_nat_target::interrupt calls GenerateConsoleCtrlEvent. > I think this event can be ignored by the inferior, so it's not a great > way to interrupt.=C2=A0 Instead, using DebugBreakProcess (or a more > complicated thing for Wow64) seems better. > > Second, windows_nat_target did not implement the pass_ctrlc method. > Implementing this lets us remove the special code to call > SetConsoleCtrlHandler and instead integrate into gdb's approach to C-c > handling.=C2=A0 I believe that this should also fix the race that's > described in the comment that's being removed. > > Initially, I thought a simpler version of this patch would work. > However, I think what happens is that some other library (I'm not sure > what) calls SetConsoleCtrlHandler while gdb is running, and this > intercepts and handles C-c -- so that the gdb SIGINT handler is not > called.=C2=A0 C-break continues to work, presumably because whatever > handler is installed ignores it. > > This patch works around this issue by ensuring that the gdb handler > always comes first. I've now tested this a bit, it's a big improvement. Now it even works to interrupt a GUI program that was started with 'new-console off', that didn't work before. But I did notice a few problems: 1) When I first started a program with 'new-console on', then the sigint_ours variable would not be initialized, and I would later get a crash on C-c. I've fixed it like this: diff --git a/gdb/inflow.c b/gdb/inflow.c index f9926122099..50c93b6e15a 100644 --- a/gdb/inflow.c +++ b/gdb/inflow.c @@ -165,7 +165,7 @@ static struct terminal_info *get_inflow_inferior_data (= struct inferior *); =C2=A0=C2=A0=C2=A0 save our handlers in these two variables and set SIGINT = and SIGQUIT =C2=A0=C2=A0=C2=A0 to SIG_IGN.=C2=A0 */ =C2=A0 -static sighandler_t sigint_ours; +static sighandler_t sigint_ours =3D SIG_IGN; =C2=A0#ifdef SIGQUIT =C2=A0static sighandler_t sigquit_ours; =C2=A0#endif @@ -805,7 +805,8 @@ child_terminal_ours_1 (target_terminal_state desired_st= ate) =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0 =C2=A0} =C2=A0 -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!job_control && desired_state =3D=3D ta= rget_terminal_state::is_ours) +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!job_control && desired_state =3D=3D ta= rget_terminal_state::is_ours +=C2=A0=C2=A0 =C2=A0=C2=A0 && sigint_ours !=3D SIG_IGN) =C2=A0=C2=A0=C2=A0 =C2=A0{ =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0 install_sigint_handler (sigint_ours); =C2=A0#ifdef SIGQUIT Not sure if there is a better solution. 2) And for some reason one of my builds (x86_64+TUI+python) needed the #include in mingw-hdep.c, but my other (i686 basic) didn't. 3) But my basic i686 build had another problem when starting a program with 'new-console on', because at program start it called install_sigint_handler= (), but rl_set_signals() would later override the SIGINT handler again, so C-c didn't work work in this situation. With 'new-console off' this didn't happen, since install_sigint_handler() w= as again called later since it shared the console. That's all I've seen so far, thanks for this. Hannes