Add various mutex ownership assertions.

This commit is contained in:
Jason Evans 2016-09-23 12:18:36 -07:00
parent 73868b60f2
commit 0222fb41d1
3 changed files with 14 additions and 6 deletions

View File

@ -521,6 +521,8 @@ JEMALLOC_ALWAYS_INLINE void
arena_decay_tick(tsdn_t *tsdn, arena_t *arena) arena_decay_tick(tsdn_t *tsdn, arena_t *arena)
{ {
malloc_mutex_assert_not_owner(tsdn, &arena->lock);
arena_decay_ticks(tsdn, arena, 1); arena_decay_ticks(tsdn, arena, 1);
} }

View File

@ -383,6 +383,8 @@ arena_extent_dalloc_large(tsdn_t *tsdn, arena_t *arena, extent_t *extent,
if (!locked) if (!locked)
malloc_mutex_lock(tsdn, &arena->lock); malloc_mutex_lock(tsdn, &arena->lock);
else
malloc_mutex_assert_owner(tsdn, &arena->lock);
if (config_stats) { if (config_stats) {
arena_large_dalloc_stats_update(arena, arena_large_dalloc_stats_update(arena,
extent_usize_get(extent)); extent_usize_get(extent));

View File

@ -356,11 +356,13 @@ extent_deregister(tsdn_t *tsdn, extent_t *extent)
* fits. * fits.
*/ */
static extent_t * static extent_t *
extent_first_best_fit(arena_t *arena, extent_heap_t extent_heaps[NPSIZES], extent_first_best_fit(tsdn_t *tsdn, arena_t *arena,
size_t size) extent_heap_t extent_heaps[NPSIZES], size_t size)
{ {
pszind_t pind, i; pszind_t pind, i;
malloc_mutex_assert_owner(tsdn, &arena->extents_mtx);
pind = psz2ind(extent_size_quantize_ceil(size)); pind = psz2ind(extent_size_quantize_ceil(size));
for (i = pind; i < NPSIZES; i++) { for (i = pind; i < NPSIZES; i++) {
extent_t *extent = extent_heap_first(&extent_heaps[i]); extent_t *extent = extent_heap_first(&extent_heaps[i]);
@ -398,6 +400,8 @@ extent_recycle(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks,
rtree_ctx_t *rtree_ctx = tsdn_rtree_ctx(tsdn, &rtree_ctx_fallback); rtree_ctx_t *rtree_ctx = tsdn_rtree_ctx(tsdn, &rtree_ctx_fallback);
size_t size, alloc_size, leadsize, trailsize; size_t size, alloc_size, leadsize, trailsize;
if (locked)
malloc_mutex_assert_owner(tsdn, &arena->extents_mtx);
assert(new_addr == NULL || !slab); assert(new_addr == NULL || !slab);
assert(pad == 0 || !slab); assert(pad == 0 || !slab);
if (config_debug && new_addr != NULL) { if (config_debug && new_addr != NULL) {
@ -447,8 +451,10 @@ extent_recycle(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks,
rtree_elm_release(tsdn, &extents_rtree, elm); rtree_elm_release(tsdn, &extents_rtree, elm);
} else } else
extent = NULL; extent = NULL;
} else } else {
extent = extent_first_best_fit(arena, extent_heaps, alloc_size); extent = extent_first_best_fit(tsdn, arena, extent_heaps,
alloc_size);
}
if (extent == NULL) { if (extent == NULL) {
if (!locked) if (!locked)
malloc_mutex_unlock(tsdn, &arena->extents_mtx); malloc_mutex_unlock(tsdn, &arena->extents_mtx);
@ -586,8 +592,6 @@ extent_alloc_cache_impl(tsdn_t *tsdn, arena_t *arena,
assert(usize + pad != 0); assert(usize + pad != 0);
assert(alignment != 0); assert(alignment != 0);
if (locked)
malloc_mutex_assert_owner(tsdn, &arena->extents_mtx);
commit = true; commit = true;
extent = extent_recycle(tsdn, arena, r_extent_hooks, extent = extent_recycle(tsdn, arena, r_extent_hooks,