Repository navigation
Test failure: Regressions/coreclr/GitHub_89834/test89834/test89834.cmd #135404
Copy link
Copy link
Closed
Labels
Known Build ErrorUse this to report build issues in the .NET Helix tabUse this to report build issues in the .NET Helix tabarch-arm64area-VM-coreclrblocking-clean-ci-optionalBlocking optional rolling runsBlocking optional rolling runs
Description
Build Information
Build: https://dev.azure.com/dnceng-public/cbb18261-c48f-4abb-8651-8cdcb5474649/_build/results?buildId=1622784
Build error leg or test failing: Regressions/coreclr/GitHub_89834/test89834/test89834.cmd
Error Detail
waitpid() returned successfully (wstatus 00000000) WEXITSTATUS 0 WTERMSIG 0
/private/tmp/helix/working/BC640A16/w/A736093F/e/Regressions/Regressions/../coreclr/GitHub_89834/test89834/test89834.sh: line 465: 54968 Bus error: 10 (core dumped) $LAUNCHER $ExePath "${CLRTestExecutionArguments[@]}"
Return code: 1
Raw output file: /tmp/helix/working/BC640A16/w/A736093F/uploads/coreclr/GitHub_89834/test89834/output.txt
Raw output:
BEGIN EXECUTION
/tmp/helix/working/BC640A16/p/corerun -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true test89834.dll ''
boo
[createdump] Gathering state for process 54968
[createdump] Crashing thread d5b8c0 signal 10 (000a)
[createdump] Writing crash report to file /cores/coredump.54968.dmp.crashreport.json
[createdump] Crash report successfully written
[createdump] Writing minidump with heap to file /cores/coredump.54968.dmp
[createdump] Written 312053944 bytes (19046 pages) to core file
[createdump] Target process is alive
[createdump] Dump successfully written in 641ms
Expected: 100
Actual: 138
END EXECUTION - FAILED
Test Harness Exitcode is : 1
To run the test:
Set up CORE_ROOT and run.
> /private/tmp/helix/working/BC640A16/w/A736093F/e/Regressions/Regressions/../coreclr/GitHub_89834/test89834/test89834.sh
Error Message
Fill the error message using step by step known issues guidance.
{
"ErrorMessage": "Failed test: Regressions/coreclr/GitHub_89834/test89834/test89834.cmd",
"BuildRetry": false,
"ExcludeConsoleLog": false
}Known issue validation
Build: 🔎 https://dev.azure.com/dnceng-public/public/_build/results?buildId=1622784
Error message validated: [Failed test: Regressions/coreclr/GitHub_89834/test89834/test89834.cmd]
Result validation: ✅ Known issue matched with the provided build.
Validation performed at: 10/8/2026 2:15:45 AM UTC
Report
| Build | Repository | Test | Pull Request |
|---|---|---|---|
| 1622784 | dotnet/runtime | Regressions/coreclr/GitHub_89834/test89834/test89834.cmd |
Summary
| 24-Hour Hit Count | 7-Day Hit Count | 1-Month Count |
|---|---|---|
| 0 | 1 | 1 |
Reactions are currently unavailable
Metadata
Metadata
Labels
Known Build ErrorUse this to report build issues in the .NET Helix tabUse this to report build issues in the .NET Helix tabarch-arm64area-VM-coreclrblocking-clean-ci-optionalBlocking optional rolling runsBlocking optional rolling runs
Type
Projects
- StatusShow more project fieldsNo status
Activity
dotnet-policy-service commentedon Oct 8, 2026
Tagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.
agocke commentedon Oct 11, 2026
I downloaded the macOS ARM64 dump and analyzed it with the exact matching CoreCLR native symbols. The evidence points to a GC hole in
CORINFO_HELP_BULK_WRITEBARRIER_SMALL: the helper is classified as non-GC, but its first call can enter the prestub and trigger a collection.This helper was introduced by #134345. The same helper/prestub hole is explicitly listed as not fixed in #135415; this dump shows its ARM64 failure mechanism.
Evidence from the dump and in-memory stress log
AsyncTaskMethodBuilder<int>.GetStateMachineBox<test89834.<Main>d__0>copies the 40-byte state machine using the small bulk-write-barrier helper. I decoded this method's version-5 GC info: it has 28 safepoints, but no safepoint at the bulk-copy return address0x10eaba664(method offset0x204).The call goes through a jump stub at
0x10ea80370to the precode at0x1050b3990. The precode belongs toSystem.Buffer.BulkMoveWithWriteBarrierInternal; the dynamic-helper table also contains that precode address.The stress log records full compacting GC 10815 while this FCall's prestub frame is active, with
GetStateMachineBoxsuspended at0x10eaba664. The box moves from0x7002400040to0x7002077118. The destination interior pointer and the state machine's stack reference are relocated correctly, but the caller's live box reference in X22 is not reported.After returning, the caller immediately executes:
At the subsequent prestub, saved X22 and argument X0 both contain the old box address,
0x7002400040, while the stack reference at0x16ae317c8correctly contains0x7002077118.GC 10816 then attempts to relocate that stale reference.
relocate_addressfollows the brick-table entries into an invalid tree at0x70023fefff, andnode_right_childfaults reading0x70023feff1. The actual fault is SIGBUS, at0x10a583f14:The
relocate_address/tree_searchcrash is therefore the consequence of the stale root, rather than evidence of an independent GC tree-maintenance bug.Source-level mechanism
At the crashing commit,
30f813606aed8f64dbb3e296dba3f99a7c77590f:utils.cppclassifiesCORINFO_HELP_BULK_WRITEBARRIER_SMALLasisNoGC = true.jithelpers.hregisters it as a dynamic helper backed byMETHOD__BUFFER__MEMCOPYGC_SMALL(BulkMoveWithWriteBarrierInternal).LoadDynamicJitHelperresolves the helper usingpMD->GetMultiCallableAddrOfCode().TryGetMultiCallableAddrOfCodereturns the stable entrypoint, allowing the first call to enter the collecting prestub instead of directly calling the native worker.A fix needs to ensure that the no-GC helper resolves directly to the native worker without a collecting prestub transition, or revert the small-copy optimization. This is dump/stress-log/source analysis; I have not reproduced the failure or validated a fix.
Note
This analysis and comment were generated with GitHub Copilot.
Fix test89834 SIGBUS on macOS ARM64 (#135547)