Summary
The native home_rt suite can fail nondeterministically in JSC GC while sweeping a JSString:
WTFCrashWithInfoImpl
WTF::AtomStringImpl::remove
WTF::StringImpl::~StringImpl
JSC::JSString::destroy
JSC::MarkedBlock::Handle::specializedSweepThe process exits from SIGTRAP (build reports code 133). A run on 2026-08-31 reached jsc.webcore_globals.test.Response constructed from a ReadableStream drains to the original string before the assertion. An earlier crash report from 2026-08-30 has the same AtomStringImpl::remove signature, so this predates the current native FS/StatFS ownership checkpoint.
Evidence
- failing command:
zig build test -Dfilter=home_rt -j1 - failing run: signal-derived exit 133 during test 1623/1835
- exact filtered test under the same native launcher: 20/20 passed
- clean full retry: 1,816 passed, 19 skipped, 0 failed
- crash reports:
test-2026-08-30-110824.ips: identicalAtomStringImpl::removeassertiontest-2026-08-31-141445.ips: current occurrence
This points to prior-suite state or GC timing rather than deterministic behavior in the named Response test.
Acceptance criteria
- Reproduce under a deterministic test order or explicit GC stress.
- Identify the over-release/cross-VM ownership path that leaves an atomized string invalid during sweep.
- Add a focused native regression that fails before the fix.
- Pass repeated filtered stress and repeated complete
home_rtruns without the assertion.
Tracks the native stability work required by #66. Keep separate from other deterministic native crashes.