[ 
https://issues.apache.org/jira/browse/ARROW-18183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17627030#comment-17627030
 ] 

Yibo Cai commented on ARROW-18183:
----------------------------------

Tested on M1, all "arrow-dataset-scanner-benchmark/scan_alg=1" tests failed 
with SIGBUS. "scan_alg=0" tests are okay.
Stack depth is approaching 4000 from the backtrace. Looks there are a call loop 
among \{future,async_util\}.\{h,cc\}.
ASAN identified stack overflow, logs attached.
cc [~westonpace]

{code:bash}
# all scan_alg:0 tests are okay, all scan_alg:1 tests cause sigbus
% debug/arrow-dataset-scanner-benchmark --benchmark_filter=".*scan_alg:1.*" 

/Users/linux/cyb/arrow/cpp/src/arrow/memory_pool.cc:113: Unsupported backend 
'mimalloc' specified in ARROW_DEFAULT_MEMORY_POOL (supported backends are 
'jemalloc', 'system')
Unable to determine clock rate from sysctl: hw.cpufrequency: No such file or 
directory
This does not affect benchmark measurements, only the metadata output.
2022-11-01T17:02:15+08:00
Running debug/arrow-dataset-scanner-benchmark
Run on (8 X 24.2408 MHz CPU s)
CPU Caches:
  L1 Data 64 KiB
  L1 Instruction 128 KiB
  L2 Unified 4096 KiB (x8)
Load Average: 2.06, 2.81, 2.72
AddressSanitizer:DEADLYSIGNAL
=================================================================
==75674==ERROR: AddressSanitizer: stack-overflow on address 0x00016b9b3fc0 (pc 
0x000106b4b3b4 bp 0x000106b4b3a0 sp 0x00016b9b3fa0 T1)
    #0 0x106b4b3b4 in __sanitizer::StackDepotBase<__sanitizer::StackDepotNode, 
1, 20>::Put(__sanitizer::StackTrace, bool*)+0x4 
(libclang_rt.asan_osx_dynamic.dylib:arm64+0x5f3b4)

SUMMARY: AddressSanitizer: stack-overflow 
(libclang_rt.asan_osx_dynamic.dylib:arm64+0x5f3b4) in 
__sanitizer::StackDepotBase<__sanitizer::StackDepotNode, 1, 
20>::Put(__sanitizer::StackTrace, bool*)+0x4
Thread T1 created by T0 here:
    #0 0x106b2680c in wrap_pthread_create+0x50 
(libclang_rt.asan_osx_dynamic.dylib:arm64+0x3a80c)
    #1 0x113b7a408 in std::__1::__libcpp_thread_create(_opaque_pthread_t**, 
void* (*)(void*), void*) __threading_support:375
    #2 0x113b7a128 in 
std::__1::thread::thread<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_3,
 void>(arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_3&&) 
thread:309
    #3 0x113b67e94 in 
std::__1::thread::thread<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_3,
 void>(arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_3&&) 
thread:301
    #4 0x113b66794 in arrow::internal::ThreadPool::LaunchWorkersUnlocked(int) 
thread_pool.cc:412
    #5 0x113b68444 in 
arrow::internal::ThreadPool::SpawnReal(arrow::internal::TaskHints, 
arrow::internal::FnOnce<void ()>, arrow::StopToken, 
arrow::internal::FnOnce<void (arrow::Status const&)>&&) thread_pool.cc:448
    #6 0x10488dfd8 in 
arrow::Result<arrow::Future<std::__1::shared_ptr<arrow::Iterator<std::__1::shared_ptr<arrow::dataset::Fragment>
 > > > > arrow::internal::Executor::Submit<arrow::dataset::(anonymous 
namespace)::GetFragments(arrow::dataset::Dataset*, 
arrow::compute::Expression)::$_0, 
arrow::Future<std::__1::shared_ptr<arrow::Iterator<std::__1::shared_ptr<arrow::dataset::Fragment>
 > > > >(arrow::internal::TaskHints, arrow::StopToken, 
arrow::dataset::(anonymous namespace)::GetFragments(arrow::dataset::Dataset*, 
arrow::compute::Expression)::$_0&&) thread_pool.h:167
    #7 0x10488be74 in 
arrow::Result<arrow::Future<std::__1::shared_ptr<arrow::Iterator<std::__1::shared_ptr<arrow::dataset::Fragment>
 > > > > arrow::internal::Executor::Submit<arrow::dataset::(anonymous 
namespace)::GetFragments(arrow::dataset::Dataset*, 
arrow::compute::Expression)::$_0, 
arrow::Future<std::__1::shared_ptr<arrow::Iterator<std::__1::shared_ptr<arrow::dataset::Fragment>
 > > > >(arrow::dataset::(anonymous 
namespace)::GetFragments(arrow::dataset::Dataset*, 
arrow::compute::Expression)::$_0&&) thread_pool.h:193
    #8 0x10488ac0c in arrow::dataset::(anonymous 
namespace)::GetFragments(arrow::dataset::Dataset*, arrow::compute::Expression) 
scan_node.cc:64
    #9 0x10488a010 in arrow::dataset::(anonymous 
namespace)::ScanNode::StartProducing() scan_node.cc:318
    #10 0x113fc43e0 in arrow::compute::(anonymous 
namespace)::ExecPlanImpl::StartProducing() exec_plan.cc:183
    #11 0x113fc362c in arrow::compute::ExecPlan::StartProducing() 
exec_plan.cc:400
    #12 0x104462260 in arrow::dataset::MinimalEndToEndScan(unsigned long, 
unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, 
std::__1::function<arrow::Result<std::__1::shared_ptr<arrow::compute::ExecNodeOptions>
 > (unsigned long, unsigned long)>) scanner_benchmark.cc:159
    #13 0x104468ebc in arrow::dataset::MinimalEndToEndBench(benchmark::State&) 
scanner_benchmark.cc:272
    #14 0x1055dbc8c in benchmark::internal::BenchmarkInstance::Run(long long, 
int, benchmark::internal::ThreadTimer*, benchmark::internal::ThreadManager*, 
benchmark::internal::PerfCountersMeasurement*) const+0x44 
(libbenchmark.1.7.0.dylib:arm64+0xbc8c)
    #15 0x1055ed708 in benchmark::internal::(anonymous 
namespace)::RunInThread(benchmark::internal::BenchmarkInstance const*, long 
long, int, benchmark::internal::ThreadManager*, 
benchmark::internal::PerfCountersMeasurement*)+0x58 
(libbenchmark.1.7.0.dylib:arm64+0x1d708)
    #16 0x1055ed2c8 in 
benchmark::internal::BenchmarkRunner::DoNIterations()+0x2c0 
(libbenchmark.1.7.0.dylib:arm64+0x1d2c8)
    #17 0x1055edfec in 
benchmark::internal::BenchmarkRunner::DoOneRepetition()+0xb0 
(libbenchmark.1.7.0.dylib:arm64+0x1dfec)
    #18 0x1055d4fb8 in 
benchmark::RunSpecifiedBenchmarks(benchmark::BenchmarkReporter*, 
benchmark::BenchmarkReporter*, std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >)+0x9f0 
(libbenchmark.1.7.0.dylib:arm64+0x4fb8)
    #19 0x1055d4564 in benchmark::RunSpecifiedBenchmarks()+0x3c 
(libbenchmark.1.7.0.dylib:arm64+0x4564)
    #20 0x10556becc in main+0x50 (libbenchmark_main.1.7.0.dylib:arm64+0x3ecc)
    #21 0x10562d0f0 in start+0x204 (dyld:arm64+0x50f0)
    #22 0xa25d7ffffffffffc  (<unknown module>)

==75674==ABORTING
zsh: abort      debug/arrow-dataset-scanner-benchmark 
--benchmark_filter=".*scan_alg:1.*"
{code}

> cpp-micro benchmarks are failing on mac arm machine
> ---------------------------------------------------
>
>                 Key: ARROW-18183
>                 URL: https://issues.apache.org/jira/browse/ARROW-18183
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Benchmarking, C++
>            Reporter: Elena Henderson
>            Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to