[ruby-core:122475] [Ruby Bug#21398] Ractor.select hangs when multiple threads submit heavy jobs concurrently
From:
"arino.tamada via ruby-core" <ruby-core@...>
Date:
2025-06-06 01:23:36 UTC
List:
ruby-core #122475
SXNzdWUgIzIxMzk4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYXJpbm8udGFtYWRhICjmnInkuYMg546J 55SwKS4NCg0KDQpUaGFuayB5b3UgZm9yIHlvdXIgcmVzcG9uc2UuDQoNCkkgaGF2ZSB0cmllZCBy dW5uaW5nIHRoZSBzY3JpcHQgd2l0aCBSdWJ5IGAzLjUuMC1kZXZgIChydWJ5LWhlYWQpIGFuZCB1 c2luZyBgUmFjdG9yOjpQb3J0YCBhcyBpbiB5b3VyIGV4YW1wbGUuDQpJIGNhbiBjb25maXJtIHRo YXQgdGhlIGlzc3VlIGRvZXMgbm90IHJlcHJvZHVjZSBpbiBteSBlbnZpcm9ubWVudCB3aXRoIHRo ZXNlIHJlY2VudCBjaGFuZ2VzLg0KVGhlIHNjcmlwdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5IGFu ZCBkb2VzIG5vdCBoYW5nIGF0IGBSYWN0b3Iuc2VsZWN0YC4NCg0KVGhhbmsgeW91IGZvciB5b3Vy IHN1cHBvcnQgYW5kIHRoZSBpbXByb3ZlbWVudHMgdG8gUmFjdG9yIQ0KDQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpCdWcgIzIxMzk4OiBSYWN0b3Iuc2VsZWN0IGhh bmdzIHdoZW4gbXVsdGlwbGUgdGhyZWFkcyBzdWJtaXQgaGVhdnkgam9icyBjb25jdXJyZW50bHkN Cmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTM5OCNjaGFuZ2UtMTEzNjY0DQoN CiogQXV0aG9yOiBhcmluby50YW1hZGEgKOacieS5gyDnjonnlLApDQoqIFN0YXR1czogT3Blbg0K KiBydWJ5IC12OiBydWJ5IDMuNC4yICgyMDI1LTAyLTE1IHJldmlzaW9uIGQyOTMwZjhlN2EpICtQ UklTTSBbYXJtNjQtZGFyd2luMjNdDQoqIEJhY2twb3J0OiAzLjI6IFVOS05PV04sIDMuMzogVU5L Tk9XTiwgMy40OiBVTktOT1dODQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQpXaGVuIG11bHRpcGxlIHRocmVhZHMgcnVuIGhlYXZ5IFJhY3Rvci1iYXNlZCBqb2JzIGF0 IHRoZSBzYW1lIHRpbWUsIGBSYWN0b3Iuc2VsZWN0KCp3b3JrZXJzKWAgY2FuIGhhbmcgaW5kZWZp bml0ZWx5IHdpdGhvdXQgYW55IGNyYXNoLCBleGNlcHRpb24sIG9yIGRlYWRsb2NrIGJlaW5nIHJl cG9ydGVkLg0KDQpUaGlzIGlzc3VlIGRvZXMgbm90IG9jY3VyIHdoZW4gb25seSBvbmUgdGhyZWFk IGlzIHJ1bm5pbmcgc2ltaWxhciBqb2JzIOKAlCB0aGUgaGFuZyBoYXBwZW5zIG9ubHkgd2hlbiBm b3VyIG9yIG1vcmUgdGhyZWFkcyBzdWJtaXQgbGFyZ2Ugam9icyBjb25jdXJyZW50bHkgdG8gYSBz aGFyZWQgUmFjdG9yIHBpcGVsaW5lLg0KDQojIyMgU3RlcHMgdG8gUmVwcm9kdWNlDQoNClJ1biB0 aGUgc2NyaXB0IGJlbG93IGluIFJ1YnkgMy40LjIgb3IgbGF0ZXIuDQoNCkluIHNvbWUgcnVucywg b25lIG9yIG1vcmUgdGhyZWFkcyB3aWxsIGhhbmcgZm9yZXZlciBhdCBSYWN0b3Iuc2VsZWN0Lg0K DQpUaGUgaXNzdWUgcmVwcm9kdWNlcyBtb3JlIGVhc2lseSBvbiBtYWNoaW5lcyB3aXRoIG11bHRp cGxlIGNvcmVzIGFuZCBzdWZmaWNpZW50IG1lbW9yeS4NCg0KIyMjIEV4cGVjdGVkIEJlaGF2aW9y DQpBbGwgY2FsbHMgdG8gUmFjdG9yLnNlbGVjdCgqd29ya2Vycykgc2hvdWxkIHJldHVybiB3aGVu IGFueSB3b3JrZXIgUmFjdG9yIHlpZWxkcyBhIHJlc3VsdC4gQWxsIGpvYnMgc2hvdWxkIGNvbXBs ZXRlLg0KDQojIyMgQWN0dWFsIEJlaGF2aW9yDQoNCi0gSW4gc29tZSBydW5zIChlc3BlY2lhbGx5 IHdpdGggbXVsdGlwbGUgdGhyZWFkcyksIGBSYWN0b3Iuc2VsZWN0YCBoYW5ncyBhbmQgbmV2ZXIg cmV0dXJucy4NCg0KLSBUaGVyZSBpcyBubyBjcmFzaCBvciBleGNlcHRpb247IHRoZSBwcm9jZXNz IHJlbWFpbnMgYWxpdmUgYnV0IGJsb2NrZWQuDQoNCi0gQWxsIFJhY3RvcnMgYW5kIHRocmVhZHMg YXJlIGNyZWF0ZWQgYW5kIHN0YXJ0ZWQgY29ycmVjdGx5Lg0KDQotIFRoaXMgYmVoYXZpb3IgZG9l cyBub3Qgb2NjdXIgd2hlbiBvbmx5IG9uZSB0aHJlYWQgcGVyZm9ybXMgdGhlIHNhbWUgam9iIHNl cXVlbnRpYWxseS4NCg0KLSBJdCBhcHBlYXJzIHRoYXQgYFJhY3Rvci5zZWxlY3RgIGRvZXMgbm90 IGFsd2F5cyBiZWhhdmUgcmVsaWFibHkgdW5kZXIgY29uY3VycmVudCBtdWx0aXRocmVhZGVkIHVz YWdlIHdpdGggaGVhdnkgUmFjdG9yIHBpcGVsaW5lcy4NCg0KUmVwcm9kdWNpYmxlIEV4YW1wbGU6 DQpgYGBydWJ5DQpUSFJFQURTID0gNA0KSk9CU19QRVJfVEhSRUFEID0gMTANCkFSUkFZX1NJWkUg PSAxMF8wMDANCg0KZGVmIHJhY3Rvcl9qb2Ioam9iX2NvdW50LCBhcnJheV9zaXplKQ0KICBwaXBl ID0gUmFjdG9yLm5ldyBkbw0KICAgIGxvb3AgeyBSYWN0b3IueWllbGQgUmFjdG9yLnJlY2VpdmUg fQ0KICBlbmQNCg0KICB3b3JrZXJzID0gKDEuLjQpLm1hcCBkbw0KICAgIFJhY3Rvci5uZXcocGlw ZSkgZG8gfHBpcGV8DQogICAgICB3aGlsZSBqb2IgPSBwaXBlLnRha2UNCiAgICAgICAgcmVzdWx0 ID0gam9iLm1hcCB7IHx4fCB4ICogMiB9LnN1bQ0KICAgICAgICBSYWN0b3IueWllbGQgcmVzdWx0 DQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQoNCiAgam9icyA9IEFycmF5Lm5ldyhqb2JfY291 bnQpIHsgQXJyYXkubmV3KGFycmF5X3NpemUpIHsgcmFuZCgxMDAwKSB9IH0NCiAgam9icy5lYWNo IHsgfGpvYnwgcGlwZS5zZW5kKGpvYikgfQ0KDQogIHJlc3VsdHMgPSBbXQ0KICBqb2JzLnNpemUu dGltZXMgZG8NCiAgICBwdXRzICJXYWl0aW5nIGZvciByZXN1bHRzLi4uIg0KICAgIF9yYWN0b3Is IHJlc3VsdCA9IFJhY3Rvci5zZWxlY3QoKndvcmtlcnMpDQogICAgcHV0cyAiUmVjZWl2ZWQgcmVz dWx0OiAje3Jlc3VsdH0iDQogICAgcmVzdWx0cyA8PCByZXN1bHQNCiAgZW5kDQogIHJlc3VsdHMN CmVuZA0KDQp0aHJlYWRzID0gW10NClRIUkVBRFMudGltZXMgZG8NCiAgdGhyZWFkcyA8PCBUaHJl YWQubmV3IGRvDQogICAgcmFjdG9yX2pvYihKT0JTX1BFUl9USFJFQUQsIEFSUkFZX1NJWkUpDQog IGVuZA0KZW5kDQoNCnRocmVhZHMuZWFjaCgmOmpvaW4pDQpwdXRzICJBbGwgdGhyZWFkcyBmaW5p c2hlZC4iDQpgYGANCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFp bGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBz ZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNv cmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1j b3JlLm1sLnJ1YnktbGFuZy5vcmcvCg==