Skip to content

GenFragmentationPercent(Gen) sometimes throws a null ref exception #2012

@mrsharm

Description

@mrsharm

The call to GenSizeAfterMB in the GenFragmentationPercent call is what causes the null ref.

    public double GenFragmentationPercent(Gens gen)
    {
        return GenFragmentationMB(gen) * 100.0 / GenSizeAfterMB(gen);
    }

That GenSizeAfterMB call fails if the HeapStats are somehow null:

    public double GenSizeAfterMB(Gens gen)
    {
        return gen switch
        {
            Gens.GenPinObj => (double)HeapStats.GenerationSize4 / 1000000.0,
            Gens.GenLargeObj => (double)HeapStats.GenerationSize3 / 1000000.0,
            Gens.Gen2 => (double)HeapStats.GenerationSize2 / 1000000.0,
            Gens.Gen1 => (double)HeapStats.GenerationSize1 / 1000000.0,
            Gens.Gen0 => (double)HeapStats.GenerationSize0 / 1000000.0,
            _ => double.NaN,
        };
    }

This should be guarded against.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions