[ruby-core:122579] [Ruby Bug#21398] Ractor.select hangs when multiple threads submit heavy jobs concurrently
From:
"arino.tamada via ruby-core" <ruby-core@...>
Date:
2025-06-23 05:43:01 UTC
List:
ruby-core #122579
SXNzdWUgIzIxMzk4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYXJpbm8udGFtYWRhICjmnInkuYMg546J 55SwKS4NCg0KDQoNCkknbSBleHBlcmllbmNpbmcgYSBoYW5nIHdoZW4gY29tYmluaW5nIGBSYWN0 b3I6OlBvcnRgIGFuZCBtdWx0aXBsZSBgVGhyZWFkYHMgaW4gUnVieSAzLjUuMGRldiAocnVieS1o ZWFkKS4gVGhlIHNjcmlwdCBiZWxvdyBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIG9uZSBz aGFyZWQgaW4gY29tbWVudCAjMSBvZiB0aGlzIGlzc3VlLCB3aXRoIGFkanVzdGVkIHBhcmFtZXRl cnMuDQpXaGVuIEkgaW5jcmVhc2UgdGhlIG51bWJlciBvZiB0aHJlYWRzIHRvIDEwIChgVEhSRUFE UyA9IDEwYCksIHRoZSBwcm9ncmFtIG9mdGVuIGhhbmdzIGFmdGVyIHByaW50aW5nIGAiV2FpdGlu ZyBmb3IgcmVzdWx0c+KApiJgLiBDUFUgdXNhZ2UgZHJvcHMgdG8gYWxtb3N0IHplcm8sIGFuZCBt ZW1vcnkgdXNhZ2UgcmVtYWlucyBoaWdoIChhYm91dCAxMEdCKSwgc3VnZ2VzdGluZyB0aGF0IHRo ZSBwcm9ncmFtIGlzIHN0dWNrIHJhdGhlciB0aGFuIHN0aWxsIGNvbXB1dGluZy4NCg0KYGBgcnVi eQ0KVEhSRUFEUyA9IDEwDQpKT0JTX1BFUl9USFJFQUQgPSAxMDANCkFSUkFZX1NJWkUgPSAxXzAw MF8wMDANCmRlZiByYWN0b3Jfam9iKGpvYl9jb3VudCwgYXJyYXlfc2l6ZSkNCiAgcG9ydCA9IFJh Y3Rvcjo6UG9ydC5uZXcNCiAgd29ya2VycyA9ICgxLi40KS5tYXAgZG8gfGl8DQogICAgUmFjdG9y Lm5ldyhwb3J0KSBkbyB8am9iX3BvcnR8DQogICAgICB3aGlsZSBqb2IgPSBSYWN0b3IucmVjZWl2 ZQ0KICAgICAgICByZXN1bHQgPSBqb2IubWFwIHsgfHh8IHggKiAyIH0uc3VtDQogICAgICAgIGpv Yl9wb3J0LnNlbmQgcmVzdWx0DQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQogIGpvYnMgPSBB cnJheS5uZXcoam9iX2NvdW50KSB7IEFycmF5Lm5ldyhhcnJheV9zaXplKSB7IHJhbmQoMTAwMCkg fSB9DQogIGpvYnMuZWFjaF93aXRoX2luZGV4IGRvIHxqb2IsIGl8DQogICAgd19pZHggPSBpICUg NA0KICAgIHdvcmtlcnNbd19pZHhdLnNlbmQoam9iKQ0KICBlbmQNCiAgcmVzdWx0cyA9IFtdDQog IGpvYnMuc2l6ZS50aW1lcyBkbw0KICAgIHB1dHMgIldhaXRpbmcgZm9yIHJlc3VsdHMuLi4iDQog ICAgX3JhY3RvciwgcmVzdWx0ID0gUmFjdG9yLnNlbGVjdChwb3J0KQ0KICAgIHB1dHMgIlJlY2Vp dmVkIHJlc3VsdDogI3tyZXN1bHR9Ig0KICAgIHJlc3VsdHMgPDwgcmVzdWx0DQogIGVuZA0KICBy ZXN1bHRzDQplbmQNCnRocmVhZHMgPSBbXQ0KVEhSRUFEUy50aW1lcyBkbw0KICB0aHJlYWRzIDw8 IFRocmVhZC5uZXcgZG8NCiAgICByYWN0b3Jfam9iKEpPQlNfUEVSX1RIUkVBRCwgQVJSQVlfU0la RSkNCiAgZW5kDQplbmQNCnRocmVhZHMuZWFjaCgmOmpvaW4pDQpwdXRzICJBbGwgdGhyZWFkcyBm aW5pc2hlZC4iDQpgYGANCk9ic2VydmF0aW9uczoNCi0gVGhlIHByb2dyYW0gcHJpbnRzICJXYWl0 aW5nIGZvciByZXN1bHRzLi4uIiBidXQgbm8gIlJlY2VpdmVkIHJlc3VsdDoiIGxpbmVzIGFwcGVh ciBhZnRlciBhIGNlcnRhaW4gcG9pbnQuDQotIENQVSB1c2FnZSBpcyBsb3cgYWZ0ZXIgdGhlIGhh bmcgYmVnaW5zLCBidXQgbWVtb3J5IHVzYWdlIHJlbWFpbnMgaGlnaCAofjEwR0IpLg0KLSBUaHJl YWQjam9pbiBibG9ja3MgaW5kZWZpbml0ZWx5OyB0aGUgc2NyaXB0IG5ldmVyIHJlYWNoZXMgIkFs bCB0aHJlYWRzIGZpbmlzaGVkLiINCi0gVXNpbmcgcnVieS1oZWFkLCB0aGUgaGFuZyBvY2N1cnJl ZCA2IG91dCBvZiAxMCB0aW1lcyB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zLg0KDQojIyMgcnVi eSAtdg0KcnVieSAzLjUuMGRldiAoMjAyNS0wNi0xN1QyMjo1MToxNlogbWFzdGVyIDNjZmQ3MWU3 ZTQpICtQUklTTSBbYXJtNjQtZGFyd2luMjNdDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCkJ1ZyAjMjEzOTg6IFJhY3Rvci5zZWxlY3QgaGFuZ3Mgd2hlbiBtdWx0 aXBsZSB0aHJlYWRzIHN1Ym1pdCBoZWF2eSBqb2JzIGNvbmN1cnJlbnRseQ0KaHR0cHM6Ly9idWdz LnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIxMzk4I2NoYW5nZS0xMTM4MTMNCg0KKiBBdXRob3I6IGFy aW5vLnRhbWFkYSAo5pyJ5LmDIOeOieeUsCkNCiogU3RhdHVzOiBPcGVuDQoqIHJ1YnkgLXY6IHJ1 YnkgMy40LjIgKDIwMjUtMDItMTUgcmV2aXNpb24gZDI5MzBmOGU3YSkgK1BSSVNNIFthcm02NC1k YXJ3aW4yM10NCiogQmFja3BvcnQ6IDMuMjogVU5LTk9XTiwgMy4zOiBVTktOT1dOLCAzLjQ6IFVO S05PV04NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCldoZW4gbXVs dGlwbGUgdGhyZWFkcyBydW4gaGVhdnkgUmFjdG9yLWJhc2VkIGpvYnMgYXQgdGhlIHNhbWUgdGlt ZSwgYFJhY3Rvci5zZWxlY3QoKndvcmtlcnMpYCBjYW4gaGFuZyBpbmRlZmluaXRlbHkgd2l0aG91 dCBhbnkgY3Jhc2gsIGV4Y2VwdGlvbiwgb3IgZGVhZGxvY2sgYmVpbmcgcmVwb3J0ZWQuDQoNClRo aXMgaXNzdWUgZG9lcyBub3Qgb2NjdXIgd2hlbiBvbmx5IG9uZSB0aHJlYWQgaXMgcnVubmluZyBz aW1pbGFyIGpvYnMg4oCUIHRoZSBoYW5nIGhhcHBlbnMgb25seSB3aGVuIGZvdXIgb3IgbW9yZSB0 aHJlYWRzIHN1Ym1pdCBsYXJnZSBqb2JzIGNvbmN1cnJlbnRseSB0byBhIHNoYXJlZCBSYWN0b3Ig cGlwZWxpbmUuDQoNCiMjIyBTdGVwcyB0byBSZXByb2R1Y2UNCg0KUnVuIHRoZSBzY3JpcHQgYmVs b3cgaW4gUnVieSAzLjQuMiBvciBsYXRlci4NCg0KSW4gc29tZSBydW5zLCBvbmUgb3IgbW9yZSB0 aHJlYWRzIHdpbGwgaGFuZyBmb3JldmVyIGF0IFJhY3Rvci5zZWxlY3QuDQoNClRoZSBpc3N1ZSBy ZXByb2R1Y2VzIG1vcmUgZWFzaWx5IG9uIG1hY2hpbmVzIHdpdGggbXVsdGlwbGUgY29yZXMgYW5k IHN1ZmZpY2llbnQgbWVtb3J5Lg0KDQojIyMgRXhwZWN0ZWQgQmVoYXZpb3INCkFsbCBjYWxscyB0 byBSYWN0b3Iuc2VsZWN0KCp3b3JrZXJzKSBzaG91bGQgcmV0dXJuIHdoZW4gYW55IHdvcmtlciBS YWN0b3IgeWllbGRzIGEgcmVzdWx0LiBBbGwgam9icyBzaG91bGQgY29tcGxldGUuDQoNCiMjIyBB Y3R1YWwgQmVoYXZpb3INCg0KLSBJbiBzb21lIHJ1bnMgKGVzcGVjaWFsbHkgd2l0aCBtdWx0aXBs ZSB0aHJlYWRzKSwgYFJhY3Rvci5zZWxlY3RgIGhhbmdzIGFuZCBuZXZlciByZXR1cm5zLg0KDQot IFRoZXJlIGlzIG5vIGNyYXNoIG9yIGV4Y2VwdGlvbjsgdGhlIHByb2Nlc3MgcmVtYWlucyBhbGl2 ZSBidXQgYmxvY2tlZC4NCg0KLSBBbGwgUmFjdG9ycyBhbmQgdGhyZWFkcyBhcmUgY3JlYXRlZCBh bmQgc3RhcnRlZCBjb3JyZWN0bHkuDQoNCi0gVGhpcyBiZWhhdmlvciBkb2VzIG5vdCBvY2N1ciB3 aGVuIG9ubHkgb25lIHRocmVhZCBwZXJmb3JtcyB0aGUgc2FtZSBqb2Igc2VxdWVudGlhbGx5Lg0K DQotIEl0IGFwcGVhcnMgdGhhdCBgUmFjdG9yLnNlbGVjdGAgZG9lcyBub3QgYWx3YXlzIGJlaGF2 ZSByZWxpYWJseSB1bmRlciBjb25jdXJyZW50IG11bHRpdGhyZWFkZWQgdXNhZ2Ugd2l0aCBoZWF2 eSBSYWN0b3IgcGlwZWxpbmVzLg0KDQpSZXByb2R1Y2libGUgRXhhbXBsZToNCmBgYHJ1YnkNClRI UkVBRFMgPSA0DQpKT0JTX1BFUl9USFJFQUQgPSAxMA0KQVJSQVlfU0laRSA9IDEwXzAwMA0KDQpk ZWYgcmFjdG9yX2pvYihqb2JfY291bnQsIGFycmF5X3NpemUpDQogIHBpcGUgPSBSYWN0b3IubmV3 IGRvDQogICAgbG9vcCB7IFJhY3Rvci55aWVsZCBSYWN0b3IucmVjZWl2ZSB9DQogIGVuZA0KDQog IHdvcmtlcnMgPSAoMS4uNCkubWFwIGRvDQogICAgUmFjdG9yLm5ldyhwaXBlKSBkbyB8cGlwZXwN CiAgICAgIHdoaWxlIGpvYiA9IHBpcGUudGFrZQ0KICAgICAgICByZXN1bHQgPSBqb2IubWFwIHsg fHh8IHggKiAyIH0uc3VtDQogICAgICAgIFJhY3Rvci55aWVsZCByZXN1bHQNCiAgICAgIGVuZA0K ICAgIGVuZA0KICBlbmQNCg0KICBqb2JzID0gQXJyYXkubmV3KGpvYl9jb3VudCkgeyBBcnJheS5u ZXcoYXJyYXlfc2l6ZSkgeyByYW5kKDEwMDApIH0gfQ0KICBqb2JzLmVhY2ggeyB8am9ifCBwaXBl LnNlbmQoam9iKSB9DQoNCiAgcmVzdWx0cyA9IFtdDQogIGpvYnMuc2l6ZS50aW1lcyBkbw0KICAg IHB1dHMgIldhaXRpbmcgZm9yIHJlc3VsdHMuLi4iDQogICAgX3JhY3RvciwgcmVzdWx0ID0gUmFj dG9yLnNlbGVjdCgqd29ya2VycykNCiAgICBwdXRzICJSZWNlaXZlZCByZXN1bHQ6ICN7cmVzdWx0 fSINCiAgICByZXN1bHRzIDw8IHJlc3VsdA0KICBlbmQNCiAgcmVzdWx0cw0KZW5kDQoNCnRocmVh ZHMgPSBbXQ0KVEhSRUFEUy50aW1lcyBkbw0KICB0aHJlYWRzIDw8IFRocmVhZC5uZXcgZG8NCiAg ICByYWN0b3Jfam9iKEpPQlNfUEVSX1RIUkVBRCwgQVJSQVlfU0laRSkNCiAgZW5kDQplbmQNCg0K dGhyZWFkcy5lYWNoKCY6am9pbikNCnB1dHMgIkFsbCB0aHJlYWRzIGZpbmlzaGVkLiINCmBgYA0K DQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0g cnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwg dG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0 dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1s YW5nLm9yZy8K