From ecb501b7f5c77cf3aff3603b22040824ae766b75 Mon Sep 17 00:00:00 2001 From: Sarang Masti Date: Tue, 28 Nov 2017 15:51:10 -0800 Subject: [PATCH] Fix incorrect usages of folly::Synchronized Summary: We need to keep LockedPtr returned by rlock/wlock alive for the entire duration of the loop. Else we are working on a snapshot of the data structure, which might not be what we want. Reviewed By: aary, ot, luciang Differential Revision: D6426613 fbshipit-source-id: 294c0a7b9d756f3116d5cdb3a7b3678f693e0754 --- folly/io/async/EventBaseLocal.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/folly/io/async/EventBaseLocal.cpp b/folly/io/async/EventBaseLocal.cpp index cda63113..c754ae7f 100644 --- a/folly/io/async/EventBaseLocal.cpp +++ b/folly/io/async/EventBaseLocal.cpp @@ -22,7 +22,8 @@ namespace folly { namespace detail { EventBaseLocalBase::~EventBaseLocalBase() { - for (auto* evb : *eventBases_.rlock()) { + auto locked = eventBases_.rlock(); + for (auto* evb : *locked) { evb->runInEventBaseThread([ this, evb, key = key_ ] { evb->localStorage_.erase(key); evb->localStorageToDtor_.erase(this); -- 2.34.1