From 5c4d5a72e48db6ddb8a7d09fcb75e7d5fd41c1e2 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 5 Mar 2025 11:32:32 +0100 Subject: [PATCH] Fix embarrassing bug in lospace initial mark value --- src/large-object-space.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/large-object-space.h b/src/large-object-space.h index a7c762056..b33616290 100644 --- a/src/large-object-space.h +++ b/src/large-object-space.h @@ -421,6 +421,7 @@ large_object_space_alloc(struct large_object_space *space, size_t npages) { // Mark the hole as live. node->value.is_live = 1; memset(&node->value.live, 0, sizeof(node->value.live)); + node->value.live.mark = LARGE_OBJECT_NURSERY; // If the hole is actually too big, trim its tail. if (node->key.size > size) { @@ -462,7 +463,7 @@ large_object_space_obtain_and_alloc(struct large_object_space *space, struct large_object k = { addr, bytes }; struct large_object_data v = {0,}; v.is_live = 1; - v.live.mark = 0; + v.live.mark = LARGE_OBJECT_NURSERY; pthread_mutex_lock(&space->lock); pthread_mutex_lock(&space->object_tree_lock); @@ -489,6 +490,8 @@ large_object_space_init(struct large_object_space *space, space->page_size = getpagesize(); space->page_size_log2 = __builtin_ctz(space->page_size); + space->marked = LARGE_OBJECT_MARK_0; + large_object_tree_init(&space->object_tree); address_map_init(&space->object_map); address_map_init(&space->nursery);