diff --git a/jemalloc/include/jemalloc/internal/arena.h b/jemalloc/include/jemalloc/internal/arena.h index f4186a35..c58f5364 100644 --- a/jemalloc/include/jemalloc/internal/arena.h +++ b/jemalloc/include/jemalloc/internal/arena.h @@ -495,6 +495,9 @@ arena_dalloc(arena_t *arena, arena_chunk_t *chunk, void *ptr) CHUNK_MAP_PG_MASK) >> CHUNK_MAP_PG_SHIFT)) << PAGE_SHIFT)); assert(run->magic == ARENA_RUN_MAGIC); + assert(((uintptr_t)ptr - ((uintptr_t)run + + (uintptr_t)run->bin->reg0_offset)) % + run->bin->reg_size == 0); bin = run->bin; malloc_mutex_lock(&bin->lock); arena_dalloc_bin(arena, chunk, ptr, mapelm); @@ -502,8 +505,10 @@ arena_dalloc(arena_t *arena, arena_chunk_t *chunk, void *ptr) #ifdef JEMALLOC_TCACHE } #endif - } else + } else { + assert(((uintptr_t)ptr & PAGE_MASK) == 0); arena_dalloc_large(arena, chunk, ptr); + } } #endif diff --git a/jemalloc/include/jemalloc/internal/tcache.h b/jemalloc/include/jemalloc/internal/tcache.h index ad30b7c5..afad7098 100644 --- a/jemalloc/include/jemalloc/internal/tcache.h +++ b/jemalloc/include/jemalloc/internal/tcache.h @@ -181,6 +181,7 @@ tcache_alloc(tcache_t *tcache, size_t size, bool zero) if (ret == NULL) return (NULL); } + assert(arena_salloc(ret) == tcache->arena->bins[binind].reg_size); if (zero == false) { #ifdef JEMALLOC_FILL diff --git a/jemalloc/src/arena.c b/jemalloc/src/arena.c index 289fac1c..971e4f98 100644 --- a/jemalloc/src/arena.c +++ b/jemalloc/src/arena.c @@ -1492,8 +1492,12 @@ arena_salloc(const void *ptr) (uintptr_t)((pageind - ((mapbits & CHUNK_MAP_PG_MASK) >> CHUNK_MAP_PG_SHIFT)) << PAGE_SHIFT)); assert(run->magic == ARENA_RUN_MAGIC); + assert(((uintptr_t)ptr - ((uintptr_t)run + + (uintptr_t)run->bin->reg0_offset)) % run->bin->reg_size == + 0); ret = run->bin->reg_size; } else { + assert(((uintptr_t)ptr & PAGE_MASK) == 0); ret = mapbits & ~PAGE_MASK; assert(ret != 0); }