Fix ThreadCachedInt race condition
Summary: Acquire a SharedMutex at ThreadExit to ensure that after unlinking the ThreadEntry from the list, future accessAllThreads() won't miss a destroying thread. This is quite a dangerous fix as it changes some lock ordering semantics. ThreadLocal elements are now destroyed while holding a lock, so if the destruction function acquires a different lock, ordering must be consistent with other uses of accessAllThreads(). I've made accessAllThreads() an opt-in feature via a template parameter and changed all existing uses. I've also fixed a few lock ordering issues that arose due to this change. Reviewed By: andriigrynenko Differential Revision: D3931072 fbshipit-source-id: 4d464408713184080079698df453b95873bb1a6c
Showing
Please register or sign in to comment