Skip to content

B1.5 (deferred spike): Distinguish retained growth from allocation churn #924

Description

@pedrosakuma

Parent, status and trigger

Parent: #919, Phase 2 / B1.5. Deferred catalog feasibility spike.

Requires A2's gcdump evidence-quality decisions (#927/#928) and B1.2's rubric (#921), plus explicit prioritization. Does not depend on Phase 4 experimental capture modes.

Evidence and question

tests/DotnetDiagnostics.ScenarioEvaluation.Tests/Scenarios/gc-storm.scenario.json uses windowed LOH/Gen2/GC signals; ScenarioReplayTests.cs includes churn with zero final retained LOH. Related validation exists in Core HeapGrowthDiffTests.cs and HeapSnapshotQueryDispatcherTests.cs. This does not yet demonstrate that agent evaluation distinguishes retained growth from transient allocation pressure.

Can one bounded retained-growth workload be distinguished from an allocation-churn control using existing temporal/heap evidence?

Bounded scope and acceptance

  • Use one CoreCLR topology and known-shape workload; bound retained objects/bytes, observations, captures, repetitions and cleanup.
  • Include comparable allocation pressure without retained growth. Peak LOH or an allocation hotspot alone must not establish a leak.
  • Keep workload truth separate from conclusions supported by actual temporal and graph/root evidence.
  • Include degraded/incomplete heap evidence requiring qualified attribution or abstention. No detected loss is not proof of a complete graph.
  • Record capture-induced GC and other observer effects. Intentional retention in the workload is not automatically an application defect.
  • Apply B1 blinding/provenance/assessment conventions and A2 fidelity semantics.
  • Produce replay fixtures and bounded live feasibility evidence; publish GO/NO-GO with a small catalog-integration follow-up only for GO.

No general leak catalog, NativeAOT changes, universal heap-completeness detector, new capture mechanism or MCP tool.

Validation and closure evidence

Reuse existing heap/scenario tests and isolated execution. Preserve workload shape, expected/observed retention, capture timing and quality, competing explanations and the limitations of the decision.

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 features

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions