Skip to content

Properly manage ownership of GC refs in passive element segments#13179

Merged
fitzgen merged 4 commits intobytecodealliance:mainfrom
fitzgen:issue-13066
Apr 23, 2026
Merged

Properly manage ownership of GC refs in passive element segments#13179
fitzgen merged 4 commits intobytecodealliance:mainfrom
fitzgen:issue-13066

Conversation

@fitzgen
Copy link
Copy Markdown
Member

@fitzgen fitzgen commented Apr 23, 2026

We need to clone_gc_ref when pushing into the segment and drop_gc_ref when clearing the segment, similar to what we do for e.g. setting VMGlobalDefinitions.

Fixes #13066

We need to `clone_gc_ref` when pushing into the segment and `drop_gc_ref` when
clearing the segment, similar to what we do for e.g. setting
`VMGlobalDefinition`s.

Fixes bytecodealliance#13066
@fitzgen fitzgen requested a review from a team as a code owner April 23, 2026 14:07
@fitzgen fitzgen requested review from pchickey and removed request for a team April 23, 2026 14:07
Copy link
Copy Markdown
Contributor

@pchickey pchickey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Approved but I expect it will take some more twiddling to resolve the lint stuff cropping up in CI)

@fitzgen fitzgen enabled auto-merge April 23, 2026 19:48
@fitzgen fitzgen added this pull request to the merge queue Apr 23, 2026
Merged via the queue into bytecodealliance:main with commit 54929c1 Apr 23, 2026
48 checks passed
@fitzgen fitzgen deleted the issue-13066 branch April 23, 2026 20:25
pull Bot pushed a commit to eduardomourar/wasmtime that referenced this pull request Apr 24, 2026
…ecodealliance#13179) (bytecodealliance#13183)

* Properly manage ownership of GC refs in passive element segments

We need to `clone_gc_ref` when pushing into the segment and `drop_gc_ref` when
clearing the segment, similar to what we do for e.g. setting
`VMGlobalDefinition`s.

Fixes bytecodealliance#13066

* fix cfg warnings

* fix cfg_attr

* remove cfg_attr

Co-authored-by: Nick Fitzgerald <fitzgen@gmail.com>
pull Bot pushed a commit to eduardomourar/wasmtime that referenced this pull request Apr 24, 2026
In looking over bytecodealliance#13179 I found it a bit brittle to access `anyref`
fields unconditionally where the determination that the type of the
segment was a GC reference was made much further away. I also found it
somewhat confusing to have methods like `clone_gc_ref` and
`drop_gc_ref` applied to all values which happened to be noops for
non-gc-ref types. I've refactored things a bit internally here to plumb
a `WasmRefType` around and have additionally added comments to why
`anyref` accessors are used despite the value possibly having an
`exnref` or `externref` type.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DRC panic where passive table elements are GC'd too soon

2 participants