Skip to content

Legacy DAC SyncBlock data is unavailable for macOS x64 .NET 11 dumps #5985

Open

Description

@steveisok

Description

When a macOS x64 .NET 11 dump is analyzed with dotnet-dump and the matching legacy DAC, SyncBlock data is unavailable. This causes two deterministic SOS failures against the same capture-family dump.

syncblk fails instead of listing an intentionally inflated, held monitor:

> syncblk
Error requesting SyncBlk data

verifyheap consequently reports apparent heap corruption for an object whose SyncBlock cannot be found:

Segment          Object           Failure             Reason
00058acda2d0     00018c4052f8     SyncBlockMismatch   Object 18c4052f8 System.Object had a SyncBlock index of 1 but the runtime has no matching SyncBlock
1,154 objects verified, 1 error.

Expected behavior:

  • syncblk lists the held SyncBlock with MonitorHeld > 0.
  • verifyheap reports 0 errors and No heap corruption detected.

Minimal replay:

dotnet-dump analyze heap.dmp
> runtimes --usecdac false --DacSignatureVerification false
> syncblk
> verifyheap

The failures reproduce in both Debug and Release SOS.Tests runs. Corresponding cDAC and LLDB configurations pass against the identical capture-family dump. The exact legacy-DAC dotnet-dump configurations also pass on Ubuntu, indicating that capture/transfer corruption is not involved and that this is macOS-specific.

Configuration

  • Tool: dotnet-dump
  • Host: macOS 15 x64 (osx.15.amd64.open)
  • Target runtime: .NET 11.0.26.42702; product layout 11.0.0-rc.2.26426.102
  • Target: Core framework-dependent debuggee
  • GC: Workstation
  • Analysis mode: Heap dump
  • DAC: matching legacy libmscordaccore.dylib
  • Test configurations:
    • SOS.Tests.SpecializedInspectionTests.SyncBlk_ReportsInflatedMonitor(config: scenarios/DotnetDump/Core/net11/Dump/Workstation/Heap)
    • SOS.Tests.GcInspectionTests.VerifyHeap_ReportsNoCorruption(config: scenarios/DotnetDump/Core/net11/Dump/Workstation/Heap)
  • Observed in dotnet/diagnostics#5981
  • Helix jobs:

Regression?

This does not appear entirely new. Diagnostics tests have skipped Unix syncblk validation since 667723e0 in October 2019, with the comment:

On Linux/MacOS we sometimes get "Error requesting SyncBlk data" error from the DAC.

The new SOS.Tests harness makes the failure deterministic for this .NET 11 macOS scenario and also exposes the associated verifyheap false positive.

Other information

  • stderr is empty.
  • The matching runtime and legacy DAC load successfully.
  • Other SOS commands work in the same dotnet-dump session.
  • Ubuntu Debug and Release both pass these exact .NET 11 legacy-DAC configurations.
  • This is distinct from dotnet/runtime#124691, which implemented the cDAC GetSyncBlockData API.
  • Related historical issue: dotnet/runtime#11407, which enabled syncblk on Unix.

Activity

  1. changed the title [-]Legacy DAC SyncBlock data is unavailable for macOS .NET 11 dumps[/-] [+]Legacy DAC SyncBlock data is unavailable for macOS x64 .NET 11 dumps[/+] on Aug 28, 2026
  2. added a commit that references this issue on Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions