<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
Hi,
<div><br>
</div>
<div>I’m having some problems using je_malloc_conf to configure jemalloc’s runtime behaviour, but *only on OSX* - Linux is fine. The behaviour I see is that any je_malloc_conf setting on OS X Mavericks (clang-503.0.40) is ignored, but works perfectly when compiling
 on Ubuntu 14.04, x86_64, gcc 4.8.2)</div>
<div><br>
</div>
<div>I’m defining je_malloc_conf as:</div>
<div><br>
</div>
<div>    const char* je_malloc_conf = "narenas:1";<br>
<br>
</div>
<div>Full reproducer is at: <a href="https://github.com/daverigby/jemalloc_conf/blob/master/app.c">
https://github.com/daverigby/jemalloc_conf/blob/master/app.c</a></div>
<div><br>
</div>
<div>From what I can tell, it appears that under linux the je_malloc_conf symbols in libjemalloc and my app are correctly merged by the dynamic linker, but under OS X I there are duplicate symbols, and malloc_conf_init() sees the (NULL) definition in the library:</div>
<div><br>
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div>(lldb) bt 3</div>
<div>* thread #1: tid = 0x7c0445, 0x0000000100011725 libjemalloc.2.dylib`jemalloc_constructor [inlined] malloc_conf_init + 147 at jemalloc.c:477, queue = 'com.apple.main-thread, stop reason = breakpoint 2.10</div>
<div>  * frame #0: 0x0000000100011725 libjemalloc.2.dylib` jemalloc_constructor [inlined] malloc_conf_init  + 147 at jemalloc.c:477</div>
<div>    frame #1: 0x0000000100011692 libjemalloc.2.dylib` jemalloc_constructor [inlined] malloc_init_hard  + 34 at jemalloc.c:761</div>
<div>    frame #2: 0x0000000100011670 libjemalloc.2.dylib` jemalloc_constructor [inlined] malloc_init  + 228 at jemalloc.c:357</div>
<div>(lldb) p je_malloc_conf</div>
<div>(const char *) $0 = 0x0000000000000000</div>
<div>(lldb) image lookup --symbol je_malloc_conf</div>
<div>1 symbols match 'je_malloc_conf' in ./app:</div>
<div>        Address: app[0x0000000100001028] (app.__DATA.__data + 0)</div>
<div>        Summary: </div>
<div>1 symbols match 'je_malloc_conf' in /Users/dave/lib/libjemalloc.2.dylib:</div>
<div>        Address: libjemalloc.2.dylib[0x0000000000033c00] (libjemalloc.2.dylib.__DATA.__common + 112)</div>
<div>        Summary: libjemalloc.2.dylib`je_malloc_conf</div>
</blockquote>
<div><br>
</div>
<div>Can anyone suggest what I’m doing wrong, and what’s necessary to be able to set je_malloc_conf in my (OS X) application?</div>
<div><br>
</div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>Dave Rigby</div>
</body>
</html>