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 /test/ruby/test_variable.rb | |
| parent | ef72970a046270cc4b1d4ed029128876a9cbab88 (diff) | |
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 'test/ruby/test_variable.rb')
0 files changed, 0 insertions, 0 deletions
