<jemalloc>: jemalloc_arena.c:182: Failed assertion: "p[i] == 0"

Jason Evans jasone at FreeBSD.org
Sat Apr 28 18:29:08 UTC 2012


On Apr 28, 2012, at 5:09 AM, Aleksandr Rybalko wrote:
>>> On Apr 21, 2012, at 11:54 AM, David Wolfskill wrote:
>>>> 
>>>> But contrib/jemalloc/src/arena.c contains a function,
>>>> arena_chunk_validate_zeroed():
>>>> 
>>>>   175 static inline void
>>>>   176 arena_chunk_validate_zeroed(arena_chunk_t *chunk, size_t
>>>> run_ind) 177 {
>>>>   178         size_t i;
>>>>   179         UNUSED size_t *p = (size_t *)((uintptr_t)chunk +
>>>> (run_ind << LG_PAGE)); 180
>>>>   181         for (i = 0; i < PAGE / sizeof(size_t); i++)
>>>>   182                 assert(p[i] == 0);
>>>>   183 }
> 
> maybe it somehow related to low count of free memory, because I see
> that very frequently on my box. (Atheros AR7242 mips32be with 32M of
> RAM)
> 
> After "#ifdef" of that function body, box behave good (seems) :)

Yes, arena_chunk_validate_zeroed() (which is debug-only code) has the side effect of faulting in untouched pages, so it potentially increases physical memory usage.  In practice, this sanity checking has saved jemalloc from regressions that would otherwise manifest as mysterious application memory corruption (and would have prevented even more regressions, had it existed earlier).  You can disable it and many other performance-sacrificing debug features by defining MALLOC_PRODUCTION in /etc/make.conf.

Jason


More information about the freebsd-current mailing list