<div dir="ltr"><div><div><div><div>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:<br><br>Program received signal SIGSEGV, Segmentation fault.<br>je_chunk_alloc_default (size=2048, alignment=0, zero=0x7fffffffa96f, <br>    arena_ind=0) at chunk.c:254<br>254             return (chunk_alloc_core(size, alignment, false, zero,<br>(gdb) bt<br>#0  je_chunk_alloc_default (size=2048, alignment=0, zero=0x7fffffffa96f, <br>    arena_ind=0) at chunk.c:254<br>#1  0x000000002001586f in je_huge_palloc (tsd=0x2aaab02092d0, <br>    arena=<optimized out>, size=size@entry=2048, alignment=0, <br>    zero=zero@entry=true) at huge.c:50<br>#2  0x0000000020015908 in je_huge_malloc (tsd=<optimized out>, <br>    arena=<optimized out>, size=size@entry=2048, zero=zero@entry=true)<br>    at huge.c:19<br>#3  0x0000000020018c90 in je_icalloct (arena=<optimized out>, <br>    try_tcache=<optimized out>, size=2048, tsd=<optimized out>)<br>    at ../../../contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h:662<br>#4  imallocx_flags (arena=<optimized out>, try_tcache=<optimized out>, <br>    zero=true, alignment=0, usize=2048, tsd=<optimized out>) at jemalloc.c:1450<br>#5  imallocx_no_prof (usize=<synthetic pointer>, flags=<optimized out>, <br>    size=<optimized out>, tsd=<optimized out>) at jemalloc.c:1531<br>#6  libxxx_mallocx (size=<optimized out>, flags=<optimized out>)<br>    at jemalloc.c:1550<br>#7  0x00002aaaaf6b9445 in register_printf_type () from /lib64/libc.so.6<br>#8  0x00002aaaabf019c0 in register_printf_flt128 ()<br>    at ../../../cray-gcc-4.9.0/libquadmath/printf/quadmath-printf.c:390<br>#9  0x00002aaaabf09de6 in __do_global_ctors_aux ()<br>   from /opt/gcc/4.9.0/snos/lib64/libquadmath.so.0<br>#10 0x00002aaaabee51fb in _init ()<br>   from /opt/gcc/4.9.0/snos/lib64/libquadmath.so.0<br>#11 0x00007fffffffaaf8 in ?? ()<br>#12 0x00002aaaaaab91b8 in call_init () from /lib64/ld-linux-x86-64.so.2<br>#13 0x00002aaaaaab92e7 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2<br>#14 0x00002aaaaaaabb3a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2<br>#15 0x0000000000000001 in ?? ()<br>#16 0x00007fffffffb209 in ?? ()<br>#17 0x0000000000000000 in ?? ()<br><br></div>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:<br><br><a href="http://www.nersc.gov/users/computational-systems/hopper/programming/tuning-options/">http://www.nersc.gov/users/computational-systems/hopper/programming/tuning-options/</a><br><br></div>What could be an obvious reason to cause the segmentation fault on that line? The line in question is this:<br><br>        return (chunk_alloc_core(size, alignment, false, zero,<br>            arenas[arena_ind]->dss_prec));<br><br></div>It seems that "arenas" is not properly initialized, but only with hugepages.<br><br></div>Thank you for any help.<br></div>