Legacy DAC SyncBlock data is unavailable for macOS x64 .NET 11 dumps
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- cpp
- Ambito
- devtools, operating-systems
Direzione di ricerca
Riprodurre con dotnet-dump analyze heap.dmp usando i runtime e le opzioni DAC elencati, quindi esaminare le configurazioni indicate SOS.Tests.SpecializedInspectionTests.SyncBlk_ReportsInflatedMonitor e GcInspectionTests.VerifyHeap_ReportsNoCorruption. Confrontare il comportamento di macOS x64 con legacy-DAC con le esecuzioni riuscite con cDAC, LLDB e Ubuntu. Il lavoro è completato quando syncblk elenca il SyncBlock mantenuto e verifyheap segnala 0 errori senza rilevare corruzione dell'heap.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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:
syncblklists the held SyncBlock withMonitorHeld > 0.verifyheapreports0 errorsandNo 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 layout11.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-dumpsession. - Ubuntu Debug and Release both pass these exact .NET 11 legacy-DAC configurations.
- This is distinct from dotnet/runtime#124691, which implemented the cDAC
GetSyncBlockDataAPI. - Related historical issue: dotnet/runtime#11407, which enabled
syncblkon Unix.
- Lingua principale
- C++
- Stelle
- 1.3k
- Fork
- 407
- Merge medio
- 21h 5m
- PR unite (30g)
- 78
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dotnet/diagnostics
-
Fix StackAndOtherTests.script line number verification for .NET 11 and Windows x64Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dotnet/diagnostics#5884 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
dotnet/diagnostics#6225 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
dotnet/diagnostics#6213 ·
I maintainer di solito rispondono entro 1 giorno
-
Isolate SOS hosting from other debugger extensions that use managed codeForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
dotnet/diagnostics#6207 ·
I maintainer di solito rispondono entro 1 giorno
-
Known Build Error
Difficoltà 4/5 3-5 giorni Idoneità per principianti 49/100
dotnet/diagnostics#6190 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di dotnet/diagnostics
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
AutoHotkey/AutoHotkey#380 ·
-
documentation
Difficoltà 1/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Lua File: add readWhole()Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
grumpycoders/pcsx-redux#2667 ·
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
google/tensorstore#305 ·