In jruby#9226 a user discovered that thread interrupt during
an attempt to lock a mutex may render that mutex unusable from any
other fiber, even if it did not successfully lock. This spec tries
to trigger that state by having one thread loop while triggering a
raise interrupt on another thread that repeatedly locks a mutex
from within fibers.
This may not always fail when it is broken due to the timing issues
involved in triggering the interrupt after the lock was acquired
but before interrupts have been handled by the fiber, but 10x seems
sufficient to trigger the bug on JRuby.
Fix and specs for when multiple sibling fibers from the same thread attempt to lock the same mutex.
Additional fix to cover the unreported case of two separate fibers both locking (original case from #9218 was parent thread locks and then a fiber locks). This is the second case added in the specs.