From 2adf93ba0e28e918b38e0a627730051700709a4d Mon Sep 17 00:00:00 2001 From: Malavan Sotheeswaran Date: Wed, 21 Jun 2023 16:47:12 -0400 Subject: [PATCH] have FreeMemoryLazyFree increment dict refcount so it doesn't try to use a dict that has already been released (#199) --- src/evict.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/evict.cpp b/src/evict.cpp index 954a850ac..94bc132c1 100644 --- a/src/evict.cpp +++ b/src/evict.cpp @@ -483,6 +483,7 @@ public: for (auto de : pair.second) { dictFreeUnlinkedEntry(pair.first, de); } + dictRelease(pair.first); } aeReleaseLock(); --s_clazyFreesInProgress; @@ -513,6 +514,7 @@ public: ); if (itr == vecdictvecde.end() || itr->first != d) { itr = vecdictvecde.insert(itr, std::make_pair(d, std::vector())); + __atomic_fetch_add(&d->refcount, 1, __ATOMIC_ACQ_REL); } serverAssert(itr->first == d); itr->second.push_back(de);