Add various mutex ownership assertions.
This commit is contained in:
parent
73868b60f2
commit
0222fb41d1
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
16
src/extent.c
16
src/extent.c
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user