Add assertions.

Check for interior pointers in arena_[ds]alloc().

Check for corrupt pointers in tcache_alloc().
This commit is contained in:
Jason Evans
2010-03-15 16:38:27 -07:00
parent 6b5974403b
commit f00bb7f132
3 changed files with 11 additions and 1 deletions

View File

@@ -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

View File

@@ -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