-
Notifications
You must be signed in to change notification settings - Fork 4.1k
[C++] malloc: Incorrect checksum for freed object: probably modified after being freed in arrow-bit-util-benchmark #40652
Copy link
Copy link
Closed
Description
Describe the bug, including details regarding any error messages, version, and platform.
While running benchmarks locally for separate reasons, I got this:
arrow-bit-util-benchmark(3970,0x1f22abac0) malloc: Incorrect checksum for freed object 0x118010800: probably modified after being freed.
Corrupt value: 0xc
arrow-bit-util-benchmark(3970,0x1f22abac0) malloc: *** set a breakpoint in malloc_error_break to debug
This was on an macOS M1, with a recent checkout (ea5b620), running archery benchmark run --suite-filter=arrow-bit-util-benchmark --preserve. The backtrace is:
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
* frame #0: 0x000000018a3d8384 libsystem_malloc.dylib`malloc_error_break
frame #1: 0x000000018a3bba14 libsystem_malloc.dylib`malloc_vreport + 748
frame #2: 0x000000018a3dfea8 libsystem_malloc.dylib`malloc_zone_error + 104
frame #3: 0x000000018a3c74c4 libsystem_malloc.dylib`free_list_checksum_botch + 40
frame #4: 0x000000018a3b4cbc libsystem_malloc.dylib`small_free_list_remove_ptr_no_clear + 960
frame #5: 0x000000018a3b22c4 libsystem_malloc.dylib`free_small + 692
frame #6: 0x0000000102eb6d00 libarrow.1600.dylib`arrow::BaseMemoryPoolImpl<arrow::(anonymous namespace)::SystemAllocator>::Free(unsigned char*, long long, long long) + 44
frame #7: 0x0000000102eb72b4 libarrow.1600.dylib`arrow::PoolBuffer::~PoolBuffer() + 72
frame #8: 0x0000000102eb6f74 libarrow.1600.dylib`arrow::PoolBuffer::~PoolBuffer() + 12
frame #9: 0x0000000100007438 arrow-bit-util-benchmark`arrow::bit_util::CopyBitmapWithOffsetBoth(benchmark::State&) + 432
frame #10: 0x000000010053a96c libbenchmark.1.dylib`benchmark::internal::BenchmarkInstance::Run(long long, int, benchmark::internal::ThreadTimer*, benchmark::internal::ThreadManager*, benchmark::internal::PerfCountersMeasurement*) const + 160
frame #11: 0x000000010054d50c libbenchmark.1.dylib`benchmark::internal::(anonymous namespace)::RunInThread(benchmark::internal::BenchmarkInstance const*, long long, int, benchmark::internal::ThreadManager*, benchmark::internal::PerfCountersMeasurement*) + 96
frame #12: 0x000000010054d0c4 libbenchmark.1.dylib`benchmark::internal::BenchmarkRunner::DoNIterations() + 692
frame #13: 0x000000010054ddf4 libbenchmark.1.dylib`benchmark::internal::BenchmarkRunner::DoOneRepetition() + 180
frame #14: 0x0000000100533a04 libbenchmark.1.dylib`benchmark::RunSpecifiedBenchmarks(benchmark::BenchmarkReporter*, benchmark::BenchmarkReporter*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>) + 2876
frame #15: 0x0000000100532e68 libbenchmark.1.dylib`benchmark::RunSpecifiedBenchmarks() + 64
frame #16: 0x0000000100473e74 libbenchmark_main.1.dylib`main + 136
frame #17: 0x000000018a2160e0 dyld`start + 2360
It looks like the failing test is CopyBitmapWithOffsetBoth:
CopyBitmapWithOffset/8192 636 ns 635 ns 1102970 bytes_per_second=12.0217Gi/s
-- LOG(2): Running CopyBitmapWithOffsetBoth/8192 for 1
arrow-bit-util-benchmark(54792,0x1f22abac0) malloc: Incorrect checksum for freed object 0x13b00c200: probably modified after being freed.
Corrupt value: 0xc
arrow-bit-util-benchmark(54792,0x1f22abac0) malloc: *** set a breakpoint in malloc_error_break to debug
fish: Job 1, '/var/folders/vm/bbcxtl3s63l7gn9…' terminated by signal SIGABRT (Abort)
When I run the test in isolation I don't get the error though. Does this look like something spurious or is it worth investigating?
Component(s)
C++
Reactions are currently unavailable