diff --git a/src/libpmemobj/heap.c b/src/libpmemobj/heap.c
index b6e3e01f5f731b78ec96772980fa632c4c8ef5fc..33c6d2048fbdf1e9183676910d312babe29cc2bc 100644
--- a/src/libpmemobj/heap.c
+++ b/src/libpmemobj/heap.c
@@ -1258,6 +1258,7 @@ heap_cleanup(struct palloc_heap *heap)
 
 	alloc_class_collection_delete(rt->alloc_classes);
 
+	os_tls_key_delete(rt->thread_arena);
 	bucket_delete(rt->default_bucket);
 
 	for (unsigned i = 0; i < rt->narenas; ++i)
@@ -1268,7 +1269,6 @@ heap_cleanup(struct palloc_heap *heap)
 
 	util_mutex_destroy(&rt->arenas_lock);
 
-	os_tls_key_delete(rt->thread_arena);
 
 	Free(rt->arenas);