From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-2.9 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY, URIBL_GREY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 2E0021F4D7 for ; Sun, 15 May 2022 02:29:53 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="MJRlHlcU"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 227A7120ACB; Sun, 15 May 2022 11:29:49 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 34171120AC7 for ; Sun, 15 May 2022 11:29:47 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to; s=smtpapi; bh=cVbO8Vta9vMd1ZaV4zAIm/gpdhecrZ5OzAyuN7g3OiU=; b=MJRlHlcUbp4IMn9sI2KVFQm+K5ElbnAeo3+QWtjPmXGZG+siy8a19O/Eq1vhfNS4XGsL SD7veAt7146Oq/va7BXNGeqLc9TxhsLJ1b/O5IrRpQFnLOdkktzda5tf5obnZOcz/WQBf2 ubS3t6D5eoEcJfVSdKg6W08xXh336EoLA= Received: by filterdrecv-75d94df84d-6h9qn with SMTP id filterdrecv-75d94df84d-6h9qn-1-62806597-1F 2022-05-15 02:29:43.531682207 +0000 UTC m=+3300278.554907983 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-2 (SG) with ESMTP id 92gSVykfTfidJwdJCSiYXw for ; Sun, 15 May 2022 02:29:43.488 +0000 (UTC) Date: Sun, 15 May 2022 02:29:43 +0000 (UTC) From: "ioquatix (Samuel Williams)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Bug X-Redmine-Issue-Id: 18782 X-Redmine-Issue-Author: ioquatix X-Redmine-Sender: ioquatix X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 84923 X-SG-EID: =?us-ascii?Q?RXGrw3WrKfUduNFRrzMMcXYHKEABJI9T84jNjq2g6rBTg=2FXhHIicnPoJUXLutJ?= =?us-ascii?Q?tdNFg7BiEDMUtMCwjaLtb0ItKeRyv3NlZm6AYiJ?= =?us-ascii?Q?s0JX4P81t=2FfEMB9NjfPs4i=2F+93BQHd=2FjOyZsALW?= =?us-ascii?Q?9u4MVZ2hnbMjkg9iwFIEDdD4W=2FaFvM8kFidPDkk?= =?us-ascii?Q?VEU1W7VhzeirP45l2DUdDhqObwSpS2Q854krwYU?= =?us-ascii?Q?oPCy7lMMa47KumczTMr+zdhZxcylp4FL0DkyfGT?= =?us-ascii?Q?8AmE6VsOdJQk3x12KgIig=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 108554 Subject: [ruby-core:108554] [Ruby master Bug#18782] Race conditions in autoload when loading the same feature with multiple threads. X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE4NzgyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgaW9xdWF0aXggKFNhbXVlbCBXaWxsaWFt cykuCgoKQWZ0ZXIgZGVidWdnaW5nIHRoZSBhYm92ZSBpc3N1ZSBJIGZvdW5kIGEgdXNlLWFmdGVy LWZyZWUgYnVnIGluIAoKYGBgYwpzdGF0aWMgdm9pZAphdXRvbG9hZF9jX2ZyZWUodm9pZCAqcHRy KQp7CiAgICBzdHJ1Y3QgYXV0b2xvYWRfY29uc3QgKmFjID0gcHRyOwogICAgY2Nhbl9saXN0X2Rl bCgmYWMtPmNub2RlKTsgLy8gPC0gY2FuIG1lc3MgdXAgb3RoZXIgdW5yZWxhdGVkIG9iamVjdHMg aWYgcGFyZW50IGxpbmtlZCBsaXN0IGhlYWQgaXMgYWxyZWFkeSBmcmVlZC4KICAgIHhmcmVlKGFj KTsKfQpgYGAKClRoaXMgb25seSBiZWNvbWVzIGFuIGlzc3VlIGJlY2F1c2Ugd2UgZml4ZWQ6Cgpg YGAKc3RhdGljIHZvaWQKYXV0b2xvYWRfaV9mcmVlKHZvaWQgKnB0cikKewogICAgc3RydWN0IGF1 dG9sb2FkX2RhdGFfaSAqcCA9IHB0cjsKCiAgICAvKiB3ZSBtYXkgbGVhayBzb21lIG1lbW9yeSBh dCBWTSBzaHV0ZG93biB0aW1lLCBubyBiaWcgZGVhbCAqLwogICAgaWYgKGNjYW5fbGlzdF9lbXB0 eSgmcC0+Y29uc3RhbnRzKSkgewoJeGZyZWUocCk7CiAgICB9Cn0KYGBgCgpJbiB0aGUgYWJvdmUg Y29kZSwgYHAtPmNvbnN0YW50c2Agd2FzIChhbG1vc3QpIG5ldmVyIGVtcHR5IHNvIHRoZSB1bmRl cmx5aW5nIGRhdGEgd2FzIG5ldmVyIGZyZWVkLgoKVGhpcyBhbHNvIHJhaXNlcyB0aGUgcXVlc3Rp b24gb2Ygd2hldGhlciB0aGUgYG1hcmtgIGltcGxlbWVudGF0aW9uIGlzIGNvcnJlY3Q6CgpgYGAK c3RhdGljIHZvaWQKYXV0b2xvYWRfY19tYXJrKHZvaWQgKnB0cikKewogICAgc3RydWN0IGF1dG9s b2FkX2NvbnN0ICphYyA9IHB0cjsKICAgIHJiX2djX21hcmtfbW92YWJsZShhYy0+bW9kKTsKICAg IHJiX2djX21hcmtfbW92YWJsZShhYy0+YWQpOwogICAgcmJfZ2NfbWFya19tb3ZhYmxlKGFjLT52 YWx1ZSk7CiAgICByYl9nY19tYXJrX21vdmFibGUoYWMtPmZpbGUpOwp9CmBgYAoKU2hvdWxkbid0 IHRoaXMgYWxzbyBtYXJrIGBhYy0+Y2hpbGRyZW5gIGxpbmtlZCBsaXN0IG5vZGVzIHNvbWUgaG93 PwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpCdWcgIzE4NzgyOiBS YWNlIGNvbmRpdGlvbnMgaW4gYXV0b2xvYWQgd2hlbiBsb2FkaW5nIHRoZSBzYW1lIGZlYXR1cmUg d2l0aCBtdWx0aXBsZSB0aHJlYWRzLgpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMv MTg3ODIjY2hhbmdlLTk3NTk0CgoqIEF1dGhvcjogaW9xdWF0aXggKFNhbXVlbCBXaWxsaWFtcykK KiBTdGF0dXM6IE9wZW4KKiBQcmlvcml0eTogTm9ybWFsCiogQmFja3BvcnQ6IDIuNzogVU5LTk9X TiwgMy4wOiBVTktOT1dOLCAzLjE6IFVOS05PV04KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpJIGhhdmUgaWRlbnRpZmllZCBzZXZlcmFsIHJhY2UgY29uZGl0aW9ucyBp biB0aGUgYXV0b2xvYWQgY29kZS4KCjEuIEl0J3MgcG9zc2libGUgdG8gcmFjZSBvbiBhZGRpbmcg YW5kIHRoZW4gZGVsZXRpbmcgaXRlbXMgaW4gYGF1dG9sb2FkX2ZlYXR1cmVtYXBgLiBXaGVuIHRo aXMgaGFwcGVucywgdHdvIHRocmVhZHMgd2lsbCB0cnkgdG8gbG9hZCB0aGUgc2FtZSBmaWxlIHdp dGggZGlmZmVyZW50IGF1dG9sb2FkIGRhdGEgYW5kIGRlYWRsb2NrLgoyLiBXaGVuIGZpbmlzaGlu ZyBhdXRvbG9hZCwgaXQncyBuZWNlc3NhcnkgdG8gY2xlYXIgYGVsZS0+c3RhdGVgIGJlZm9yZSBz ZXR0aW5nIGNvbnN0YW50cy4gSWYgdGhpcyBpcyBub3Qgc3luY2hyb25pc2VkLCBhIHRocmVhZCBj YW4gc2VlIHRoZSBjbGVhcmVkIGBlbGUtPnN0YXRlYCBiZWZvcmUgc2VlaW5nIHRoZSBjb25zdGFu dHMgYW5kIGFzc3VtZSB0aGUgY29uc3RhbnQgaXMgbm90IGJlaW5nIGF1dG9sb2FkZWQgYW5kIHRo ZW4gZmFpbCB3aXRoIGBOYW1lRXJyb3JgLgoKVGhpcyB0ZXN0IGNhc2UgY2FuIHJlcHJvZHVjZSBi b3RoIGNhc2VzOgoKYGBgCiMgdGVzdC5yYgphdXRvbG9hZF9wYXRoID0gRmlsZS5qb2luKF9fZGly X18sICJmb29iYXIucmIiKQpGaWxlLndyaXRlKGF1dG9sb2FkX3BhdGgsICdtb2R1bGUgRm9vOyBl bmQ7IG1vZHVsZSBCYXI7IGVuZCcpCgoxMDBfMDAwLnRpbWVzIGRvCgkkc3RkZXJyLnB1dHMgIi0t LS0tLS0tLS0tLS0tLS0tLS0tIgoJYXV0b2xvYWQgOkZvbywgYXV0b2xvYWRfcGF0aAoJYXV0b2xv YWQgOkJhciwgYXV0b2xvYWRfcGF0aAoKCXQxID0gVGhyZWFkLm5ldyB7Rm9vfQoJdDIgPSBUaHJl YWQubmV3IHtCYXJ9CgoJdDEuam9pbgoJdDIuam9pbgoKCU9iamVjdC5zZW5kKDpyZW1vdmVfY29u c3QsIDpGb28pCglPYmplY3Quc2VuZCg6cmVtb3ZlX2NvbnN0LCA6QmFyKQoKCSRMT0FERURfRkVB VFVSRVMuZGVsZXRlKGF1dG9sb2FkX3BhdGgpCmVuZApgYGAKCkV4YW1wbGUgZmFpbHVyZSBvZiBj YXNlICgxKToKCmBgYAotLS0tLS0tLS0tLS0tLS0tLS0tLSAoc3VjY2VzcykKYXV0b2xvYWRfYnlf c29tZW9uZV9lbHNlIGVsZT0weDU1ZjMzYjgwNmEzMCBlbGUtPnN0YXRlPShuaWwpCmF1dG9sb2Fk X2J5X3NvbWVvbmVfZWxzZSBlbGU9MHg1NWYzM2I4MDZhMzAgZWxlLT5zdGF0ZT0obmlsKQpjaGVj a19hdXRvbG9hZF9yZXF1aXJlZCAyCmF1dG9sb2FkX2J5X3NvbWVvbmVfZWxzZSBlbGU9MHg1NWYz M2I4MDZhMzAgZWxlLT5zdGF0ZT0weDdmZGQ2NzhiZTc4MApjaGVja19hdXRvbG9hZF9yZXF1aXJl ZCA0CmF1dG9sb2FkX2J5X3NvbWVvbmVfZWxzZSBlbGU9MHg1NWYzM2I4MDZhMzAgZWxlLT5zdGF0 ZT0weDdmZGQ2NzhiZTc4MApjaGVja19hdXRvbG9hZF9yZXF1aXJlZCA0CmVsZT0weDU1ZjMzYjgw NmEzMCBlbGUtPnN0YXRlPTB4N2ZkZDY3OGJlNzgwID0gTlVMTApjaGVja19hdXRvbG9hZF9yZXF1 aXJlZCA0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tIChmYWlsdXJlKQphdXRvbG9hZF9ieV9zb21lb25l X2Vsc2UgZWxlPTB4NTVmMzNiODA2YTMwIGVsZS0+c3RhdGU9KG5pbCkKYXV0b2xvYWRfYnlfc29t ZW9uZV9lbHNlIGVsZT0weDU1ZjMzYjZlOGY0MCBlbGUtPnN0YXRlPShuaWwpCmNoZWNrX2F1dG9s b2FkX3JlcXVpcmVkIDIKY2hlY2tfYXV0b2xvYWRfcmVxdWlyZWQgMwphdXRvbG9hZF9ieV9zb21l b25lX2Vsc2UgZWxlPTB4NTVmMzNiODA2YTMwIGVsZS0+c3RhdGU9MHg3ZmRkNjc3OWQ3ODAKY2hl Y2tfYXV0b2xvYWRfcmVxdWlyZWQgMQphdXRvbG9hZF9ieV9zb21lb25lX2Vsc2UgZWxlPTB4NTVm MzNiODA2YTMwIGVsZS0+c3RhdGU9MHg3ZmRkNjc3OWQ3ODAKY2hlY2tfYXV0b2xvYWRfcmVxdWly ZWQgMQplbGU9MHg1NWYzM2I4MDZhMzAgZWxlLT5zdGF0ZT0weDdmZGQ2Nzc5ZDc4MCA9IE5VTEwK ZWxlPTB4NTVmMzNiNmU4ZjQwIGVsZS0+c3RhdGU9MHg3ZmRkNjc4YmU3ODAgPSBOVUxMCi4uL3Rl c3QucmI6MTI6aW4gYGpvaW4nOiBObyBsaXZlIHRocmVhZHMgbGVmdC4gRGVhZGxvY2s/IChmYXRh bCkKMyB0aHJlYWRzLCAzIHNsZWVwcyBjdXJyZW50OjB4MDAwMDU1ZjMzYjc3MTI1MCBtYWluIHRo cmVhZDoweDAwMDA1NWYzM2I2NmUwOTAKKiAjPFRocmVhZDoweDAwMDA3ZmRkNmEyY2IwYjAgc2xl ZXBfZm9yZXZlcj4KICAgcmJfdGhyZWFkX3Q6MHgwMDAwNTVmMzNiNjZlMDkwIG5hdGl2ZToweDAw MDA3ZmRkNmE3MWMzYzAgaW50OjAKICAgCiogIzxUaHJlYWQ6MHgwMDAwN2ZkZDY3NmUwMDkwIC4u L3Rlc3QucmI6OSBzbGVlcF9mb3JldmVyPgogICByYl90aHJlYWRfdDoweDAwMDA1NWYzM2I3NzBm ZjAgbmF0aXZlOjB4MDAwMDdmZGQ2Nzg5ZTY0MCBpbnQ6MSBtdXRleDoweDAwMDA1NWYzM2I3YzUx MDAgY29uZDoxCiAgICBkZXBlbmRlZCBieTogdGJfdGhyZWFkX2lkOjB4MDAwMDU1ZjMzYjY2ZTA5 MAogICAKKiAjPFRocmVhZDoweDAwMDA3ZmRkNjc2ZTEyMzggLi4vdGVzdC5yYjoxMCBzbGVlcF9m b3JldmVyPgogICByYl90aHJlYWRfdDoweDAwMDA1NWYzM2I3NzEyNTAgbmF0aXZlOjB4MDAwMDdm ZGQ2NzliZjY0MCBpbnQ6MAogICAKCglmcm9tIC4uL3Rlc3QucmI6MTI6aW4gYGJsb2NrIGluIDxt YWluPicKCWZyb20gLi4vdGVzdC5yYjo0OmluIGB0aW1lcycKCWZyb20gLi4vdGVzdC5yYjo0Omlu IGA8bWFpbj4nCm1ha2U6ICoqKiBbdW5jb21tb24ubWs6MTI1MDogcnVucnVieV0gRXJyb3IgMQpg YGAKCkV4YW1wbGUgZmFpbHVyZSBvZiBjYXNlICgyKToKCmBgYApbMHg3ZjE3NWZlNWIwYzhdIHJi X2F1dG9sb2FkX3N0ciBtb2Q9T2JqZWN0IGlkPUZvbyBmaWxlPSIvaG9tZS9zYW11ZWwvUHJvamVj dHMvaW9xdWF0aXgvcnVieS9mb29iYXIucmIiClsweDdmMTc1ZmU1YjBjOF0gcmJfYXV0b2xvYWRf c3RyIGNvbnN0X3NldCBtb2Q9T2JqZWN0IGlkPUZvbyBmaWxlPSIvaG9tZS9zYW11ZWwvUHJvamVj dHMvaW9xdWF0aXgvcnVieS9mb29iYXIucmIiClsweDdmMTc1ZmU1YjBjOF0gcmJfYXV0b2xvYWRf c3RyIG1vZD1PYmplY3QgaWQ9QmFyIGZpbGU9Ii9ob21lL3NhbXVlbC9Qcm9qZWN0cy9pb3F1YXRp eC9ydWJ5L2Zvb2Jhci5yYiIKWzB4N2YxNzVmZTViMGM4XSByYl9hdXRvbG9hZF9zdHIgY29uc3Rf c2V0IG1vZD1PYmplY3QgaWQ9QmFyIGZpbGU9Ii9ob21lL3NhbXVlbC9Qcm9qZWN0cy9pb3F1YXRp eC9ydWJ5L2Zvb2Jhci5yYiIKWzB4N2YxNzVmZTYxZDg4XSByYl9jb25zdF9zZWFyY2hfZnJvbSB2 YWx1ZSA9PSBRdW5kZWYgLT4gYXV0b2xvYWRpbmcKWzB4N2YxNzVmZTYxZTc4XSByYl9jb25zdF9z ZWFyY2hfZnJvbSB2YWx1ZSA9PSBRdW5kZWYgLT4gYXV0b2xvYWRpbmcKWzB4N2YxNzVmZTYxZTc4 XSBBc3NpZ25pbmcgY29uc3RhbnRzLi4uClsweDdmMTc1ZmU2MWQ4OF0gcmJfY29uc3Rfc2VhcmNo X2Zyb20gdmFsdWUgPT0gUXVuZGVmIC0+IGF1dG9sb2FkaW5nClsweDdmMTc1ZmU2MWU3OF0gYXV0 b2xvYWRfY29uc3Rfc2V0IG5hbWU9OkZvbyB2YWx1ZT1Gb28KWzB4N2YxNzVmZTYxZTc4XSBhdXRv bG9hZF9jb25zdF9zZXQgbmFtZT06QmFyIHZhbHVlPUJhcgojPFRocmVhZDoweDAwMDA3ZjE3NWZl NjFkODggLi4vdGVzdC5yYjoxMSBydW4+IHRlcm1pbmF0ZWQgd2l0aCBleGNlcHRpb24gKHJlcG9y dF9vbl9leGNlcHRpb24gaXMgdHJ1ZSk6Ci4uL3Rlc3QucmI6MTE6aW4gYGJsb2NrICgyIGxldmVs cykgaW4gPG1haW4+JzogdW5pbml0aWFsaXplZCBjb25zdGFudCBCYXIgKE5hbWVFcnJvcikKLi4v dGVzdC5yYjoxMTppbiBgYmxvY2sgKDIgbGV2ZWxzKSBpbiA8bWFpbj4nOiB1bmluaXRpYWxpemVk IGNvbnN0YW50IEJhciAoTmFtZUVycm9yKQptYWtlOiAqKiogW3VuY29tbW9uLm1rOjEyNTA6IHJ1 bnJ1YnldIEVycm9yIDEKYGBgCgpUaGVzZSBmYWlsdXJlcyBhcmUgdmVyeSB1bmNvbW1vbiBidXQg aXQgZG9lcyBpbXBhY3QgUnVieSBhcyBmYXIgYmFjayBhcyAyLjcsIGFuZCBwcm9iYWJseSBlYXJs aWVyLgoKLS0tRmlsZXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQowMDAxLUFkZC1S VUJZX1ZNX0NSSVRJQ0FMX1NFQ1RJT04tZm9yLWRldGVjdGluZy11bmV4cGVjdGUucGF0Y2ggKDIu MDcgS0IpCjAwMDItUHJldmVudC1yYWNlLWJldHdlZW4tR0MtbWFyay1hbmQtYXV0b2xvYWQtc2V0 dXAucGF0Y2ggKDEuMDEgS0IpCjAwMDMtUHJvdGVjdC1yYWNlLW9uLWF1dG9sb2FkLXN0YXRlLnBh dGNoICgxMC42IEtCKQowMDA0LUluY3JlYXNlLXRpbWVvdXQtZm9yLWRlYnVnLXRlc3RzLnBhdGNo ICg5MTAgQnl0ZXMpCjAwMDUtUmV2ZXJ0LXJlbW92YWwtb2Ytbm9uLWNvbmRpdGlvbmFsLXhmcmVl LnBhdGNoICg2OTEgQnl0ZXMpCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwo=