backtrack:
#00 pc 000000000009a7c8 /system/lib64/libc.so (arena_bin_nonfull_run_tryget+196)
#01 pc 0000000000090d18 /system/lib64/libc.so (arena_bin_malloc_hard+88)
#02 pc 0000000000090aac /system/lib64/libc.so (je_arena_tcache_fill_small+184)
#03 pc 00000000000b9270 /system/lib64/libc.so (je_tcache_alloc_small_hard+32)
#04 pc 00000000000a8b50 /system/lib64/libc.so (je_malloc+752)
#05 pc 0000000000583bbc /product/lib64/lib_myalgo.so
addr2line lib_myalgo.so 节目: 在以下功能的“ * p =(void )malloc(sz); ”上崩溃
_GLIBCXX_WEAK_DEFINITION void *
operator new (std::size_t sz) _GLIBCXX_THROW (std::bad_alloc)
{
void *p;
/* malloc (0) is unpredictable; avoid it. */
if (sz == 0)
sz = 1;
p = (void *) malloc (sz); /////////////////////////////////////////////////////////crash here
while (p == 0)
{
new_handler handler = std::get_new_handler ();
if (! handler)
_GLIBCXX_THROW_OR_ABORT(bad_alloc());
handler ();
p = (void *) malloc (sz);
}
return p;
}
发件人https://github.com/gcc-mirror/gcc/blob/gcc-4_9-branch/libstdc++-v3/libsupc++/new_op.cc
我不明白为什么会这样。 当我使用openmp调用emutls_get地址时,jemalloc有时也会崩溃。
您能根据回溯#00-#04解释或给出一些解决方案吗?
谢谢!