[ci-scan] Vector3Interop_r crash (SIGSEGV) under GCStress=0xC JitStress=2 (gcstress-extra pipeline)
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
## Reasoning
`JIT/SIMD/Vector3Interop_r/Vector3Interop_r.cmd` consistently crashes with a native SIGSEGV (App Exit Code 22) when run under `DOTNET_GCStress=0xC DOTNET_JitStress=2 DOTNET_TieredCompilation=0` (the gcstress-extra pipeline configuration). The crash occurs in the PAL signal handler stack, indicating an unhandled memory access fault inside the JIT-compiled code while GC stress is active. This has been reproduced on linux-x64, osx-arm64, and linux-arm64 in at least two consecutive pipeline runs. It is not a test-infrastructure issue — `Vector3Interop_r` exercises `Vector3` P/Invoke interop and Vector SIMD operations which are sensitive to the GC moving objects during JIT codegen stress.
## Impact on platforms
- **linux-x64** · pipeline 113 (gcstress-extra) · build [1406727](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1406727) · work item `JIT.SIMD.0.1` · Helix job `3565d1f5` · queue `azurelinux.3.amd64.open.rt` · exit code 22 · signal 11 (SIGSEGV)
- **osx-arm64** · pipeline 113 · build 1406727 · work item `JIT.SIMD.0.1` · Helix job `4bc8d02d` · queue `osx.15.arm64.open` · exit code 22 · signal 11 (SIGSEGV)
- **linux-arm64** · pipeline 113 · build 1406727 · work item `JIT.SIMD.0.1` · Helix job `5bb4c8cb` · exit code 22 · signal 11 (SIGSEGV)
- Confirmed recurring: same `JIT.SIMD.0.1` failure in [build 1406299](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1406299) (2026-05-02)
## Errors log
````
22:17:28.190 Running test: JIT/SIMD/Vector3Interop_r/Vector3Interop_r.cmd
[createdump] Gathering state for process ... dotnet
[createdump] Crashing thread f43a signal 11 (000b)
[createdump] Written 149319680 bytes to core file
App Exit Code: 22
END EXECUTION - FAILED
common_signal_handler(int, siginfo_t*, void*, int, ...) at src/coreclr/pal/src/exception/signal.cpp:1167:9
sigsegv_handler(int, siginfo_t*, void*) at src/coreclr/pal/src/exception/signal.cpp:762:1
```
Stress mode env:
```
DOTNET_TieredCompilation=0
DOTNET_GCStress=0xC
DOTNET_JitStress=2
DOTNET_DbgEnableMiniDump=1
````
## First build it occurred
First seen in this scan window: [build 1406299](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1406299), finished 2026-05-02T22:30:29Z. Confirmed in subsequent build [1406727](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1406727), finished 2026-05-04T01:11:48Z. **Scanned window only — true origin may be earlier.** Occurrences in window: 2+ builds, 3 platforms.
## Recommended action
1. **Triage**: Run `Vector3Interop_r` locally with `DOTNET_GCStress=0xC DOTNET_JitStress=2 DOTNET_TieredCompilation=0` to reproduce. Examine the crash dump for the faulting instruction and the managed/native call stack to determine whether the fault is in JIT-emitted code (bad code gen under stress), in the GC compaction path, or in the P/Invoke stub for `Vector3`.
2. **JIT owners** (`@dotnet/area-infrastructure-coreclr-jit`): Check whether the `Vector3Interop` test exercises a code path that is sensitive to the combination of `GCStress=0xC` (both `0x4` mark-phase and `0x8` compaction) and `JitStress=2`.
3. **GC owners** (`@dotnet/area-gc`): Verify whether the crash is triggered by a moving GC during a P/Invoke that holds a reference to a `Vector3` value on the stack.
4. **Short-term muting**: If the crash is confirmed to be environment-specific (stress-only), add `[ActiveIssue("https://github.com/dotnet/runtime/issues/", typeof(TestLibrary.PlatformDetection), nameof(TestLibrary.PlatformDetection.IsStressTest))]` to the `Vector3Interop_r` test.
5. **Files to investigate**: `src/tests/JIT/SIMD/Vector3Interop/Vector3Interop.cs`, `src/coreclr/jit/lsra*.cpp` (SIMD register allocation), `src/coreclr/gc/gc.cpp` (compaction + interop).
> [!NOTE]
>
> 🔒 Integrity filter blocked 4 items
>
> The following items were blocked because they don't meet the GitHub integrity level.
>
> - [#125371](https://github.com/dotnet/runtime/issues/125371) `search_issues`: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
> - [#125825](https://github.com/dotnet/runtime/issues/125825) `search_issues`: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
> - [#55803](https://github.com/dotnet/runtime/issues/55803) `search_issues`: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
> - [#127128](https://github.com/dotnet/runtime/issues/127128) `search_issues`: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
>
> To allow these resources, lower `min-integrity` in your GitHub frontmatter:
>
> ```yaml
> tools:
> github:
> min-integrity: approved # merged | approved | unapproved | none
> ```
>
>
> Generated by [CI Outer-Loop Failure Scanner](https://github.com/dotnet/runtime/actions/runs/25398880060/agentic_workflow) · ● 19.3M · [◷](https://github.com/search?q=repo%3Adotnet%2Fruntime+is%3Aissue+%22gh-aw-workflow-call-id%3A+dotnet%2Fruntime%2Fmobile-scan%22&type=issues)
Contributor guide
Assessment
This issue has not been assessed yet.