@@ -134,17 +134,25 @@ do_arena_reset_pre(unsigned arena_ind, void ***ptrs, unsigned *nptrs) {
134134}
135135
136136static void
137- do_arena_reset_post (void * * ptrs , unsigned nptrs ) {
137+ do_arena_reset_post (void * * ptrs , unsigned nptrs , unsigned arena_ind ) {
138138 tsdn_t * tsdn ;
139139 unsigned i ;
140140
141141 tsdn = tsdn_fetch ();
142142
143+ if (have_background_thread ) {
144+ malloc_mutex_lock (tsdn ,
145+ & background_thread_info [arena_ind % ncpus ].mtx );
146+ }
143147 /* Verify allocations no longer exist. */
144148 for (i = 0 ; i < nptrs ; i ++ ) {
145149 assert_zu_eq (vsalloc (tsdn , ptrs [i ]), 0 ,
146150 "Allocation should no longer exist" );
147151 }
152+ if (have_background_thread ) {
153+ malloc_mutex_unlock (tsdn ,
154+ & background_thread_info [arena_ind % ncpus ].mtx );
155+ }
148156
149157 free (ptrs );
150158}
@@ -180,7 +188,7 @@ TEST_BEGIN(test_arena_reset) {
180188 arena_ind = do_arena_create (NULL );
181189 do_arena_reset_pre (arena_ind , & ptrs , & nptrs );
182190 do_arena_reset (arena_ind );
183- do_arena_reset_post (ptrs , nptrs );
191+ do_arena_reset_post (ptrs , nptrs , arena_ind );
184192}
185193TEST_END
186194
@@ -239,15 +247,15 @@ TEST_BEGIN(test_arena_destroy_hooks_default) {
239247 assert_true (arena_i_initialized (MALLCTL_ARENAS_DESTROYED , false),
240248 "Destroyed arena stats should be initialized" );
241249
242- do_arena_reset_post (ptrs , nptrs );
250+ do_arena_reset_post (ptrs , nptrs , arena_ind );
243251
244252 arena_ind_prev = arena_ind ;
245253 arena_ind = do_arena_create (NULL );
246254 do_arena_reset_pre (arena_ind , & ptrs , & nptrs );
247255 assert_u_eq (arena_ind , arena_ind_prev ,
248256 "Arena index should have been recycled" );
249257 do_arena_destroy (arena_ind );
250- do_arena_reset_post (ptrs , nptrs );
258+ do_arena_reset_post (ptrs , nptrs , arena_ind );
251259
252260 do_arena_destroy (arena_ind_another );
253261}
@@ -320,7 +328,7 @@ TEST_BEGIN(test_arena_destroy_hooks_unmap) {
320328 assert_true (arena_i_initialized (MALLCTL_ARENAS_DESTROYED , false),
321329 "Destroyed arena stats should be initialized" );
322330
323- do_arena_reset_post (ptrs , nptrs );
331+ do_arena_reset_post (ptrs , nptrs , arena_ind );
324332
325333 memcpy (& hooks , & hooks_orig , sizeof (extent_hooks_t ));
326334}
0 commit comments