From bc49157d21e6ec14a41c7b852370d2e6d9509da2 Mon Sep 17 00:00:00 2001 From: Jason Evans Date: Thu, 22 Sep 2016 11:53:19 -0700 Subject: [PATCH] Fix extent_recycle() to exclude other arenas' extents. When attempting to recycle an extent at a specified address, check that the extent belongs to the correct arena. --- src/extent.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/extent.c b/src/extent.c index cb67a27c..29c9d2be 100644 --- a/src/extent.c +++ b/src/extent.c @@ -408,7 +408,8 @@ extent_recycle(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks, if (elm != NULL) { extent = rtree_elm_read_acquired(tsdn, &extents_rtree, elm); - if (extent != NULL && (extent_active_get(extent) || + if (extent != NULL && (extent_arena_get(extent) != arena + || extent_active_get(extent) || extent_retained_get(extent) == cache)) extent = NULL; rtree_elm_release(tsdn, &extents_rtree, elm);