diff options
author | Takashi Kokubun <[email protected]> | 2020-12-20 22:41:52 -0800 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2020-12-20 22:58:45 -0800 |
commit | 1fdc97f1b76b7532d011b20d52f843a2bb0d1a2f (patch) | |
tree | dfd8ef016c8b8eb49821c85947f1e50abeea2169 /mjit_worker.c | |
parent | a574df14e45b8b5a1de7bfe949e08b61ae51b0bd (diff) |
Mark active_units
to avoid SEGV on mjit_recompile and compact_all_jit_code.
For some reason, ISeqs on stack are sometimes GC-ed (why?) and therefore
it may run mjit_recompile on a GC-ed ISeq, which I expected d07183ec85d
to fix but apparently it may refer to random things if already GC-ed.
Marking active_units would workaround the situation.
http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3292740
Also, while compact_all_jit_code was executed, we saw some SEGVs where
CCs seemed to be already GC-ed, meaning their owner ISeq was not marked
properly. Even if units are still in active_units, it's not guaranteed
that their ISeqs are in use. So in this case we need to mark active_units
for a legitimate reason.
http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3293277
http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3293090
Diffstat (limited to 'mjit_worker.c')
0 files changed, 0 insertions, 0 deletions