Skip to content

Ability to assert on stat lifetime issues in debug build #18047

@ggreenway

Description

@ggreenway

There have been some issues recently with stat references (Counter& et al) outliving their owning Scope. This can lead to use-after-free.

One way to help detect this would be for Counter& and friends to be replaced with a class CounterRef. This class, in a release build, would only contain a Counter&, to avoid a huge increase in memory use. But in debug builds. This object would implement the Counter interface, passing all calls through to the stored Counter&.

In a debug build, this object would also hold a reference to the Scope that created it, and call a new method on the Scope to inform that it is using a stat from that Scope. In Scope's destructor, it would ASSERT if it is still in use by anything.

Hopefully, the macros that create most stats could be modified to work for this, instead of needing to touch all code creates stats.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions