mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 07:45:30 +00:00
84814fdc97
The problem in https://bugzilla.mozilla.org/show_bug.cgi?id=325392 was misdiagnosed and then a generic fix in https://bugzilla.mozilla.org/show_bug.cgi?id=485834 (the kungFuDeathGrip in nsObserverService::RemoveObserver) was based on the wrong diagnosis. The root problem in bug 325392 was not that we were calling nsObserverService::RemoveObserver from the destructor, and then reentering the destructor. The refcounting code stabilizes the refcount to 1 before calling the destructor to avoid reentering a destructor. The real problem was that we were deleting an XPCOM object manually after creation but without ever holding a strong reference to it, and so not going through the refcount stabilization (and then the destructor can reenter of course). The generic fix in bug 485834 was based on the spotfix in bug 325392, that was then backed out when the proper fix for that bug landed. I don't think we should keep this kungfuDeathGrip, I ran into it because it causes issues with refcount logging (refcount logging always had an issue with refcounting from a destructor). Differential Revision: https://phabricator.services.mozilla.com/D72300 |
||
---|---|---|
.. | ||
base | ||
build | ||
components | ||
doc | ||
ds | ||
glue | ||
idl-parser | ||
io | ||
libxpt/xptcall | ||
reflect | ||
rust | ||
string | ||
system | ||
tests | ||
threads | ||
windbgdlg | ||
xpidl | ||
moz.build | ||
xpcom-config.h.in | ||
xpcom-private.h.in |