diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2023-11-17 17:57:25 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-17 17:57:25 -0500 |
commit | 24fe22a5da21c9df8584a4ce6b6d1ce18ac41cc2 (patch) | |
tree | cb038d1960cd21049ed7afe5fae962e8b44e9351 /tool/lrama/lib/lrama/output.rb | |
parent | ef72970a046270cc4b1d4ed029128876a9cbab88 (diff) | |
download | ruby-24fe22a5da21c9df8584a4ce6b6d1ce18ac41cc2.tar.gz |
Fix ordering for auto compaction in get_overloaded_cme()
Found through GC.stress + GC.auto_compact crashes in GH-8932.
Previously, the compaction run within `rb_method_entry_alloc()` could
move the `def->body.iseq.cref` and `iseqptr` set up before the call and
leave the `def` pointing to moved addresses. Nothing was marking `def`
during that GC run.
Low probability reproducer:
GC.stress = true
GC.auto_compact = true
arr = []
alloc = 1000.times.map { [] }
alloc = nil
a = arr.first
GC.start
Diffstat (limited to 'tool/lrama/lib/lrama/output.rb')
0 files changed, 0 insertions, 0 deletions