Skip to content

C2a: Validate live ClrMD and layout-sensitive drilldowns across .NET 8/9/10 #931

Description

@pedrosakuma

Parent and outcome

Parent: #919, Phase 3 / C2a. Independently deliverable compatibility coverage.

Add representative live ClrMD and runtime-layout-sensitive evidence across .NET 8/9/10, not an exhaustive collector/runtime/OS matrix.

Current evidence

Core CrossVersionTargetTests.cs covers .NET 8/9 counters, GC events and dump-based ClrMD, not live attach. samples/MultiVersionSample/Program.cs, DotnetDiagnostics.TestSupport/MultiVersionSampleProcess.cs and pinned-target LiveCoreClrProcessTests.cs provide reusable fixture/readiness patterns. ClrMdAsyncStateMachineWalker.cs represents layout-sensitive analysis.

docs/runtime-version-compat-matrix.md explicitly identifies live ClrMD, async and closed-generic gaps; reconcile its CI OS narrative with actual workflow/runtime installation.

Scope and acceptance

  • Provide bounded fixture modes for a recognizable retained object, pending async operation and known closed generic instantiation.
  • Exercise live heap/thread inspection plus representative async and closed-generic resolution against actual .NET 8/9/10 targets in one documented Linux x64 sidecar topology.
  • Assert actual target runtime major and expected fixture identities/results, not merely successful attach or nonempty JSON.
  • Reuse applicable Windows net10 controls; explicitly leave unexercised Windows cross-version cells unclaimed.
  • Use matching UID, shared diagnostic socket visibility and pod-like PID visibility; grant SYS_PTRACE only to the sidecar where required. No shared-host Yama relaxation, privileged container or host-PID topology.
  • Distinguish pass, unsupported/missing prerequisite, assertion failure and timeout/abort. Expected cases on the provisioned compatibility job must execute and pass; missing discovery/skips are not coverage.
  • Start new topology automation advisory. Required-check promotion needs a separate stability/readiness decision.
  • Update documentation by exact mechanism, target version, OS, architecture and topology, linking successful evidence and unresolved gaps.

Validation and closure evidence

Use the pinned SDK, targeted new selectors alongside CrossVersionTargetTests, fixed deadlines and no pass-seeking retries. Reuse scripts/test_evidence.py inventory patterns.

Preserve commit, SDK/target runtime/ClrMD/DAC versions, kernel/container identities, UID/capability/PID setup, expected/executed cases, actual drilldown results, TRX/logs/exits, timeout and cleanup outcomes. Publish a bounded result table and durable artifacts.

Requires supported target runtimes and safely scoped ptrace. Coordinate shared sample/workflow edits with C2b without inventing a hard dependency. No all-reader/all-drilldown matrix, NativeAOT parity, dependency upgrade or #879 fix.

Activity

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

    diagnosticsAdvanced diagnostic featuresinfraInfrastructure, deployment topologies

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions