[ruby-core:122460] [Ruby Bug#21398] Ractor.select hangs when multiple threads submit heavy jobs concurrently
From:
"luke-gru (Luke Gruber) via ruby-core" <ruby-core@...>
Date:
2025-06-05 16:20:26 UTC
List:
ruby-core #122460
SXNzdWUgIzIxMzk4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbHVrZS1ncnUgKEx1a2UgR3J1YmVyKS4N Cg0KDQpUaGFuayB5b3UgZm9yIHRoZSByZXBvcnQuDQoNCklzIGl0IHBvc3NpYmxlIGZvciB5b3Ug dG8gdHJ5IHRvIGluc3RhbGwgcnVieS1oZWFkICgzLjUuMGRldikgYW5kIHRyeSB0aGlzIHNjcmlw dCB3aXRoIHRoZSByZWNlbnQgY2hhbmdlcyB0byByYWN0b3JzIChyYWN0b3IgcG9ydHMpPyBJJ20g aGF2aW5nIHRyb3VibGUgcmVwcm9kdWNpbmcgaXQgb24gbXkgZW5kIG9uIHJ1YnktaGVhZC4NCg0K SGVyZSdzIHRoZSBzY3JpcHQgd2l0aCBtb2RpZmljYXRpb25zIGZvciB3b3JraW5nIHdpdGggcG9y dHM6DQoNCmBgYHJ1YnkNClRIUkVBRFMgPSA0DQpKT0JTX1BFUl9USFJFQUQgPSAxMA0KQVJSQVlf U0laRSA9IDEwXzAwMA0KDQpkZWYgcmFjdG9yX2pvYihqb2JfY291bnQsIGFycmF5X3NpemUpDQog IHBvcnQgPSBSYWN0b3I6OlBvcnQubmV3DQoNCiAgcGlwZSA9IFJhY3Rvci5uZXcgZG8NCiAgICBs b29wIHsNCiAgICAgIGpvYiwgd29ya2VyID0gUmFjdG9yLnJlY2VpdmUNCiAgICAgIHdvcmtlci5z ZW5kIGpvYg0KICAgIH0NCiAgZW5kDQoNCiAgd29ya2VycyA9ICgxLi40KS5tYXAgZG8gfGl8DQog ICAgUmFjdG9yLm5ldyhwaXBlLCBwb3J0KSBkbyB8cGlwZSwgam9iX3BvcnR8DQogICAgICB3aGls ZSBqb2IgPSBSYWN0b3IucmVjZWl2ZQ0KICAgICAgICByZXN1bHQgPSBqb2IubWFwIHsgfHh8IHgg KiAyIH0uc3VtDQogICAgICAgIGpvYl9wb3J0LnNlbmQgcmVzdWx0DQogICAgICBlbmQNCiAgICBl bmQNCiAgZW5kDQoNCiAgam9icyA9IEFycmF5Lm5ldyhqb2JfY291bnQpIHsgQXJyYXkubmV3KGFy cmF5X3NpemUpIHsgcmFuZCgxMDAwKSB9IH0NCiAgam9icy5lYWNoX3dpdGhfaW5kZXggZG8gfGpv YiwgaXwNCiAgICB3X2lkeCA9IGkgJSA0DQogICAgcGlwZS5zZW5kKFtqb2IsIHdvcmtlcnNbd19p ZHhdXSkNCiAgZW5kDQoNCiAgcmVzdWx0cyA9IFtdDQogIGpvYnMuc2l6ZS50aW1lcyBkbw0KICAg IHB1dHMgIldhaXRpbmcgZm9yIHJlc3VsdHMuLi4iDQogICAgX3JhY3RvciwgcmVzdWx0ID0gUmFj dG9yLnNlbGVjdChwb3J0KQ0KICAgIHB1dHMgIlJlY2VpdmVkIHJlc3VsdDogI3tyZXN1bHR9Ig0K ICAgIHJlc3VsdHMgPDwgcmVzdWx0DQogIGVuZA0KICByZXN1bHRzDQplbmQNCg0KdGhyZWFkcyA9 IFtdDQpUSFJFQURTLnRpbWVzIGRvDQogIHRocmVhZHMgPDwgVGhyZWFkLm5ldyBkbw0KICAgIHJh Y3Rvcl9qb2IoSk9CU19QRVJfVEhSRUFELCBBUlJBWV9TSVpFKQ0KICBlbmQNCmVuZA0KDQp0aHJl YWRzLmVhY2goJjpqb2luKQ0KcHV0cyAiQWxsIHRocmVhZHMgZmluaXNoZWQuIg0KYGBgDQoNCklm IHlvdSdyZSB1bmZhbWlsaWFyIHdpdGggcmFjdG9yIHBvcnRzLCBoZXJlJ3MgdGhlIHRpY2tldCBm b3IgdGhlIGZlYXR1cmU6IGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTI2Mg0K DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpCdWcgIzIxMzk4OiBS YWN0b3Iuc2VsZWN0IGhhbmdzIHdoZW4gbXVsdGlwbGUgdGhyZWFkcyBzdWJtaXQgaGVhdnkgam9i cyBjb25jdXJyZW50bHkNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTM5OCNj aGFuZ2UtMTEzNjQ4DQoNCiogQXV0aG9yOiBhcmluby50YW1hZGEgKOacieS5gyDnjonnlLApDQoq IFN0YXR1czogT3Blbg0KKiBydWJ5IC12OiBydWJ5IDMuNC4yICgyMDI1LTAyLTE1IHJldmlzaW9u IGQyOTMwZjhlN2EpICtQUklTTSBbYXJtNjQtZGFyd2luMjNdDQoqIEJhY2twb3J0OiAzLjI6IFVO S05PV04sIDMuMzogVU5LTk9XTiwgMy40OiBVTktOT1dODQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpXaGVuIG11bHRpcGxlIHRocmVhZHMgcnVuIGhlYXZ5IFJhY3Rv ci1iYXNlZCBqb2JzIGF0IHRoZSBzYW1lIHRpbWUsIGBSYWN0b3Iuc2VsZWN0KCp3b3JrZXJzKWAg Y2FuIGhhbmcgaW5kZWZpbml0ZWx5IHdpdGhvdXQgYW55IGNyYXNoLCBleGNlcHRpb24sIG9yIGRl YWRsb2NrIGJlaW5nIHJlcG9ydGVkLg0KDQpUaGlzIGlzc3VlIGRvZXMgbm90IG9jY3VyIHdoZW4g b25seSBvbmUgdGhyZWFkIGlzIHJ1bm5pbmcgc2ltaWxhciBqb2JzIOKAlCB0aGUgaGFuZyBoYXBw ZW5zIG9ubHkgd2hlbiBmb3VyIG9yIG1vcmUgdGhyZWFkcyBzdWJtaXQgbGFyZ2Ugam9icyBjb25j dXJyZW50bHkgdG8gYSBzaGFyZWQgUmFjdG9yIHBpcGVsaW5lLg0KDQojIyMgU3RlcHMgdG8gUmVw cm9kdWNlDQoNClJ1biB0aGUgc2NyaXB0IGJlbG93IGluIFJ1YnkgMy40LjIgb3IgbGF0ZXIuDQoN CkluIHNvbWUgcnVucywgb25lIG9yIG1vcmUgdGhyZWFkcyB3aWxsIGhhbmcgZm9yZXZlciBhdCBS YWN0b3Iuc2VsZWN0Lg0KDQpUaGUgaXNzdWUgcmVwcm9kdWNlcyBtb3JlIGVhc2lseSBvbiBtYWNo aW5lcyB3aXRoIG11bHRpcGxlIGNvcmVzIGFuZCBzdWZmaWNpZW50IG1lbW9yeS4NCg0KIyMjIEV4 cGVjdGVkIEJlaGF2aW9yDQpBbGwgY2FsbHMgdG8gUmFjdG9yLnNlbGVjdCgqd29ya2Vycykgc2hv dWxkIHJldHVybiB3aGVuIGFueSB3b3JrZXIgUmFjdG9yIHlpZWxkcyBhIHJlc3VsdC4gQWxsIGpv YnMgc2hvdWxkIGNvbXBsZXRlLg0KDQojIyMgQWN0dWFsIEJlaGF2aW9yDQoNCi0gSW4gc29tZSBy dW5zIChlc3BlY2lhbGx5IHdpdGggbXVsdGlwbGUgdGhyZWFkcyksIGBSYWN0b3Iuc2VsZWN0YCBo YW5ncyBhbmQgbmV2ZXIgcmV0dXJucy4NCg0KLSBUaGVyZSBpcyBubyBjcmFzaCBvciBleGNlcHRp b247IHRoZSBwcm9jZXNzIHJlbWFpbnMgYWxpdmUgYnV0IGJsb2NrZWQuDQoNCi0gQWxsIFJhY3Rv cnMgYW5kIHRocmVhZHMgYXJlIGNyZWF0ZWQgYW5kIHN0YXJ0ZWQgY29ycmVjdGx5Lg0KDQotIFRo aXMgYmVoYXZpb3IgZG9lcyBub3Qgb2NjdXIgd2hlbiBvbmx5IG9uZSB0aHJlYWQgcGVyZm9ybXMg dGhlIHNhbWUgam9iIHNlcXVlbnRpYWxseS4NCg0KLSBJdCBhcHBlYXJzIHRoYXQgYFJhY3Rvci5z ZWxlY3RgIGRvZXMgbm90IGFsd2F5cyBiZWhhdmUgcmVsaWFibHkgdW5kZXIgY29uY3VycmVudCBt dWx0aXRocmVhZGVkIHVzYWdlIHdpdGggaGVhdnkgUmFjdG9yIHBpcGVsaW5lcy4NCg0KUmVwcm9k dWNpYmxlIEV4YW1wbGU6DQpgYGBydWJ5DQpUSFJFQURTID0gNA0KSk9CU19QRVJfVEhSRUFEID0g MTANCkFSUkFZX1NJWkUgPSAxMF8wMDANCg0KZGVmIHJhY3Rvcl9qb2Ioam9iX2NvdW50LCBhcnJh eV9zaXplKQ0KICBwaXBlID0gUmFjdG9yLm5ldyBkbw0KICAgIGxvb3AgeyBSYWN0b3IueWllbGQg UmFjdG9yLnJlY2VpdmUgfQ0KICBlbmQNCg0KICB3b3JrZXJzID0gKDEuLjQpLm1hcCBkbw0KICAg IFJhY3Rvci5uZXcocGlwZSkgZG8gfHBpcGV8DQogICAgICB3aGlsZSBqb2IgPSBwaXBlLnRha2UN CiAgICAgICAgcmVzdWx0ID0gam9iLm1hcCB7IHx4fCB4ICogMiB9LnN1bQ0KICAgICAgICBSYWN0 b3IueWllbGQgcmVzdWx0DQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQoNCiAgam9icyA9IEFy cmF5Lm5ldyhqb2JfY291bnQpIHsgQXJyYXkubmV3KGFycmF5X3NpemUpIHsgcmFuZCgxMDAwKSB9 IH0NCiAgam9icy5lYWNoIHsgfGpvYnwgcGlwZS5zZW5kKGpvYikgfQ0KDQogIHJlc3VsdHMgPSBb XQ0KICBqb2JzLnNpemUudGltZXMgZG8NCiAgICBwdXRzICJXYWl0aW5nIGZvciByZXN1bHRzLi4u Ig0KICAgIF9yYWN0b3IsIHJlc3VsdCA9IFJhY3Rvci5zZWxlY3QoKndvcmtlcnMpDQogICAgcHV0 cyAiUmVjZWl2ZWQgcmVzdWx0OiAje3Jlc3VsdH0iDQogICAgcmVzdWx0cyA8PCByZXN1bHQNCiAg ZW5kDQogIHJlc3VsdHMNCmVuZA0KDQp0aHJlYWRzID0gW10NClRIUkVBRFMudGltZXMgZG8NCiAg dGhyZWFkcyA8PCBUaHJlYWQubmV3IGRvDQogICAgcmFjdG9yX2pvYihKT0JTX1BFUl9USFJFQUQs IEFSUkFZX1NJWkUpDQogIGVuZA0KZW5kDQoNCnRocmVhZHMuZWFjaCgmOmpvaW4pDQpwdXRzICJB bGwgdGhyZWFkcyBmaW5pc2hlZC4iDQpgYGANCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1Ynkt bGFuZy5vcmcvDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBU byB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxh bmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1h bjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcvCg==