dotnet-dump crashes enumerating sync blocks for .NET 10 Heap dumps on Alpine
- Dominant language
- C++
- Stars
- 1.3k
- Forks
- 404
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 35
Description
## Build Information
Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1586014
Leg Name: `Alpine3_23_x64_Release`
Helix work item: https://helix.dot.net/api/2019-06-17/jobs/eb582c84-13e8-4b26-8dcd-519429686f32/workitems/SOS_linux-musl-x64_Release_dump_2_of_8/console
## Error Message
```json
{
"ErrorMessage": [
"Host=DotnetDump",
"CoreVersion=Net10",
"Command=listnearobj ",
"dotnet-dump did not return output for 'listnearobj "
],
"BuildRetry": false,
"ExcludeConsoleLog": false
}
```
## Description
The SOS.Tests Alpine Helix dump shard consistently crashes the repo-built .NET 8 `dotnet-dump` host while analyzing a .NET 10 Core Workstation Heap dump. The first visible test failure is:
```text
SOS.Tests.ObjectGcHelperTests.ListNearObj_ShowsNeighbours(
config: scenarios/DotnetDump/Core/net10/Dump/Workstation/Heap)
```
`listnearobj` does not return within the two-minute command timeout. The host has already exited with `SIGSEGV`, so subsequent tests sharing that host fail immediately with broken-pipe errors.
The captured crash report identifies this faulting path:
```text
Microsoft.Diagnostics.Runtime.DacInterface.SOSDac.GetSyncBlockData
Microsoft.Diagnostics.Runtime.DacImplementation.DacHeap.EnumerateSyncBlocks
Microsoft.Diagnostics.Runtime.ClrHeap.GetSyncBlocks
Microsoft.Diagnostics.Runtime.ClrHeap.IsObjectCorrupted
Microsoft.Diagnostics.ExtensionCommands.ListNearObjCommand.VerifyAndPrintObject
Microsoft.Diagnostics.ExtensionCommands.ListNearObjCommand.Invoke
```
This is not the earlier concurrent dump-capture authorization race. The work item was launched with one MTP thread:
```text
run-sos-tests.sh Release linux-musl-x64 2 8 Dump net10.0 1
```
The same `dump_2` shard and sync-block enumeration crash have occurred in four consecutive Alpine runs across at least three Helix machines:
| Build | Helix job | Machine | Result |
|---|---|---|---|
| [1586014](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1586014) | `eb582c84-13e8-4b26-8dcd-519429686f32` | `a001PRE` | `ListNearObj` crash |
| [1583943](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1583943) | `be03a846-60a3-4fc8-aa9d-94f766223378` | `a001PR3` | matching `ListNearObj` crash |
| [1583744](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1583744) | `9431a024-135b-4032-9eb2-dbac9f4b7abe` | `a001PR3` | matching sync-block enumeration crashes |
| [1583677](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1583677) | `0faa2c43-eb58-4ca1-802d-e5d19a1dba6b` | `a001PRB` | matching `ListNearObj` crash |
The other seven dump shards and both live shards passed in build 1586014. This issue should not enable automatic build retry because the failure is reproducible across runs and machines.
### Proposed temporary mitigation
Skip only the affected sync-block-dependent command coverage for:
- `linux-musl-*`
- `Host=DotnetDump`
- `CoreVersion=Net10`
- `Flavor=Core`
- `DumpKind=Heap`
Keep the remaining Alpine Heap/Full dump coverage and all live coverage enabled.
### Known issue validation
**Build: :mag_right:** https://dev.azure.com/dnceng-public/public/_build/results?buildId=1586014
**Error message validated:** `[Host=DotnetDump CoreVersion=Net10 Command=listnearobj dotnet-dump did not return output for 'listnearobj `]
**Result validation:** :white_check_mark: Known issue matched with the provided build.
**Validation performed at:** 9/7/2026 6:00:28 PM UTC
### Report
|Build|Repository|Test|Pull Request|
|---|---|---|---|
|[1589773](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1589773)|dotnet/diagnostics|[SOS_linux-musl-x64_Release_dump_2_of_8.WorkItemExecution](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1589773&view=ms.vss-test-web.build-test-results-tab&runId=43891164&resultId=101220)|dotnet/diagnostics#6018|
|[1588197](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1588197)|dotnet/diagnostics|[SOS_linux-musl-x64_Release_dump_2_of_8.WorkItemExecution](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1588197&view=ms.vss-test-web.build-test-results-tab&runId=43833272&resultId=101210)|dotnet/diagnostics#6002|
|[1586014](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1586014)|dotnet/diagnostics|[SOS_linux-musl-x64_Release_dump_2_of_8.WorkItemExecution](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1586014&view=ms.vss-test-web.build-test-results-tab&runId=43769840&resultId=101209)|dotnet/diagnostics#6002|
#### Summary
|24-Hour Hit Count|7-Day Hit Count|1-Month Count|
|---|---|---|
|0|2|3|
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with SOS.Tests.ObjectGcHelperTests.ListNearObj_ShowsNeighbours and the run-sos-tests.sh command for the linux-musl-x64 dump shard. Reproduce the net10.0 Workstation Heap case and inspect how dump shard coverage is selected. Done means only the specified DotnetDump Net10 Alpine Heap sync-block-dependent coverage is skipped while the remaining Alpine dump and live coverage stays enabled.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, linux
- Domain
- devtools, operating-systems, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 65/100