From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id C3AAF385C401 for ; Fri, 1 Jul 2022 11:16:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C3AAF385C401 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 CF66E1FF62; Fri, 1 Jul 2022 11:16:02 +0000 (UTC) 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 B863F13AF4; Fri, 1 Jul 2022 11:16:02 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id KCrgK3LXvmJyEAAAMHmgww (envelope-from ); Fri, 01 Jul 2022 11:16:02 +0000 Content-Type: multipart/mixed; boundary="------------6osUT4vKSE8UE0oKURgNO0NT" Message-ID: <58c8a00c-a931-8f97-ef05-66f404a6756a@suse.de> Date: Fri, 1 Jul 2022 13:16:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: Re: [PATCH 2/5] [gdb/symtab] Fix data race on per_cu->dwarf_version Content-Language: en-US To: gdb-patches@sourceware.org Cc: Tom Tromey References: <20220629152914.13149-1-tdevries@suse.de> <20220629152914.13149-2-tdevries@suse.de> From: Tom de Vries In-Reply-To: <20220629152914.13149-2-tdevries@suse.de> X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jul 2022 11:16:09 -0000 This is a multi-part message in MIME format. --------------6osUT4vKSE8UE0oKURgNO0NT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 6/29/22 17:29, Tom de Vries via Gdb-patches wrote: > When building gdb with -fsanitize=thread and gcc 12, and running test-case > gdb.dwarf2/dwz.exp, we run into a data race between thread T2 and the main > thread in the same write: > ... > Write of size 1 at 0x7b200000300c:^M > #0 cutu_reader::cutu_reader(dwarf2_per_cu_data*, dwarf2_per_objfile*, \ > abbrev_table*, dwarf2_cu*, bool, abbrev_cache*) gdb/dwarf2/read.c:6252 \ > (gdb+0x82f3b3)^M > ... > which is here: > ... > this_cu->dwarf_version = cu->header.version; > ... > > Both writes are called from the parallel for in dwarf2_build_psymtabs_hard, > this one directly: > ... > #1 process_psymtab_comp_unit gdb/dwarf2/read.c:6774 (gdb+0x8304d7)^M > #2 operator() gdb/dwarf2/read.c:7098 (gdb+0x8317be)^M > #3 operator() gdbsupport/parallel-for.h:163 (gdb+0x872380)^M > ... > and this via the PU import: > ... > #1 cooked_indexer::ensure_cu_exists(cutu_reader*, dwarf2_per_objfile*, \ > sect_offset, bool, bool) gdb/dwarf2/read.c:17964 (gdb+0x85c43b)^M > #2 cooked_indexer::index_imported_unit(cutu_reader*, unsigned char const*, \ > abbrev_info const*) gdb/dwarf2/read.c:18248 (gdb+0x85d8ff)^M > #3 cooked_indexer::index_dies(cutu_reader*, unsigned char const*, \ > cooked_index_entry const*, bool) gdb/dwarf2/read.c:18302 (gdb+0x85dcdb)^M > #4 cooked_indexer::make_index(cutu_reader*) gdb/dwarf2/read.c:18443 \ > (gdb+0x85e68a)^M > #5 process_psymtab_comp_unit gdb/dwarf2/read.c:6812 (gdb+0x830879)^M > #6 operator() gdb/dwarf2/read.c:7098 (gdb+0x8317be)^M > #7 operator() gdbsupport/parallel-for.h:171 (gdb+0x8723e2)^M > ... > > Fix this by setting the field earlier, in read_comp_units_from_section. > > The write in cutu_reader::cutu_reader() is still needed, in case > read_comp_units_from_section is not used. > > Make the write conditional, such that it doesn't trigger if the field is > already set by read_comp_units_from_section. > I realized there's a similar write in the this_cu->is_debug_types == true clause in cutu_reader::cutu_reader(), which I missed. So I introduced a member function set_version to make sure it's set in a consistent way. Currently testing. Thanks, - Tom --------------6osUT4vKSE8UE0oKURgNO0NT Content-Type: text/x-patch; charset=UTF-8; name="0002-gdb-symtab-Fix-data-race-on-per_cu-dwarf_version.patch" Content-Disposition: attachment; filename*0="0002-gdb-symtab-Fix-data-race-on-per_cu-dwarf_version.patch" Content-Transfer-Encoding: base64 W2dkYi9zeW10YWJdIEZpeCBkYXRhIHJhY2Ugb24gcGVyX2N1LT5kd2FyZl92ZXJzaW9uCgpX aGVuIGJ1aWxkaW5nIGdkYiB3aXRoIC1mc2FuaXRpemU9dGhyZWFkIGFuZCBnY2MgMTIsIGFu ZCBydW5uaW5nIHRlc3QtY2FzZQpnZGIuZHdhcmYyL2R3ei5leHAsIHdlIHJ1biBpbnRvIGEg ZGF0YSByYWNlIGJldHdlZW4gdGhyZWFkIFQyIGFuZCB0aGUgbWFpbgp0aHJlYWQgaW4gdGhl IHNhbWUgd3JpdGU6Ci4uLgpXcml0ZSBvZiBzaXplIDEgYXQgMHg3YjIwMDAwMDMwMGM6Xk0K ICAgICMwIGN1dHVfcmVhZGVyOjpjdXR1X3JlYWRlcihkd2FyZjJfcGVyX2N1X2RhdGEqLCBk d2FyZjJfcGVyX29iamZpbGUqLCBcCiAgICBhYmJyZXZfdGFibGUqLCBkd2FyZjJfY3UqLCBi b29sLCBhYmJyZXZfY2FjaGUqKSBnZGIvZHdhcmYyL3JlYWQuYzo2MjUyIFwKICAgIChnZGIr MHg4MmYzYjMpXk0KLi4uCndoaWNoIGlzIGhlcmU6Ci4uLgogICAgICAgICB0aGlzX2N1LT5k d2FyZl92ZXJzaW9uID0gY3UtPmhlYWRlci52ZXJzaW9uOwouLi4KCkJvdGggd3JpdGVzIGFy ZSBjYWxsZWQgZnJvbSB0aGUgcGFyYWxsZWwgZm9yIGluIGR3YXJmMl9idWlsZF9wc3ltdGFi c19oYXJkLAp0aGlzIG9uZSBkaXJlY3RseToKLi4uCiAgICAjMSBwcm9jZXNzX3BzeW10YWJf Y29tcF91bml0IGdkYi9kd2FyZjIvcmVhZC5jOjY3NzQgKGdkYisweDgzMDRkNyleTQogICAg IzIgb3BlcmF0b3IoKSBnZGIvZHdhcmYyL3JlYWQuYzo3MDk4IChnZGIrMHg4MzE3YmUpXk0K ICAgICMzIG9wZXJhdG9yKCkgZ2Ric3VwcG9ydC9wYXJhbGxlbC1mb3IuaDoxNjMgKGdkYisw eDg3MjM4MCleTQouLi4KYW5kIHRoaXMgdmlhIHRoZSBQVSBpbXBvcnQ6Ci4uLgogICAgIzEg Y29va2VkX2luZGV4ZXI6OmVuc3VyZV9jdV9leGlzdHMoY3V0dV9yZWFkZXIqLCBkd2FyZjJf cGVyX29iamZpbGUqLCBcCiAgICBzZWN0X29mZnNldCwgYm9vbCwgIGJvb2wpIGdkYi9kd2Fy ZjIvcmVhZC5jOjE3OTY0IChnZGIrMHg4NWM0M2IpXk0KICAgICMyIGNvb2tlZF9pbmRleGVy OjppbmRleF9pbXBvcnRlZF91bml0KGN1dHVfcmVhZGVyKiwgdW5zaWduZWQgY2hhciBjb25z dCosIFwKICAgIGFiYnJldl9pbmZvIGNvbnN0KikgZ2RiL2R3YXJmMi9yZWFkLmM6MTgyNDgg KGdkYisweDg1ZDhmZileTQogICAgIzMgY29va2VkX2luZGV4ZXI6OmluZGV4X2RpZXMoY3V0 dV9yZWFkZXIqLCB1bnNpZ25lZCBjaGFyIGNvbnN0KiwgXAogICAgY29va2VkX2luZGV4X2Vu dHJ5IGNvbnN0KiwgYm9vbCkgZ2RiL2R3YXJmMi9yZWFkLmM6MTgzMDIgKGdkYisweDg1ZGNk YileTQogICAgIzQgY29va2VkX2luZGV4ZXI6Om1ha2VfaW5kZXgoY3V0dV9yZWFkZXIqKSBn ZGIvZHdhcmYyL3JlYWQuYzoxODQ0MyBcCiAgICAoZ2RiKzB4ODVlNjhhKV5NCiAgICAjNSBw cm9jZXNzX3BzeW10YWJfY29tcF91bml0IGdkYi9kd2FyZjIvcmVhZC5jOjY4MTIgKGdkYisw eDgzMDg3OSleTQogICAgIzYgb3BlcmF0b3IoKSBnZGIvZHdhcmYyL3JlYWQuYzo3MDk4IChn ZGIrMHg4MzE3YmUpXk0KICAgICM3IG9wZXJhdG9yKCkgZ2Ric3VwcG9ydC9wYXJhbGxlbC1m b3IuaDoxNzEgKGdkYisweDg3MjNlMileTQouLi4KCkZpeCB0aGlzIGJ5IHNldHRpbmcgdGhl IGZpZWxkIGVhcmxpZXIsIGluIHJlYWRfY29tcF91bml0c19mcm9tX3NlY3Rpb24uCgpUaGUg d3JpdGUgaW4gY3V0dV9yZWFkZXI6OmN1dHVfcmVhZGVyKCkgaXMgc3RpbGwgbmVlZGVkLCBp biBjYXNlCnJlYWRfY29tcF91bml0c19mcm9tX3NlY3Rpb24gaXMgbm90IHVzZWQgKHJ1biB0 aGUgdGVzdC1jYXNlIHdpdGggc2F5LCB0YXJnZXQKYm9hcmQgY2Mtd2l0aC1nZGItaW5kZXgp LgoKTWFrZSB0aGUgd3JpdGUgY29uZGl0aW9uYWwsIHN1Y2ggdGhhdCBpdCBkb2Vzbid0IHRy aWdnZXIgaWYgdGhlIGZpZWxkIGlzCmFscmVhZHkgc2V0IGJ5IHJlYWRfY29tcF91bml0c19m cm9tX3NlY3Rpb24uICBJbnN0ZWFkLCB2ZXJpZnkgdGhhdCB0aGUKZmllbGQgaGFzIGFscmVh ZHkgaGFzIHRoZSB2YWx1ZSB0aGF0IHdlJ3JlIHRyeWluZyB0byBzZXQgaXQgdG8uCgpNb3Zl IHRoaXMgbG9naWMgaW50byBpbnRvIGEgbWVtYmVyIGZ1bmN0aW9uIHNldF92ZXJzaW9uIChp biBhbmFsb2d5IHRvIHRoZQphbHJlYWR5IHByZXNlbnQgbWVtYmVyIGZ1bmN0aW9uIHZlcnNp b24pIHRvIG1ha2Ugc3VyZSBpdCdzIHVzZWQgY29uc2lzdGVubHksCmFuZCBtYWtlIHRoZSBm aWVsZCBwcml2YXRlIGluIG9yZGVyIHRvIGVuZm9yY2UgYWNjZXNzIHRocm91Z2ggdGhlIG1l bWJlcgpmdW5jdGlvbnMuCgpUZXN0ZWQgb24geDg2XzY0LWxpbnV4LgoKLS0tCiBnZGIvZHdh cmYyL3JlYWQuYyB8IDEwICsrKysrKystLS0KIGdkYi9kd2FyZjIvcmVhZC5oIHwgMTIgKysr KysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3Jl YWQuYwppbmRleCBkNTA4ODM5NWZiMS4uNDEwY2M5MDljMjYgMTAwNjQ0Ci0tLSBhL2dkYi9k d2FyZjIvcmVhZC5jCisrKyBiL2dkYi9kd2FyZjIvcmVhZC5jCkBAIC02MjM1LDcgKzYyMzUs NyBAQCBjdXR1X3JlYWRlcjo6Y3V0dV9yZWFkZXIgKGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhp c19jdSwKIAkgIHNpZ190eXBlLT50eXBlX29mZnNldF9pbl9zZWN0aW9uID0KIAkgICAgdGhp c19jdS0+c2VjdF9vZmYgKyB0b191bmRlcmx5aW5nIChzaWdfdHlwZS0+dHlwZV9vZmZzZXRf aW5fdHUpOwogCi0JICB0aGlzX2N1LT5kd2FyZl92ZXJzaW9uID0gY3UtPmhlYWRlci52ZXJz aW9uOworCSAgdGhpc19jdS0+c2V0X3ZlcnNpb24gKGN1LT5oZWFkZXIudmVyc2lvbik7CiAJ fQogICAgICAgZWxzZQogCXsKQEAgLTYyNDksNyArNjI0OSw3IEBAIGN1dHVfcmVhZGVyOjpj dXR1X3JlYWRlciAoZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAogCSAgICB0aGlzX2N1 LT5sZW5ndGggPSBjdS0+aGVhZGVyLmdldF9sZW5ndGggKCk7CiAJICBlbHNlCiAJICAgIGdk Yl9hc3NlcnQgKHRoaXNfY3UtPmxlbmd0aCA9PSBjdS0+aGVhZGVyLmdldF9sZW5ndGggKCkp OwotCSAgdGhpc19jdS0+ZHdhcmZfdmVyc2lvbiA9IGN1LT5oZWFkZXIudmVyc2lvbjsKKwkg IHRoaXNfY3UtPnNldF92ZXJzaW9uIChjdS0+aGVhZGVyLnZlcnNpb24pOwogCX0KICAgICB9 CiAKQEAgLTcyMDYsNiArNzIwNiwxMCBAQCByZWFkX2NvbXBfdW5pdHNfZnJvbV9zZWN0aW9u IChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAogICAgICAgdGhpc19jdS0+bGVu Z3RoID0gY3VfaGVhZGVyLmxlbmd0aCArIGN1X2hlYWRlci5pbml0aWFsX2xlbmd0aF9zaXpl OwogICAgICAgdGhpc19jdS0+aXNfZHd6ID0gaXNfZHd6OwogICAgICAgdGhpc19jdS0+c2Vj dGlvbiA9IHNlY3Rpb247CisgICAgICAvKiBJbml0IHRoaXMgYXNhcCwgdG8gYXZvaWQgYSBk YXRhIHJhY2UgaW4gdGhlIHNldF92ZXJzaW9uIGluCisJIGN1dHVfcmVhZGVyOjpjdXR1X3Jl YWRlciAod2hpY2ggbWF5IGJlIHJ1biBpbiBwYXJhbGxlbCBmb3IgdGhlIGNvb2tlZAorCSBp bmRleCBjYXNlKS4gICovCisgICAgICB0aGlzX2N1LT5zZXRfdmVyc2lvbiAoY3VfaGVhZGVy LnZlcnNpb24pOwogCiAgICAgICBpbmZvX3B0ciA9IGluZm9fcHRyICsgdGhpc19jdS0+bGVu Z3RoOwogICAgICAgcGVyX29iamZpbGUtPnBlcl9iZmQtPmFsbF9jb21wX3VuaXRzLnB1c2hf YmFjayAoc3RkOjptb3ZlICh0aGlzX2N1KSk7CkBAIC0xMTIyMiw3ICsxMTIyNiw3IEBAIG9w ZW5fYW5kX2luaXRfZHdvX2ZpbGUgKGR3YXJmMl9jdSAqY3UsIGNvbnN0IGNoYXIgKmR3b19u YW1lLAogICBjcmVhdGVfY3VzX2hhc2hfdGFibGUgKHBlcl9vYmpmaWxlLCBjdSwgKmR3b19m aWxlLCBkd29fZmlsZS0+c2VjdGlvbnMuaW5mbywKIAkJCSBkd29fZmlsZS0+Y3VzKTsKIAot ICBpZiAoY3UtPnBlcl9jdS0+ZHdhcmZfdmVyc2lvbiA8IDUpCisgIGlmIChjdS0+cGVyX2N1 LT52ZXJzaW9uICgpIDwgNSkKICAgICB7CiAgICAgICBjcmVhdGVfZGVidWdfdHlwZXNfaGFz aF90YWJsZSAocGVyX29iamZpbGUsIGR3b19maWxlLmdldCAoKSwKIAkJCQkgICAgIGR3b19m aWxlLT5zZWN0aW9ucy50eXBlcywgZHdvX2ZpbGUtPnR1cyk7CmRpZmYgLS1naXQgYS9nZGIv ZHdhcmYyL3JlYWQuaCBiL2dkYi9kd2FyZjIvcmVhZC5oCmluZGV4IDUxZTAyZGZjNDU3Li5m NmYzZDcyYTgxYiAxMDA2NDQKLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmgKKysrIGIvZ2RiL2R3 YXJmMi9yZWFkLmgKQEAgLTEyMiw5ICsxMjIsMTEgQEAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YQogICBzZWN0X29mZnNldCBzZWN0X29mZiB7fTsKICAgdW5zaWduZWQgaW50IGxlbmd0 aCA9IDA7CiAKK3ByaXZhdGU6CiAgIC8qIERXQVJGIHN0YW5kYXJkIHZlcnNpb24gdGhpcyBk YXRhIGhhcyBiZWVuIHJlYWQgZnJvbSAoc3VjaCBhcyA0IG9yIDUpLiAgKi8KICAgdW5zaWdu ZWQgY2hhciBkd2FyZl92ZXJzaW9uID0gMDsKIAorcHVibGljOgogICAvKiBGbGFnIGluZGlj YXRpbmcgdGhpcyBjb21waWxhdGlvbiB1bml0IHdpbGwgYmUgcmVhZCBpbiBiZWZvcmUKICAg ICAgYW55IG9mIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXRzIGFyZSBwcm9jZXNzZWQu ICAqLwogICB1bnNpZ25lZCBpbnQgcXVldWVkIDogMTsKQEAgLTI5MCw2ICsyOTIsMTYgQEAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQogICAgIHJldHVybiBkd2FyZl92ZXJzaW9uOwog ICB9CiAKKyAgdm9pZCBzZXRfdmVyc2lvbiAoc2hvcnQgdmVyc2lvbikKKyAgeworICAgIGlm IChkd2FyZl92ZXJzaW9uID09IDApCisgICAgICAvKiBTZXQgaWYgbm90IHNldCBhbHJlYWR5 LiAgKi8KKyAgICAgIGR3YXJmX3ZlcnNpb24gPSB2ZXJzaW9uOworICAgIGVsc2UKKyAgICAg IC8qIElmIGFscmVhZHkgc2V0LCB2ZXJpZnkgdGhhdCBpdCdzIHRoZSBzYW1lIHZhbHVlLiAg Ki8KKyAgICAgIGdkYl9hc3NlcnQgKGR3YXJmX3ZlcnNpb24gPT0gdmVyc2lvbik7CisgIH0K KwogICAvKiBGcmVlIGFueSBjYWNoZWQgZmlsZSBuYW1lcy4gICovCiAgIHZvaWQgZnJlZV9j YWNoZWRfZmlsZV9uYW1lcyAoKTsKIH07Cg== --------------6osUT4vKSE8UE0oKURgNO0NT--