Skip to content

[ci-scan] Mute JIT/SIMD/Vector3Interop under GCStress (gcstress-extra pipeline)#127820

Closed
github-actions[bot] wants to merge 2 commits into
mainfrom
fix/mute-vector3interop-gcstress-127802-82a8f10c1c573d07
Closed

[ci-scan] Mute JIT/SIMD/Vector3Interop under GCStress (gcstress-extra pipeline)#127820
github-actions[bot] wants to merge 2 commits into
mainfrom
fix/mute-vector3interop-gcstress-127802-82a8f10c1c573d07

Conversation

@github-actions

@github-actions github-actions Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor

Reasoning

JIT/SIMD/Vector3Interop_r/Vector3Interop_r.cmd crashes the CoreCLR runtime with a GC assertion failure in Object::ValidateInner (object.cpp:548) when run under DOTNET_GCStress=0xC + DOTNET_JitStress=2 + DOTNET_ReadyToRun=0 on macOS arm64 and Linux x64/arm64.

The crash stack: Thread::DoGcStress → GcScanRoots → TGcInfoDecoder::ReportStackSlotToGC → Object::ValidateInner. This indicates the JIT emits incorrect GC liveness information for a Vector3 struct method — the root cause is in the JIT product code, not in the test.

Adding <GCStressIncompatible>true</GCStressIncompatible> to both the _r (optimized) and _ro (optimized-off) .csproj variants causes the test harness to skip these tests when DOTNET_GCStress is set, matching the pattern used by other stress-incompatible tests (e.g., JIT/Stress/ABI/pinvokes_d.csproj). This is a standard muting approach; the product fix tracked in the linked issue will re-enable the tests when ready.

Impact on platforms

Pipeline Platform/Arch Helix Queue Stress Mode Exit Code
runtime-coreclr gcstress-extra (#154, build 1406727) osx-arm64 osx.26.arm64.open GCStress=0xC + JitStress=2 + ReadyToRun=0 22 (GC assertion crash)
runtime-coreclr gcstress-extra (prior builds, 10/10) linux-x64 azurelinux.3.amd64.open.rt GCStress=0xC + JitStress=2 22
runtime-coreclr gcstress-extra (prior builds) linux-arm64 azurelinux.3.arm64.open GCStress=0xC + JitStress=2 22

Errors log

19:00:31.402 Running test: JIT/SIMD/Vector3Interop_r/Vector3Interop_r.cmd
[createdump] Gathering state for process 67239
[createdump] Crashing thread 28ef16 signal 11 (000b)
[createdump] Writing crash report to file /cores/coredump.67239.dmp.crashreport.json
[createdump] Writing minidump with heap to file /cores/coredump.67239.dmp
[createdump] Written 390697192 bytes (23846 pages) to core file
waitpid() returned successfully (wstatus 00000000) WEXITSTATUS 0 WTERMSIG 0
App Exit Code: 22
Expected: 100
Actual: 22
END EXECUTION - FAILED

Stress environment: DOTNET_GCStress=0xC DOTNET_JitStress=2 DOTNET_ReadyToRun=0 DOTNET_TieredCompilation=0

First build it occurred

First confirmed in scanned window: runtime-coreclr gcstress-extra build 1406727 (2026-05-04). Per the tracking issue, the regression has been present in 10 of 10 builds in the scanned window. The true origin may predate this window.

Linked issue

Fixes #127802 (convergence step — tracking issue #127802 was filed in the previous CI scan run; this PR is the corresponding test mute).

Labels: area-CodeGen-coreclr, GCStress, JitStress, os-linux, os-osx, arch-arm64, arch-x64

Generated by CI Outer-Loop Failure Scanner · ● 9.9M ·

JIT/SIMD/Vector3Interop_r crashes with a GC assertion failure
(Object::ValidateInner) when run under DOTNET_GCStress=0xC +
DOTNET_JitStress=2. This is a product-side JIT bug in GC liveness
tracking for SIMD/Vector3 types.

Mark both _r and _ro variants as GCStressIncompatible to prevent
the crash-induced helix failures until the root cause is fixed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot added agentic-workflows arch-arm64 arch-x64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI GCStress JitStress CLR JIT issues involving JIT internal stress modes os-linux Linux OS (any supported distro) os-osx labels May 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@github-actions

github-actions Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Copilot Code Review — PR #127820

Note

This review was generated by GitHub Copilot.

Holistic Assessment

Motivation: Justified. The Vector3Interop test crashes with a GC assertion failure (Object::ValidateInner) under DOTNET_GCStress=0xC + DOTNET_JitStress=2. This is a known product-side JIT bug in GC liveness tracking for SIMD/Vector3 types, tracked in #127802. Muting the test prevents noisy Helix failures while the root cause is investigated.

Approach: Correct. <GCStressIncompatible>true</GCStressIncompatible> is the standard mechanism for excluding tests from GCStress runs. This pattern is used extensively across src/tests/JIT/ (40+ other test projects use it). Both the _r (optimized) and _ro (read-only optimization) variants are correctly covered.

Summary: ✅ LGTM. Minimal, well-scoped change that follows the established muting pattern with proper issue traceability.


Detailed Findings

✅ Pattern Consistency — Correct usage of GCStressIncompatible

The property is placed in the first <PropertyGroup> alongside the existing MonoAotIncompatible and RequiresProcessIsolation properties, consistent with how other test projects structure their incompatibility markers (e.g., src/tests/JIT/Stress/ABI/, src/tests/JIT/HardwareIntrinsics/).

✅ Completeness — Both test variants covered

Both Vector3Interop_r.csproj and Vector3Interop_ro.csproj are updated. They share the same Vector3Interop.cs source file and native CMake interop dependency, so both would encounter the same GCStress crash path.

✅ Traceability — Issue reference included

The XML comment <!-- https://github.com/dotnet/runtime/issues/127802 --> immediately precedes the property, making it straightforward to locate and unmute once the underlying JIT bug is fixed. This matches the pattern used for the existing MonoAotIncompatible property in the same files.

Generated by Code Review for issue #127820 ·

@kotlarmilos kotlarmilos closed this May 5, 2026
@jkotas jkotas deleted the fix/mute-vector3interop-gcstress-127802-82a8f10c1c573d07 branch May 22, 2026 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agentic-workflows arch-arm64 arch-x64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI GCStress JitStress CLR JIT issues involving JIT internal stress modes os-linux Linux OS (any supported distro)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test failure: JIT/SIMD/Vector3Interop_r under GCStress=0xC+JitStress=2 (gcstress-extra)

1 participant