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

From: Jason Evans <jasone_at_FreeBSD.org>
Date: Sat, 28 Apr 2012 11:29:01 -0700
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
Received on Sat Apr 28 2012 - 16:29:08 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:26 UTC