From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id 6FFC63858D1E for ; Wed, 2 Aug 2023 14:45:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6FFC63858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id A3E0A1F891; Wed, 2 Aug 2023 14:45:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1690987546; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=knjGvqklMV6m2LX60oer1pURo4qOGE474ZnSbLBGJtc=; b=mOSKiWv4KNlzHpQGcRPm7wcN1lZv/Hxws6s9yMBkDYiJRVN1QAO3d0hgsxAXiAgyNa8ALj FjVgtmbYaqk4NtSq8RRsEsO3XMvNXAGF+dXT8es5KZfzYZE+nZPNlpoY1aVyRUIUaEofjh PhvRq02uyStjizFudnLHyqmkvtDOKH4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1690987546; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=knjGvqklMV6m2LX60oer1pURo4qOGE474ZnSbLBGJtc=; b=rgCi2e0Y7gcn6fJ/JkYcXEGKVlSGS4hBHbCQPT98SqbuY7v1hFBo2CJVyu8PBkkNhMLJep 4j2/X0o6UFPqZKDw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 812E513919; Wed, 2 Aug 2023 14:45:46 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id cXV7HhpsymREFwAAMHmgww (envelope-from ); Wed, 02 Aug 2023 14:45:46 +0000 Content-Type: multipart/mixed; boundary="------------4p0EjLpibSkHM6OLXAla0cYl" Message-ID: <56672463-0c3a-261f-8199-4d944f91cbed@suse.de> Date: Wed, 2 Aug 2023 16:45:27 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] [gdb] Initialize main_thread_id earlier Content-Language: en-US To: Pedro Alves , gdb-patches@sourceware.org, Tom Tromey References: <20230728105945.13909-1-tdevries@suse.de> <20230728105945.13909-2-tdevries@suse.de> <591a3e4a-ac32-805b-75e4-c378ef641bdd@palves.net> From: Tom de Vries In-Reply-To: <591a3e4a-ac32-805b-75e4-c378ef641bdd@palves.net> X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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. --------------4p0EjLpibSkHM6OLXAla0cYl Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 7/28/23 17:36, Pedro Alves wrote: > On 2023-07-28 11:59, Tom de Vries via Gdb-patches wrote: >> I wrote a patch using is_main_thread (), and found it returning false in the >> main thread due to main_thread_id not being initialized yet. >> >> Initialization currently takes place in _initialize_run_on_main_thread, but >> that's too late for earlier uses. >> >> Fix this by also initializing on first use. >> >> Tested on x86_64-linux. >> --- >> gdb/run-on-main-thread.c | 17 ++++++++++++++++- >> 1 file changed, 16 insertions(+), 1 deletion(-) >> >> diff --git a/gdb/run-on-main-thread.c b/gdb/run-on-main-thread.c >> index 91d25dae28f..bee5885d9a6 100644 >> --- a/gdb/run-on-main-thread.c >> +++ b/gdb/run-on-main-thread.c >> @@ -94,12 +94,27 @@ run_on_main_thread (std::function &&func) >> serial_event_set (runnable_event); >> } >> >> +#if CXX_STD_THREAD >> +static void >> +initialize_main_thread_id (void) >> +{ >> + static bool initialized = false; >> + >> + if (initialized) >> + return; >> + initialized = true; >> + >> + main_thread_id = std::this_thread::get_id (); >> +} >> +#endif >> + >> /* See run-on-main-thread.h. */ >> >> bool >> is_main_thread () >> { >> #if CXX_STD_THREAD >> + initialize_main_thread_id (); > Hi Pedro, thanks for the review. > This is assuming that is_main_thread() will always be called once by > the main thread, before any other thread could call it. Otherwise if > is_main_thread is called by some other thread first, > is_main_thread -> initialize_main_thread_id will record the wrong thread > id in the main_thread_id. At least a comment somewhere would > be warranted. I think putting: > > gdb_assert (is_main_thread ()); > > somewhere in the early main code would be good. It would prevent such > situation from ever happening undetected. > Updated accordingly. Any further comments? Thanks, - Tom --------------4p0EjLpibSkHM6OLXAla0cYl Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-Initialize-main_thread_id-earlier.patch" Content-Disposition: attachment; filename="0001-gdb-Initialize-main_thread_id-earlier.patch" Content-Transfer-Encoding: base64 RnJvbSAzODg2ODkyNTUxYzllMzViNmVhMzZhNmRmMjMxNjdmYTM2OTBhMzE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IEZyaSwgMjggSnVsIDIwMjMgMTE6NDE6MDcgKzAyMDAKU3ViamVjdDogW1BBVENI XSBbZ2RiXSBJbml0aWFsaXplIG1haW5fdGhyZWFkX2lkIGVhcmxpZXIKCkkgd3JvdGUgYSBw YXRjaCB1c2luZyBpc19tYWluX3RocmVhZCAoKSwgYW5kIGZvdW5kIGl0IHJldHVybmluZyBm YWxzZSBpbiB0aGUKbWFpbiB0aHJlYWQgZHVlIHRvIG1haW5fdGhyZWFkX2lkIG5vdCBiZWlu ZyBpbml0aWFsaXplZCB5ZXQuCgpJbml0aWFsaXphdGlvbiBjdXJyZW50bHkgdGFrZXMgcGxh Y2UgaW4gX2luaXRpYWxpemVfcnVuX29uX21haW5fdGhyZWFkLCBidXQKdGhhdCdzIHRvbyBs YXRlIGZvciBlYXJsaWVyIHVzZXMuCgpGaXggdGhpcyBieSBpbml0aWFsaXppbmcsIGVpdGhl cjoKLSB3aGVuIGVudGVyaW5nIG1haW4sIG9yCi0gb24gYW4gZWFybGllciBmaXJzdCB1c2Uu CgpUZXN0ZWQgb24geDg2XzY0LWxpbnV4LgotLS0KIGdkYi9nZGIuYyAgICAgICAgICAgICAg ICB8ICA3ICsrKysrKysKIGdkYi9ydW4tb24tbWFpbi10aHJlYWQuYyB8IDI0ICsrKysrKysr KysrKysrKysrKysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2dkYi5jIGIvZ2RiL2dkYi5jCmluZGV4 IDcxYTNmZDEyYmExLi42ZTNmZjA3NTVhYiAxMDA2NDQKLS0tIGEvZ2RiL2dkYi5jCisrKyBi L2dkYi9nZGIuYwpAQCAtMTksMTAgKzE5LDE3IEBACiAjaW5jbHVkZSAiZGVmcy5oIgogI2lu Y2x1ZGUgIm1haW4uaCIKICNpbmNsdWRlICJpbnRlcnBzLmgiCisjaW5jbHVkZSAicnVuLW9u LW1haW4tdGhyZWFkLmgiCiAKIGludAogbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog eworICAvKiBUaGUgZmlyc3QgY2FsbCB0byBpc19tYWluX3RocmVhZCAoKSBzaG91bGQgYmUg ZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgIElmIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGws IHRoZW4gdGhhdCByZXF1aXJlbWVudCBpcyBmdWxmaWxsZWQgaGVyZS4KKyAgICAgSWYgdGhp cyBpcyBub3QgdGhlIGZpcnN0IGNhbGwsIHRoZW4gdGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBm aXJzdCBjYWxsCisgICAgIGZ1bGZpbGxlZCB0aGF0IHJlcXVpcmVtZW50LiAgKi8KKyAgZ2Ri X2Fzc2VydCAoaXNfbWFpbl90aHJlYWQgKCkpOworCiAgIHN0cnVjdCBjYXB0dXJlZF9tYWlu X2FyZ3MgYXJnczsKIAogICBtZW1zZXQgKCZhcmdzLCAwLCBzaXplb2YgYXJncyk7CmRpZmYg LS1naXQgYS9nZGIvcnVuLW9uLW1haW4tdGhyZWFkLmMgYi9nZGIvcnVuLW9uLW1haW4tdGhy ZWFkLmMKaW5kZXggOTFkMjVkYWUyOGYuLjVkNDUzZmZlNjEyIDEwMDY0NAotLS0gYS9nZGIv cnVuLW9uLW1haW4tdGhyZWFkLmMKKysrIGIvZ2RiL3J1bi1vbi1tYWluLXRocmVhZC5jCkBA IC05NCwxMiArOTQsMjkgQEAgcnVuX29uX21haW5fdGhyZWFkIChzdGQ6OmZ1bmN0aW9uPHZv aWQgKCk+ICYmZnVuYykKICAgc2VyaWFsX2V2ZW50X3NldCAocnVubmFibGVfZXZlbnQpOwog fQogCisjaWYgQ1hYX1NURF9USFJFQUQKK3N0YXRpYyBib29sIG1haW5fdGhyZWFkX2lkX2lu aXRpYWxpemVkID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkCitpbml0aWFsaXplX21haW5fdGhy ZWFkX2lkICgpCit7CisgIGlmICggbWFpbl90aHJlYWRfaWRfaW5pdGlhbGl6ZWQpCisgICAg cmV0dXJuOworICAgbWFpbl90aHJlYWRfaWRfaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgIG1h aW5fdGhyZWFkX2lkID0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkICgpOworfQorI2VuZGlm CisKIC8qIFNlZSBydW4tb24tbWFpbi10aHJlYWQuaC4gICovCiAKIGJvb2wKIGlzX21haW5f dGhyZWFkICgpCiB7CiAjaWYgQ1hYX1NURF9USFJFQUQKKyAgLyogSW5pdGlhbGl6ZSBtYWlu X3RocmVhZF9pZCBvbiBmaXJzdCB1c2Ugb2YgaXNfbWFpbl90aHJlYWQuICAqLworICBpbml0 aWFsaXplX21haW5fdGhyZWFkX2lkICgpOworCiAgIHJldHVybiBzdGQ6OnRoaXNfdGhyZWFk OjpnZXRfaWQgKCkgPT0gbWFpbl90aHJlYWRfaWQ7CiAjZWxzZQogICByZXR1cm4gdHJ1ZTsK QEAgLTExMSw3ICsxMjgsMTIgQEAgdm9pZAogX2luaXRpYWxpemVfcnVuX29uX21haW5fdGhy ZWFkICgpCiB7CiAjaWYgQ1hYX1NURF9USFJFQUQKLSAgbWFpbl90aHJlYWRfaWQgPSBzdGQ6 OnRoaXNfdGhyZWFkOjpnZXRfaWQgKCk7CisgIC8qIFRoZSB2YXJpYWJsZSBtYWluX3RocmVh ZF9pZCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgd2hlbiBlbnRlcmluZyBtYWluLCBvcgorICAg ICBhdCBhbiBlYXJsaWVyIHVzZSwgc28gaXQgc2hvdWxkIGFscmVhZHkgYmUgaW5pdGlhbGl6 ZWQgaGVyZS4gICovCisgIGdkYl9hc3NlcnQgKG1haW5fdGhyZWFkX2lkX2luaXRpYWxpemVk KTsKKworICAvKiBBc3N1bWUgdGhhdCB3ZSBleGVjdXRlIHRoaXMgaW4gdGhlIG1haW4gdGhy ZWFkLiAgKi8KKyAgZ2RiX2Fzc2VydCAoaXNfbWFpbl90aHJlYWQgKCkpOwogI2VuZGlmCiAg IHJ1bm5hYmxlX2V2ZW50ID0gbWFrZV9zZXJpYWxfZXZlbnQgKCk7CiAgIGFkZF9maWxlX2hh bmRsZXIgKHNlcmlhbF9ldmVudF9mZCAocnVubmFibGVfZXZlbnQpLCBydW5fZXZlbnRzLCBu dWxscHRyLAoKYmFzZS1jb21taXQ6IGI1YzM3OTQ2Y2NlNGI0MWFmMDQzNjUyOWIxMzlmYTNk MjNlNjFmNzMKLS0gCjIuMzUuMwoK --------------4p0EjLpibSkHM6OLXAla0cYl--