Bug 1727405 - Add a diagnostic assert to check that ClientManager::GetOrCreateForCurr...
commit052fc46425ceb4cbed840af875c53db2350d678b
authorLuca Greco <lgreco@mozilla.com>
Thu, 2 Sep 2021 21:24:58 +0000 (2 21:24 +0000)
committerLuca Greco <lgreco@mozilla.com>
Thu, 2 Sep 2021 21:24:58 +0000 (2 21:24 +0000)
tree06c2e3543b9aa89ab35ef9e0408b6de91e7b8d55
parent109504448933f9ce73f200aa46d8661c9fd61864
Bug 1727405 - Add a diagnostic assert to check that ClientManager::GetOrCreateForCurrentThread is not returning a stale ClientManager instance that is already shutdown. r=asuth

While investigating an unexpected test failure triggered by a mochitest that was testing the identity WebExtensions API
(D121683 from Bug 1723852) I did notice that the actual underlying issue was triggered by a leak
(in particular the Extension API class in the initial draft of that D121683 patch was missing a RefPtr
in the NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE macro used for that class) but the issue was presenting
itself as an empty scriptURL in the ClientSource for the test case that was executed after the one that
triggered tha leak, and far enough from where it was actually triggered.

To make it easier to spot the issue nearer to the actual underlying issue, I think that it would be
reasonable to add a diagnostic assertion to ClientManager::GetOrCreateForCurrentThread that would
be triggered earlier if a leak was keeping the ClientManager instance alive in the idle DOM Worker
Thread.

Differential Revision: https://phabricator.services.mozilla.com/D123530
dom/clients/manager/ClientManager.cpp