[ruby-core:122584] [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-23 19:07:03 UTC
List:
ruby-core #122584
SXNzdWUgIzIxMzk4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbHVrZS1ncnUgKEx1a2UgR3J1YmVyKS4N Cg0KQXNzaWduZWUgc2V0IHRvIHJhY3Rvcg0KVGFyZ2V0IHZlcnNpb24gc2V0IHRvIDMuNQ0KDQpJ IHNlbnQgYSBbUFJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xMzY4MikgZm9y IHRoaXMgYnV0IEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHRoZSBwcm9wZXIgZml4IG9yIGlmIHdl IHNob3VsZCB1c2UgYSBkaWZmZXJlbnQgbXV0ZXggdG8gd2FpdCBmb3IgY29uZHZhciBmb3IgRE5U cy4gSSBkaWQsIGhvd2V2ZXIsIGZpZ3VyZSBvdXQgd2h5IGl0J3MgaGFwcGVuaW5nLiBAa28xIHdo YXQgYXJlIHlvdXIgdGhvdWdodHM/DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCkJ1ZyAjMjEzOTg6IFJhY3Rvci5zZWxlY3QgaGFuZ3Mgd2hlbiBtdWx0aXBsZSB0 aHJlYWRzIHN1Ym1pdCBoZWF2eSBqb2JzIGNvbmN1cnJlbnRseQ0KaHR0cHM6Ly9idWdzLnJ1Ynkt bGFuZy5vcmcvaXNzdWVzLzIxMzk4I2NoYW5nZS0xMTM4MTkNCg0KKiBBdXRob3I6IGFyaW5vLnRh bWFkYSAo5pyJ5LmDIOeOieeUsCkNCiogU3RhdHVzOiBPcGVuDQoqIEFzc2lnbmVlOiByYWN0b3IN CiogVGFyZ2V0IHZlcnNpb246IDMuNQ0KKiBydWJ5IC12OiBydWJ5IDMuNC4yICgyMDI1LTAyLTE1 IHJldmlzaW9uIGQyOTMwZjhlN2EpICtQUklTTSBbYXJtNjQtZGFyd2luMjNdDQoqIEJhY2twb3J0 OiAzLjI6IFVOS05PV04sIDMuMzogVU5LTk9XTiwgMy40OiBVTktOT1dODQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpXaGVuIG11bHRpcGxlIHRocmVhZHMgcnVuIGhl YXZ5IFJhY3Rvci1iYXNlZCBqb2JzIGF0IHRoZSBzYW1lIHRpbWUsIGBSYWN0b3Iuc2VsZWN0KCp3 b3JrZXJzKWAgY2FuIGhhbmcgaW5kZWZpbml0ZWx5IHdpdGhvdXQgYW55IGNyYXNoLCBleGNlcHRp b24sIG9yIGRlYWRsb2NrIGJlaW5nIHJlcG9ydGVkLg0KDQpUaGlzIGlzc3VlIGRvZXMgbm90IG9j Y3VyIHdoZW4gb25seSBvbmUgdGhyZWFkIGlzIHJ1bm5pbmcgc2ltaWxhciBqb2JzIOKAlCB0aGUg aGFuZyBoYXBwZW5zIG9ubHkgd2hlbiBmb3VyIG9yIG1vcmUgdGhyZWFkcyBzdWJtaXQgbGFyZ2Ug am9icyBjb25jdXJyZW50bHkgdG8gYSBzaGFyZWQgUmFjdG9yIHBpcGVsaW5lLg0KDQojIyMgU3Rl cHMgdG8gUmVwcm9kdWNlDQoNClJ1biB0aGUgc2NyaXB0IGJlbG93IGluIFJ1YnkgMy40LjIgb3Ig bGF0ZXIuDQoNCkluIHNvbWUgcnVucywgb25lIG9yIG1vcmUgdGhyZWFkcyB3aWxsIGhhbmcgZm9y ZXZlciBhdCBSYWN0b3Iuc2VsZWN0Lg0KDQpUaGUgaXNzdWUgcmVwcm9kdWNlcyBtb3JlIGVhc2ls eSBvbiBtYWNoaW5lcyB3aXRoIG11bHRpcGxlIGNvcmVzIGFuZCBzdWZmaWNpZW50IG1lbW9yeS4N Cg0KIyMjIEV4cGVjdGVkIEJlaGF2aW9yDQpBbGwgY2FsbHMgdG8gUmFjdG9yLnNlbGVjdCgqd29y a2Vycykgc2hvdWxkIHJldHVybiB3aGVuIGFueSB3b3JrZXIgUmFjdG9yIHlpZWxkcyBhIHJlc3Vs dC4gQWxsIGpvYnMgc2hvdWxkIGNvbXBsZXRlLg0KDQojIyMgQWN0dWFsIEJlaGF2aW9yDQoNCi0g SW4gc29tZSBydW5zIChlc3BlY2lhbGx5IHdpdGggbXVsdGlwbGUgdGhyZWFkcyksIGBSYWN0b3Iu c2VsZWN0YCBoYW5ncyBhbmQgbmV2ZXIgcmV0dXJucy4NCg0KLSBUaGVyZSBpcyBubyBjcmFzaCBv ciBleGNlcHRpb247IHRoZSBwcm9jZXNzIHJlbWFpbnMgYWxpdmUgYnV0IGJsb2NrZWQuDQoNCi0g QWxsIFJhY3RvcnMgYW5kIHRocmVhZHMgYXJlIGNyZWF0ZWQgYW5kIHN0YXJ0ZWQgY29ycmVjdGx5 Lg0KDQotIFRoaXMgYmVoYXZpb3IgZG9lcyBub3Qgb2NjdXIgd2hlbiBvbmx5IG9uZSB0aHJlYWQg cGVyZm9ybXMgdGhlIHNhbWUgam9iIHNlcXVlbnRpYWxseS4NCg0KLSBJdCBhcHBlYXJzIHRoYXQg YFJhY3Rvci5zZWxlY3RgIGRvZXMgbm90IGFsd2F5cyBiZWhhdmUgcmVsaWFibHkgdW5kZXIgY29u Y3VycmVudCBtdWx0aXRocmVhZGVkIHVzYWdlIHdpdGggaGVhdnkgUmFjdG9yIHBpcGVsaW5lcy4N Cg0KUmVwcm9kdWNpYmxlIEV4YW1wbGU6DQpgYGBydWJ5DQpUSFJFQURTID0gNA0KSk9CU19QRVJf VEhSRUFEID0gMTANCkFSUkFZX1NJWkUgPSAxMF8wMDANCg0KZGVmIHJhY3Rvcl9qb2Ioam9iX2Nv dW50LCBhcnJheV9zaXplKQ0KICBwaXBlID0gUmFjdG9yLm5ldyBkbw0KICAgIGxvb3AgeyBSYWN0 b3IueWllbGQgUmFjdG9yLnJlY2VpdmUgfQ0KICBlbmQNCg0KICB3b3JrZXJzID0gKDEuLjQpLm1h cCBkbw0KICAgIFJhY3Rvci5uZXcocGlwZSkgZG8gfHBpcGV8DQogICAgICB3aGlsZSBqb2IgPSBw aXBlLnRha2UNCiAgICAgICAgcmVzdWx0ID0gam9iLm1hcCB7IHx4fCB4ICogMiB9LnN1bQ0KICAg ICAgICBSYWN0b3IueWllbGQgcmVzdWx0DQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQoNCiAg am9icyA9IEFycmF5Lm5ldyhqb2JfY291bnQpIHsgQXJyYXkubmV3KGFycmF5X3NpemUpIHsgcmFu ZCgxMDAwKSB9IH0NCiAgam9icy5lYWNoIHsgfGpvYnwgcGlwZS5zZW5kKGpvYikgfQ0KDQogIHJl c3VsdHMgPSBbXQ0KICBqb2JzLnNpemUudGltZXMgZG8NCiAgICBwdXRzICJXYWl0aW5nIGZvciBy ZXN1bHRzLi4uIg0KICAgIF9yYWN0b3IsIHJlc3VsdCA9IFJhY3Rvci5zZWxlY3QoKndvcmtlcnMp DQogICAgcHV0cyAiUmVjZWl2ZWQgcmVzdWx0OiAje3Jlc3VsdH0iDQogICAgcmVzdWx0cyA8PCBy ZXN1bHQNCiAgZW5kDQogIHJlc3VsdHMNCmVuZA0KDQp0aHJlYWRzID0gW10NClRIUkVBRFMudGlt ZXMgZG8NCiAgdGhyZWFkcyA8PCBUaHJlYWQubmV3IGRvDQogICAgcmFjdG9yX2pvYihKT0JTX1BF Ul9USFJFQUQsIEFSUkFZX1NJWkUpDQogIGVuZA0KZW5kDQoNCnRocmVhZHMuZWFjaCgmOmpvaW4p DQpwdXRzICJBbGwgdGhyZWFkcyBmaW5pc2hlZC4iDQpgYGANCg0KDQoNCi0tIA0KaHR0cHM6Ly9i dWdzLnJ1YnktbGFuZy5vcmcvDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxh bmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBt bC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5v cmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcvCg==