From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sa-prd-fep-049.btinternet.com (mailomta13-sa.btinternet.com [213.120.69.19]) by sourceware.org (Postfix) with ESMTPS id 87F633858D20 for ; Fri, 4 Nov 2022 14:59:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 87F633858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=dronecode.org.uk Authentication-Results: sourceware.org; spf=none smtp.mailfrom=dronecode.org.uk Received: from sa-prd-rgout-004.btmx-prd.synchronoss.net ([10.2.38.7]) by sa-prd-fep-049.btinternet.com with ESMTP id <20221104145931.TAXA3227.sa-prd-fep-049.btinternet.com@sa-prd-rgout-004.btmx-prd.synchronoss.net>; Fri, 4 Nov 2022 14:59:31 +0000 Authentication-Results: btinternet.com; auth=pass (PLAIN) smtp.auth=jonturney@btinternet.com; bimi=skipped X-SNCR-Rigid: 613943C641C462AE X-Originating-IP: [81.153.98.206] X-OWM-Source-IP: 81.153.98.206 (GB) X-OWM-Env-Sender: jonturney@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedvgedrvddugdeikecutefuodetggdotefrodftvfcurfhrohhfihhlvgemuceutffkvffkuffjvffgnffgvefqofdpqfgfvfenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurheptgfkffggfgfuvfhfhfgjsehmtderredtfeejnecuhfhrohhmpeflohhnucfvuhhrnhgvhicuoehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkqeenucggtffrrghtthgvrhhnpeehhfeigeeukedtgfefkeelgedvgeffvdejheevgfffgfduveejffelvedtffekfeenucfkphepkedurdduheefrdelkedrvddtieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhephhgvlhhopegludelvddrudeikedruddruddtiegnpdhinhgvthepkedurdduheefrdelkedrvddtiedpmhgrihhlfhhrohhmpehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkpdhnsggprhgtphhtthhopedvpdhrtghpthhtohepghgusgdqphgrthgthhgvshesshhouhhrtggvfigrrhgvrdhorhhgpdhrtghpthhtohepthhrohhmvgihsegruggrtghorhgvrdgtohhm X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean Received: from [192.168.1.106] (81.153.98.206) by sa-prd-rgout-004.btmx-prd.synchronoss.net (5.8.716.04) (authenticated as jonturney@btinternet.com) id 613943C641C462AE; Fri, 4 Nov 2022 14:59:31 +0000 Content-Type: multipart/mixed; boundary="------------yI9SGSBM8OfNEU3gwDe0wUmt" Message-ID: Date: Fri, 4 Nov 2022 14:59:30 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: Re: [PATCH 2/2] Implement target async for Windows Content-Language: en-GB To: Tom Tromey , gdb-patches@sourceware.org References: <20220803130822.735057-1-tromey@adacore.com> <20220803130822.735057-3-tromey@adacore.com> From: Jon Turney In-Reply-To: <20220803130822.735057-3-tromey@adacore.com> X-Spam-Status: No, score=-1196.9 required=5.0 tests=BAYES_00,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,NICE_REPLY_A,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_NONE,TXREP,WEIRD_PORT 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: This is a multi-part message in MIME format. --------------yI9SGSBM8OfNEU3gwDe0wUmt Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 03/08/2022 14:08, Tom Tromey via Gdb-patches wrote: > This implements target async for Windows. The basic idea is to have > the worker thread block in WaitForDebugEvent, then notify the event > loop when an event is seen. In a few situations, this blocking > behavior is undesirable, so the functions passed to do_synchronously > are changed to return a boolean indicating which behavior is needed. > --- > gdb/windows-nat.c | 123 ++++++++++++++++++++++++++++++++++++++++------ > 1 file changed, 108 insertions(+), 15 deletions(-) > > diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c > index 80cdedce7b9..9c277e9a93d 100644 > --- a/gdb/windows-nat.c > +++ b/gdb/windows-nat.c [...] > > static windows_nat_target the_windows_nat_target; > @@ -366,7 +400,8 @@ check (BOOL ok, const char *file, int line) > > windows_nat_target::windows_nat_target () > : m_pushed_event (CreateEvent (nullptr, false, false, nullptr)), > - m_response_event (CreateEvent (nullptr, false, false, nullptr)) > + m_response_event (CreateEvent (nullptr, false, false, nullptr)), > + m_wait_event (make_serial_event ()) > { > auto fn = [] (LPVOID self) -> DWORD > { This introduces a crash on gdb startup for me. > Thread 1 "gdb" received signal SIGSEGV, Segmentation fault. > ops=ops@entry=0x100abfca0 , open_name=open_name@entry=0x0) at ../../gdb/serial.c:249 > 249 if (!serial_logfile.empty ()) > (top-gdb) p serial_logfile > $1 = > (top-gdb) bt > #0 0x000000010071e755 in serial_open_ops_1 (ops=ops@entry=0x100abfca0 , open_name=open_name@entry=0x0) at ../../gdb/serial.c:249 > #1 0x000000010071ec77 in serial_open_ops (ops=ops@entry=0x100abfca0 ) at ../../gdb/serial.c:267 > #2 0x000000010071d0ac in make_serial_event () at ../../gdb/ser-event.c:164 > #3 0x0000000100810f9e in windows_nat_target::windows_nat_target (this=0x100cdf2e0 ) at ../../gdb/windows-nat.c:406 > #4 0x00000001009d77f0 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at ../../gdb/windows-nat.c:390 > #5 _GLOBAL__sub_I__ZN18windows_nat_targetC2Ev () at ../../gdb/windows-nat.c:3311 > #6 0x00007fff152a6582 in do_global_ctors (force=0, in_pfunc=0x1009d8700 <___CTOR_LIST__>) at ../../../../src/winsup/cygwin/dcrt0.cc:78 > #7 __main () at ../../../../src/winsup/cygwin/dcrt0.cc:1084 > #8 0x00000001009cd7d0 in main (argc=1, argv=0x7ffffcc50) at ../../gdb/gdb.c:25 This looks like an problem with static object construction ordering: the serial_logfile object needs to be constructed before before the_windows_nat_target object, but nothing enforces that, currently. Attached is a patch I wrote to verify the issue, and applying it fixes the crash for me, but I'm sure there is a more elegant solution out there... --------------yI9SGSBM8OfNEU3gwDe0wUmt Content-Type: text/plain; charset=UTF-8; name="0001-Avoid-crash-due-to-undefined-ordering-of-static-obje.patch" Content-Disposition: attachment; filename*0="0001-Avoid-crash-due-to-undefined-ordering-of-static-obje.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxMWQ1NmRiYmQ4MDM0ZWFhMWYxMjhmOWI0YTVmZGNiZjE2Y2RiYjllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gVHVybmV5IDxqb24udHVybmV5QGRyb25lY29k ZS5vcmcudWs+CkRhdGU6IEZyaSwgNCBOb3YgMjAyMiAxNDoxNDo0MSArMDAwMApTdWJqZWN0 OiBbUEFUQ0hdIEF2b2lkIGNyYXNoIGR1ZSB0byB1bmRlZmluZWQgb3JkZXJpbmcgb2Ygc3Rh dGljIG9iamVjdAogY29uc3RydWN0aW9uCgpUaGlzIGxvb2tzIGxpa2UgYW4gaXNzdWUgd2l0 aCBzdGF0aWMgb2JqZWN0IGNvbnN0cnVjdGlvbiBvcmRlcmluZzoKdGhlIHNlcmlhbF9sb2dm aWxlIG9iamVjdCBuZWVkcyB0byBiZSBjb25zdHJ1Y3RlZCBiZWZvcmUgYmVmb3JlCnRoZV93 aW5kb3dzX25hdF90YXJnZXQgb2JqZWN0LCBidXQgbm90aGluZyBlbmZvcmNlcyB0aGF0LgoK VGhyZWFkIDEgImdkYiIgcmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBm YXVsdC4Kb3BzPW9wc0BlbnRyeT0weDEwMGFiZmNhMCA8c2VyaWFsX2V2ZW50X29wcz4sIG9w ZW5fbmFtZT1vcGVuX25hbWVAZW50cnk9MHgwKSBhdCAuLi8uLi9nZGIvc2VyaWFsLmM6MjQ5 CjI0OSAgICAgICBpZiAoIXNlcmlhbF9sb2dmaWxlLmVtcHR5ICgpKQo+ICh0b3AtZ2RiKSBw IHNlcmlhbF9sb2dmaWxlCj4gJDEgPSA8ZXJyb3IgcmVhZGluZyB2YXJpYWJsZTogQ2Fubm90 IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweGZmZmZmZmZmZmZmZmZmZTg+Cih0b3AtZ2Ri KSBidAowICAweDAwMDAwMDAxMDA3MWU3NTUgaW4gc2VyaWFsX29wZW5fb3BzXzEgKG9wcz1v cHNAZW50cnk9MHgxMDBhYmZjYTAgPHNlcmlhbF9ldmVudF9vcHM+LCBvcGVuX25hbWU9b3Bl bl9uYW1lQGVudHJ5PTB4MCkgYXQgLi4vLi4vZ2RiL3NlcmlhbC5jOjI0OQoxICAweDAwMDAw MDAxMDA3MWVjNzcgaW4gc2VyaWFsX29wZW5fb3BzIChvcHM9b3BzQGVudHJ5PTB4MTAwYWJm Y2EwIDxzZXJpYWxfZXZlbnRfb3BzPikgYXQgLi4vLi4vZ2RiL3NlcmlhbC5jOjI2NwoyICAw eDAwMDAwMDAxMDA3MWQwYWMgaW4gbWFrZV9zZXJpYWxfZXZlbnQgKCkgYXQgLi4vLi4vZ2Ri L3Nlci1ldmVudC5jOjE2NAozICAweDAwMDAwMDAxMDA4MTBmOWUgaW4gd2luZG93c19uYXRf dGFyZ2V0Ojp3aW5kb3dzX25hdF90YXJnZXQgKHRoaXM9MHgxMDBjZGYyZTAgPHRoZV93aW5k b3dzX25hdF90YXJnZXQ+KSBhdCAuLi8uLi9nZGIvd2luZG93cy1uYXQuYzo0MDYKNCAgMHgw MDAwMDAwMTAwOWQ3N2YwIGluIF9fc3RhdGljX2luaXRpYWxpemF0aW9uX2FuZF9kZXN0cnVj dGlvbl8wIChfX2luaXRpYWxpemVfcD0xLCBfX3ByaW9yaXR5PTY1NTM1KSBhdCAuLi8uLi9n ZGIvd2luZG93cy1uYXQuYzozOTAKNSAgX0dMT0JBTF9fc3ViX0lfX1pOMTh3aW5kb3dzX25h dF90YXJnZXRDMkV2ICgpIGF0IC4uLy4uL2dkYi93aW5kb3dzLW5hdC5jOjMzMTEKNiAgMHgw MDAwN2ZmZjE1MmE2NTgyIGluIGRvX2dsb2JhbF9jdG9ycyAoZm9yY2U9MCwgaW5fcGZ1bmM9 MHgxMDA5ZDg3MDAgPF9fX0NUT1JfTElTVF9fPikgYXQgLi4vLi4vLi4vLi4vc3JjL3dpbnN1 cC9jeWd3aW4vZGNydDAuY2M6NzgKNyAgX19tYWluICgpIGF0IC4uLy4uLy4uLy4uL3NyYy93 aW5zdXAvY3lnd2luL2RjcnQwLmNjOjEwODQKOCAgMHgwMDAwMDAwMTAwOWNkN2QwIGluIG1h aW4gKGFyZ2M9MSwgYXJndj0weDdmZmZmY2M1MCkgYXQgLi4vLi4vZ2RiL2dkYi5jOjI1Ci0t LQogZ2RiL3NlcmlhbC5jIHwgMTYgKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQs IDExIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL3Nl cmlhbC5jIGIvZ2RiL3NlcmlhbC5jCmluZGV4IGIzMDQ4MDdjNTk3Li4xY2MwZDJhOWI1ZCAx MDA2NDQKLS0tIGEvZ2RiL3NlcmlhbC5jCisrKyBiL2dkYi9zZXJpYWwuYwpAQCAtMzgsNyAr MzgsMTMgQEAgc3RhdGljIHN0cnVjdCBzZXJpYWwgKnNjYl9iYXNlOwogLyogTm9uLU5VTEwg Z2l2ZXMgZmlsZW5hbWUgd2hpY2ggY29udGFpbnMgYSByZWNvcmRpbmcgb2YgdGhlIHJlbW90 ZSBzZXNzaW9uLAogICAgc3VpdGFibGUgZm9yIHBsYXliYWNrIGJ5IGdkYnNlcnZlci4gICov CiAKLXN0YXRpYyBzdGQ6OnN0cmluZyBzZXJpYWxfbG9nZmlsZTsKK3N0YXRpYyBpbmxpbmUK K3N0ZDo6c3RyaW5nICZzZXJpYWxfbG9nZmlsZSgpCit7CisgIHN0YXRpYyBzdGQ6OnN0cmlu ZyBzZXJpYWxfbG9nZmlsZV87CisgIHJldHVybiBzZXJpYWxfbG9nZmlsZV87Cit9CisKIHN0 YXRpYyBzdHJ1Y3QgdWlfZmlsZSAqc2VyaWFsX2xvZ2ZwID0gTlVMTDsKIAogc3RhdGljIGNv bnN0IHN0cnVjdCBzZXJpYWxfb3BzICpzZXJpYWxfaW50ZXJmYWNlX2xvb2t1cCAoY29uc3Qg Y2hhciAqKTsKQEAgLTI0NiwxMiArMjUyLDEyIEBAIHNlcmlhbF9vcGVuX29wc18xIChjb25z dCBzdHJ1Y3Qgc2VyaWFsX29wcyAqb3BzLCBjb25zdCBjaGFyICpvcGVuX25hbWUpCiAgIHNj Yi0+bmV4dCA9IHNjYl9iYXNlOwogICBzY2JfYmFzZSA9IHNjYjsKIAotICBpZiAoIXNlcmlh bF9sb2dmaWxlLmVtcHR5ICgpKQorICBpZiAoIXNlcmlhbF9sb2dmaWxlKCkuZW1wdHkgKCkp CiAgICAgewogICAgICAgc3RkaW9fZmlsZV91cCBmaWxlIChuZXcgc3RkaW9fZmlsZSAoKSk7 CiAKLSAgICAgIGlmICghZmlsZS0+b3BlbiAoc2VyaWFsX2xvZ2ZpbGUuY19zdHIgKCksICJ3 IikpCi0JcGVycm9yX3dpdGhfbmFtZSAoc2VyaWFsX2xvZ2ZpbGUuY19zdHIgKCkpOworICAg ICAgaWYgKCFmaWxlLT5vcGVuIChzZXJpYWxfbG9nZmlsZSgpLmNfc3RyICgpLCAidyIpKQor CXBlcnJvcl93aXRoX25hbWUgKHNlcmlhbF9sb2dmaWxlKCkuY19zdHIgKCkpOwogCiAgICAg ICBzZXJpYWxfbG9nZnAgPSBmaWxlLnJlbGVhc2UgKCk7CiAgICAgfQpAQCAtNjg4LDcgKzY5 NCw3IEBAIFNob3cgcGFyaXR5IGZvciByZW1vdGUgc2VyaWFsIEkvTy4iKSwgTlVMTCwKIAkJ CU5VTEwsIC8qIEZJWE1FOiBpMThuOiAqLwogCQkJJnNlcmlhbF9zZXRfY21kbGlzdCwgJnNl cmlhbF9zaG93X2NtZGxpc3QpOwogCi0gIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoInJl bW90ZWxvZ2ZpbGUiLCBub19jbGFzcywgJnNlcmlhbF9sb2dmaWxlLCBfKCJcCisgIGFkZF9z ZXRzaG93X2ZpbGVuYW1lX2NtZCAoInJlbW90ZWxvZ2ZpbGUiLCBub19jbGFzcywgJnNlcmlh bF9sb2dmaWxlKCksIF8oIlwKIFNldCBmaWxlbmFtZSBmb3IgcmVtb3RlIHNlc3Npb24gcmVj b3JkaW5nLiIpLCBfKCJcCiBTaG93IGZpbGVuYW1lIGZvciByZW1vdGUgc2Vzc2lvbiByZWNv cmRpbmcuIiksIF8oIlwKIFRoaXMgZmlsZSBpcyB1c2VkIHRvIHJlY29yZCB0aGUgcmVtb3Rl IHNlc3Npb24gZm9yIGZ1dHVyZSBwbGF5YmFja1xuXAotLSAKMi4zOC4xCgo= --------------yI9SGSBM8OfNEU3gwDe0wUmt--