-
-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EPoll implementation fails on TruffleRuby #2
Comments
I'm taking a look, it sounds like the main Thread main Fiber is trying to acquire the C extension lock, while another Fiber is paused but still has the C extension lock. |
After some work to print all Fiber backtraces, here is what I see:
So the last Fiber still holds the C extension lock, and is calling Fiber#transfer, and the first Fiber is trying to get the C extension lock but it can't. |
What we need here is that @ioquatix It's unfortunate there is no |
It's also possible to disable the C extensions lock in TruffleRuby with With that we get:
Which means |
Thanks for this detailed analysis. It's really excellent. Well, I plan to improve the GVL handling of this code, i.e. release it. I would say, we should add |
Now the CI passes on #5: https://github.com/eregon/event/runs/2548723638?check_suite_focus=true |
The work you are doing here is amazing, thank you so much. I am looking forward to preparing for Ruby 3.1 when we can officially start rolling this out along with Async 2.x. We should aim to have this fully supported by TruffleRuby if possible. |
@eregon do you have any time to investigate this failure?
https://github.com/socketry/event/runs/2454091746
The text was updated successfully, but these errors were encountered: