Help with a segfault

Marcin Zalewski marcin.zalewski at gmail.com
Mon Oct 6 22:59:21 PDT 2014


I am using the jemalloc from 4dcf04bfc03b9e9eb50015a8fc8735de28c23090 on a
Cray system. We use jemalloc for all allocations, and I get a strange issue
with Crays hugepages implementation. When I do not use the Cray hugepages
module, my code runs fine. However, when I load hugepages64M, I get the
following segmentation fault:

Program received signal SIGSEGV, Segmentation fault.
je_chunk_alloc_default (size=2048, alignment=0, zero=0x7fffffffa96f,
    arena_ind=0) at chunk.c:254
254             return (chunk_alloc_core(size, alignment, false, zero,
(gdb) bt
#0  je_chunk_alloc_default (size=2048, alignment=0, zero=0x7fffffffa96f,
    arena_ind=0) at chunk.c:254
#1  0x000000002001586f in je_huge_palloc (tsd=0x2aaab02092d0,
    arena=<optimized out>, size=size at entry=2048, alignment=0,
    zero=zero at entry=true) at huge.c:50
#2  0x0000000020015908 in je_huge_malloc (tsd=<optimized out>,
    arena=<optimized out>, size=size at entry=2048, zero=zero at entry=true)
    at huge.c:19
#3  0x0000000020018c90 in je_icalloct (arena=<optimized out>,
    try_tcache=<optimized out>, size=2048, tsd=<optimized out>)
    at
../../../contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h:662
#4  imallocx_flags (arena=<optimized out>, try_tcache=<optimized out>,
    zero=true, alignment=0, usize=2048, tsd=<optimized out>) at
jemalloc.c:1450
#5  imallocx_no_prof (usize=<synthetic pointer>, flags=<optimized out>,
    size=<optimized out>, tsd=<optimized out>) at jemalloc.c:1531
#6  libxxx_mallocx (size=<optimized out>, flags=<optimized out>)
    at jemalloc.c:1550
#7  0x00002aaaaf6b9445 in register_printf_type () from /lib64/libc.so.6
#8  0x00002aaaabf019c0 in register_printf_flt128 ()
    at ../../../cray-gcc-4.9.0/libquadmath/printf/quadmath-printf.c:390
#9  0x00002aaaabf09de6 in __do_global_ctors_aux ()
   from /opt/gcc/4.9.0/snos/lib64/libquadmath.so.0
#10 0x00002aaaabee51fb in _init ()
   from /opt/gcc/4.9.0/snos/lib64/libquadmath.so.0
#11 0x00007fffffffaaf8 in ?? ()
#12 0x00002aaaaaab91b8 in call_init () from /lib64/ld-linux-x86-64.so.2
#13 0x00002aaaaaab92e7 in _dl_init_internal () from
/lib64/ld-linux-x86-64.so.2
#14 0x00002aaaaaaabb3a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#15 0x0000000000000001 in ?? ()
#16 0x00007fffffffb209 in ?? ()
#17 0x0000000000000000 in ?? ()

I know that this is not very much info to go on, but I wonder if it rings a
bell for someone immediately. As far as I can understand, the Cray
hugepages module silently changes all the pages to hugepages of a chosen
size:

http://www.nersc.gov/users/computational-systems/hopper/programming/tuning-options/

What could be an obvious reason to cause the segmentation fault on that
line? The line in question is this:

        return (chunk_alloc_core(size, alignment, false, zero,
            arenas[arena_ind]->dss_prec));

It seems that "arenas" is not properly initialized, but only with hugepages.

Thank you for any help.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jemalloc.net/mailman/jemalloc-discuss/attachments/20141007/64630975/attachment.html>


More information about the jemalloc-discuss mailing list