[
https://issues.apache.org/jira/browse/KUDU-1998?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Todd Lipcon resolved KUDU-1998.
-------------------------------
Resolution: Fixed
Assignee: Todd Lipcon (was: Alexey Serbin)
Fix Version/s: 1.4.0
Went back to non-incremental tracking in
1c5d91b588895009b516359cf59f76c9165bd2cc
> New tcmalloc hooks for process memory accounting do not work on OS X
> --------------------------------------------------------------------
>
> Key: KUDU-1998
> URL: https://issues.apache.org/jira/browse/KUDU-1998
> Project: Kudu
> Issue Type: Bug
> Affects Versions: 1.4.0
> Reporter: Alexey Serbin
> Assignee: Todd Lipcon
> Fix For: 1.4.0
>
>
> Introduction of the new hook-based accounting for the process memory brought
> by b15ea202d6a2be427614a876aa56d03b9c8b3a1b causes issues on OS X. This
> manifests itself in many failed tests. Usually, a process ends up killed by
> SIGILL. If running under debugger, it looks like the following:
> {noformat}
> * thread #81: tid = 0x10470b6, 0x00000001039897dc
> libtcmalloc.4.dylib`(anonymous namespace)::do_malloc_no_errno(unsigned long)
> [inlined] tcmalloc::ThreadCache::GetThreadHeap() + 10 at thread_cache.h:403,
> stop reason = EXC_BAD_ACCESS (code=2, address=0x109952c88)
> frame #0: 0x00000001039897dc libtcmalloc.4.dylib`(anonymous
> namespace)::do_malloc_no_errno(unsigned long) [inlined]
> tcmalloc::ThreadCache::GetThreadHeap() + 10 at thread_cache.h:403
> 400 return threadlocal_data_.heap;
> 401 #endif
> 402 return reinterpret_cast<ThreadCache *>(
> -> 403 perftools_pthread_getspecific(heap_key_));
> 404 }
> 405
> 406 inline ThreadCache* ThreadCache::GetCacheWhichMustBePresent() {
> {noformat}
> with very deep call stack:
> {noformat}
> frame #2462: 0x00007fff9456f187 libsystem_malloc.dylib`malloc + 42
> frame #2463: 0x00007fff891f0da0
> libdyld.dylib`tlv_allocate_and_initialize_for_key + 323
> frame #2464: 0x00007fff891f1549 libdyld.dylib`tlv_get_addr + 296
> frame #2465: 0x0000000103f276e1
> libkudu_util.dylib`kudu::Striped64::get_tls_hashcode() + 17 at striped64.cc:55
> frame #2466: 0x0000000103f27d75
> libkudu_util.dylib`kudu::LongAdder::IncrementBy(this=0x000000010711cfc0,
> x=80) + 85 at striped64.cc:146
> frame #2467: 0x0000000103f14b7f
> libkudu_util.dylib`kudu::process_memory::(anonymous
> namespace)::NewHook(ptr=0x000000010bf08af0, size=80) + 79 at
> process_memory.cc:187
> frame #2468: 0x000000010420a8e8
> libtcmalloc.4.dylib`MallocHook::InvokeNewHookSlow(p=0x000000010bf08af0, s=80)
> + 184 at malloc_hook.cc:514
> frame #2469: 0x0000000104218f4f libtcmalloc.4.dylib`tc_malloc + 239 at
> libc_override_osx.h:211
> frame #2470: 0x00007fff94570667 libsystem_malloc.dylib`malloc_zone_malloc
> + 71
> frame #2471: 0x00007fff9456f187 libsystem_malloc.dylib`malloc + 42
> frame #2472: 0x00007fff891f0da0
> libdyld.dylib`tlv_allocate_and_initialize_for_key + 323
> frame #2473: 0x00007fff891f1549 libdyld.dylib`tlv_get_addr + 296
> frame #2474: 0x0000000103f276e1
> libkudu_util.dylib`kudu::Striped64::get_tls_hashcode() + 17 at striped64.cc:55
> frame #2475: 0x0000000103f27d75
> libkudu_util.dylib`kudu::LongAdder::IncrementBy(this=0x000000010711cfc0,
> x=80) + 85 at striped64.cc:146
> frame #2476: 0x0000000103f14b7f
> libkudu_util.dylib`kudu::process_memory::(anonymous
> namespace)::NewHook(ptr=0x000000010bf08aa0, size=80) + 79 at
> process_memory.cc:187
> frame #2477: 0x000000010420a8e8
> libtcmalloc.4.dylib`MallocHook::InvokeNewHookSlow(p=0x000000010bf08aa0, s=80)
> + 184 at malloc_hook.cc:514
> frame #2478: 0x0000000104218f4f libtcmalloc.4.dylib`tc_malloc + 239 at
> libc_override_osx.h:211
> frame #2479: 0x00007fff94570667 libsystem_malloc.dylib`malloc_zone_malloc
> + 71
> frame #2480: 0x00007fff9456f187 libsystem_malloc.dylib`malloc + 42
> frame #2481: 0x00007fff891f0da0
> libdyld.dylib`tlv_allocate_and_initialize_for_key + 323
> frame #2482: 0x00007fff891f1549 libdyld.dylib`tlv_get_addr + 296
> frame #2483: 0x0000000103f276e1
> libkudu_util.dylib`kudu::Striped64::get_tls_hashcode() + 17 at striped64.cc:55
> frame #2484: 0x0000000103f27d75
> libkudu_util.dylib`kudu::LongAdder::IncrementBy(this=0x000000010711cfc0,
> x=80) + 85 at striped64.cc:146
> frame #2485: 0x0000000103f14b7f
> libkudu_util.dylib`kudu::process_memory::(anonymous
> namespace)::NewHook(ptr=0x000000010bf08a50, size=80) + 79 at
> process_memory.cc:187
> frame #2486: 0x000000010420a8e8
> libtcmalloc.4.dylib`MallocHook::InvokeNewHookSlow(p=0x000000010bf08a50, s=80)
> + 184 at malloc_hook.cc:514
> frame #2487: 0x0000000104218f4f libtcmalloc.4.dylib`tc_malloc + 239 at
> libc_override_osx.h:211
> frame #2488: 0x00007fff94570667 libsystem_malloc.dylib`malloc_zone_malloc
> + 71
> frame #2489: 0x00007fff9456f187 libsystem_malloc.dylib`malloc + 42
> frame #2490: 0x00007fff891f0da0
> libdyld.dylib`tlv_allocate_and_initialize_for_key + 323
> frame #2491: 0x00007fff891f1549 libdyld.dylib`tlv_get_addr + 296
> frame #2492: 0x0000000103f276e1
> libkudu_util.dylib`kudu::Striped64::get_tls_hashcode() + 17 at striped64.cc:55
> frame #2493: 0x0000000103f27d75
> libkudu_util.dylib`kudu::LongAdder::IncrementBy(this=0x000000010711cfc0,
> x=80) + 85 at striped64.cc:146
> frame #2494: 0x0000000103f14b7f
> libkudu_util.dylib`kudu::process_memory::(anonymous
> namespace)::NewHook(ptr=0x000000010bf08a00, size=80) + 79 at
> process_memory.cc:187
> frame #2495: 0x000000010420a8e8
> libtcmalloc.4.dylib`MallocHook::InvokeNewHookSlow(p=0x000000010bf08a00, s=80)
> + 184 at malloc_hook.cc:514
> frame #2496: 0x0000000104218f4f libtcmalloc.4.dylib`tc_malloc + 239 at
> libc_override_osx.h:211
> frame #2497: 0x00007fff94570667 libsystem_malloc.dylib`malloc_zone_malloc
> + 71
> frame #2498: 0x00007fff9456f187 libsystem_malloc.dylib`malloc + 42
> frame #2499: 0x00007fff891f0da0
> libdyld.dylib`tlv_allocate_and_initialize_for_key + 323
> frame #2500: 0x00007fff891f1549 libdyld.dylib`tlv_get_addr + 296
> frame #2501: 0x0000000103f276e1
> libkudu_util.dylib`kudu::Striped64::get_tls_hashcode() + 17 at striped64.cc:55
> frame #2502: 0x0000000103f27d75
> libkudu_util.dylib`kudu::LongAdder::IncrementBy(this=0x000000010711cfc0,
> x=80) + 85 at striped64.cc:146
> frame #2503: 0x0000000103f14b7f
> libkudu_util.dylib`kudu::process_memory::(anonymous
> namespace)::NewHook(ptr=0x000000010bf089b0, size=80) + 79 at
> process_memory.cc:187
> frame #2504: 0x000000010420a8e8
> libtcmalloc.4.dylib`MallocHook::InvokeNewHookSlow(p=0x000000010bf089b0, s=80)
> + 184 at malloc_hook.cc:514
> frame #2505: 0x0000000104218f4f libtcmalloc.4.dylib`tc_malloc + 239 at
> libc_override_osx.h:211
> frame #2506: 0x00007fff94570667 libsystem_malloc.dylib`malloc_zone_malloc
> + 71
> frame #2507: 0x00007fff9456f187 libsystem_malloc.dylib`malloc + 42
> {noformat}
> This is specific only to OS X builds, Linux builds do not have such an issue.
> Since we want to switch to jemalloc in the long run, we disabled tcmalloc for
> OS X builds as a quick fix.
> Some related info:
> https://github.com/gperftools/gperftools/issues/416
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)