folly/.../ExceptionTracerLib.cpp: provide less DOF fodder (avoid heap use-after-free)
Summary: Before this change, an application would fail consistently with a shutdown-time heap use-after-free (i.e., destructor-order-fiasco when one of the following symbols was used after its static-destruction-triggered free): DECLARE_CALLBACK(CxaThrow); DECLARE_CALLBACK(CxaBeginCatch); DECLARE_CALLBACK(CxaRethrow); DECLARE_CALLBACK(CxaEndCatch); DECLARE_CALLBACK(RethrowException); Each of those would define a classic meyers singleton. Since each destructor is trivial, we can fix this by making each a pseudo-leaky (indestructible) meyers singleton instead. Since each static value is never destroyed, it can never cause a DOF error again. Differential Revision: D3870740 fbshipit-source-id: 625f5d5268768ca0e4125bed72bc66c53618be29
Showing
Please register or sign in to comment