ractor: process hanging (with ractors initialized, but not being used)
I couldn't figure out how to reproduce this in a more contained way, so I'll share what I'm doing in this minitest branch.
I'm trying to make minitest's parallel mode use ractors. If you look at the last commit of the branch, I'm:
- replacing the parallel executor with a ractor-based one;
- I'm defining the ractor executor, where I have a ractor pipe that a pool will consume work from
- I'm turning off parallel subset of tests (to reproduce the bug that I'll be describing).
When I run
rake test in my Mac (BigSur 11.4), the process hangs. I can see that the ractor threads are executing and running, but the test process doesn't respond to the INFO signal interrupt (which should tell me where the process is hanging). This seems like a bug in the VM, as no work is being sent to the parallel executor, i.e. all ractors should be sleeping (I've
puts'd also the executor shutdown process, and it never reaches it).
If I replace the ractor-based executor back with the thread based executor, everything works as expected.
Updated by xtkoba (Tee KOBAYASHI) over 2 years ago
This reproduces for me on x86_64-linux using HoneyryderChuck/minitest issue-872 873ffd8.
In addition to hanging, there appear to be two more (nondeterministic) errors. A full log is attached.
/var/tmp/ruby/yyy/minitest/lib/minitest/test.rb:213:in `with_info_handler': can not access instance variables of classes/modules from non-main Ractors (Ractor::IsolationError)
[BUG] pthread_mutex_destroy: Device or resource busy (EBUSY)
Updated by luke-gru (Luke Gruber) 9 months ago
Is this still an issue with current ruby @xtkoba (Tee KOBAYASHI)? I checkout out your branch and with a few modifications for Ractor::IsolationErrors, it worked for me.
It worked on: 3.3.0-dev and 3.2.0 (2022-12-25 revision a528908271)