dotnet / dotnet/diagnostics

dotnet-dump crashes enumerating sync blocks for .NET 10 Heap dumps on Alpine

Open
#6,011 1 comment 0 reactions 0 assignees View on GitHub
Known Build Error
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.