Add a README section about the MRI stuck/crash behavior
This commit is contained in:
parent
1fd5575871
commit
739644e149
1 changed files with 26 additions and 1 deletions
27
README.md
27
README.md
|
@ -74,7 +74,7 @@ Install the gem `mutant` via your preferred method.
|
||||||
gem install mutant
|
gem install mutant
|
||||||
```
|
```
|
||||||
|
|
||||||
If you plan to use the RSpec integration you'll have to install `mutant-rspec` also.
|
If you plan to use the RSpec integration you'll have to install `mutant-rspec` also.
|
||||||
Please add an explicit dependency to `rspec-core` for the RSpec version you want to use.
|
Please add an explicit dependency to `rspec-core` for the RSpec version you want to use.
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
|
@ -83,6 +83,31 @@ gem install mutant-rspec
|
||||||
|
|
||||||
The minitest integration is still in the works.
|
The minitest integration is still in the works.
|
||||||
|
|
||||||
|
The Crash / Stuck Problem (MRI)
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Mutations generated by mutant can cause MRI to enter VM states its not prepared for.
|
||||||
|
All MRI versions above 1.9 are affected by this depending on your compiler flags, compiler version,
|
||||||
|
and OS scheduling behavior.
|
||||||
|
|
||||||
|
This can have the following unintended effects:
|
||||||
|
|
||||||
|
* MRI crashes with a segfault. Mutant kills each mutation in a dedicated fork to isolate
|
||||||
|
the mutations side effects when this fork terminates abnormally (segfault) mutant
|
||||||
|
counts the mutation as killed.
|
||||||
|
|
||||||
|
* MRI crashes with a segfault and gets stuck when handling the segfault.
|
||||||
|
Depending on the number of active kill jobs mutant might appear to continue normally untill
|
||||||
|
all workers are stuck into this state when it begins to hang.
|
||||||
|
Currently mutant must assume that your test suite simply not terminated yet as from the outside
|
||||||
|
(parent process) the difference between a long running test and a stuck MRI is not observable.
|
||||||
|
Its planned to implement a timeout enforced from the parent process, but ideally MRI simply gets fixed.
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
* Mutant bug: https://github.com/mbj/mutant/issues/265
|
||||||
|
* Upstream bug: https://bugs.ruby-lang.org/issues/10460
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue