pytorch
daffff99 - [Profiler] Make `RecordQueue` manage the lifetime of `PythonTracer`. (#83964)

Commit
2 years ago
[Profiler] Make `RecordQueue` manage the lifetime of `PythonTracer`. (#83964) `PythonTracer` holds a pointer to an owning `RecordQueue`, however that relationship is not enforced and it is possible to dangle that pointer if the ProfilerState owning the `RecordQueue` is destroyed without proper cleanup. We currently use a singleton to enforce the requirement that only one python tracer is active at a time, however a better formulation is to simply enforce that with an atomic bool and manage object lifetime through composition. In this new architecture, `RecordQueue` explicitly holds a unique_ptr to the python tracer instance. That way if `~RecordQueue` is called it will call `~PythonTracer` which can then clean up any state. Overall it is just a simpler ownership model, and less prone to unexpected failures. Differential Revision: [D38955616](https://our.internmc.facebook.com/intern/diff/D38955616/) Pull Request resolved: https://github.com/pytorch/pytorch/pull/83964 Approved by: https://github.com/slgong-fb
Author
Taylor Robie
Committer
Parents
Loading