jemalloc崩溃高通,停在arena_bin_nonfull_run_tryget

时间:2018-07-13 06:30:07

标签: gcc malloc jemalloc

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解释或给出一些解决方案吗?

谢谢!

0 个答案:

没有答案