diff --git a/mempool.cc b/mempool.cc
index 904779de2db6f5c8d584b5471baeb2b12603dbdb..bcad5727948e06dbace8995c8cdee0c368fc1d6c 100644
--- a/mempool.cc
+++ b/mempool.cc
@@ -86,7 +86,9 @@ void pool::free(void* object)
     auto obj = static_cast<free_object*>(object);
     auto header = to_header(obj);
     if (!--header->nalloc) {
-        _free.erase(_free.iterator_to(*header));
+        if (header->local_free) {
+            _free.erase(_free.iterator_to(*header));
+        }
         // FIXME: add hysteresis
         free_page(header);
     } else {