Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dba6d443 authored by Peter Collingbourne's avatar Peter Collingbourne Committed by Suren Baghdasaryan
Browse files

libprocessgroup: Deliberately leak TaskProfiles and CgroupMap instances.

This avoids a race between destruction on process exit and concurrent
access from another thread.

Bug: 129023204
Change-Id: Iecafa67a78e2cce53687156e7f91547b4a23ec13
parent c3e96512
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -336,8 +336,10 @@ CgroupMap::~CgroupMap() {
}

CgroupMap& CgroupMap::GetInstance() {
    static CgroupMap instance;
    return instance;
    // Deliberately leak this object to avoid a race between destruction on
    // process exit and concurrent access from another thread.
    static auto* instance = new CgroupMap;
    return *instance;
}

bool CgroupMap::LoadRcFile() {
+4 −2
Original line number Diff line number Diff line
@@ -284,8 +284,10 @@ bool TaskProfile::ExecuteForTask(int tid) const {
}

TaskProfiles& TaskProfiles::GetInstance() {
    static TaskProfiles instance;
    return instance;
    // Deliberately leak this object to avoid a race between destruction on
    // process exit and concurrent access from another thread.
    static auto* instance = new TaskProfiles;
    return *instance;
}

TaskProfiles::TaskProfiles() {