Skip to content

[C++][Parquet] Fix DeltaByteArrayDecoder to deal with corrupted input #47666

@wgtmac

Description

@wgtmac

Describe the bug, including details regarding any error messages, version, and platform.

See https://oss-fuzz.com/testcase-detail/4656328221196288


+----------------------------------------Release Build Stacktrace----------------------------------------+
--
  | Command: /mnt/scratch0/clusterfuzz/resources/platform/linux/unshare -c -n /mnt/scratch0/clusterfuzz/bot/builds/clusterfuzz-builds-afl_arrow_e29c872a699461cda988a0933f4bebaeaafdc12a/revisions/parquet-arrow-fuzz /mnt/scratch0/clusterfuzz/bot/inputs/fuzzer-testcases/crash
  | Time ran: 0.43276381492614746
  |  
  | AddressSanitizer:DEADLYSIGNAL
  | =================================================================
  | ==404==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7c03e54bcaeb bp 0x7fffb2edf4d0 sp 0x7fffb2edec88 T0)
  | ==404==The signal is caused by a READ memory access.
  | ==404==Hint: address points to the zero page.
  | #0 0x7c03e54bcaeb in memcpy /build/glibc-LcI20x/glibc-2.31/sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:142
  | #1 0x5b2a0c945ddb in __asan_memcpy /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:63:3
  | #2 0x5b2a0cd7229e in arrow::BufferBuilder::UnsafeAppend(void const*, long) arrow/cpp/src/arrow/buffer_builder.h:143:5
  | #3 0x5b2a0cd7229e in arrow::FixedSizeBinaryBuilder::UnsafeAppend(unsigned char const*) arrow/cpp/src/arrow/array/builder_binary.h:797:21
  | #4 0x5b2a0cd7229e in parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>::AppendValue(unsigned char const*, int, std::__1::optional<long>) arrow/cpp/src/parquet/decoder.cc:210:11
  | #5 0x5b2a0cd7229e in auto parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)::operator()<parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>>(auto*) const::'lambda'(long, long, bool)::operator()(long, long, bool) const arrow/cpp/src/parquet/decoder.cc:2093:7
  | #6 0x5b2a0cd7229e in arrow::Status arrow::internal::VisitBitRuns<auto parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)::operator()<parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>>(auto*) const::'lambda'(long, long, bool)>(unsigned char const*, long, long, auto&&) arrow/cpp/src/arrow/util/bit_run_reader.h:469:12
  | #7 0x5b2a0cd7229e in auto parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)::operator()<parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>>(auto*) const arrow/cpp/src/parquet/decoder.cc:2093:7
  | #8 0x5b2a0cd7229e in auto parquet::(anonymous namespace)::DispatchArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)&>(parquet::EncodingTraits<auto>::Accumulator*, long, std::__1::optional<long>, parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)&) arrow/cpp/src/parquet/decoder.cc:259:12
  | #9 0x5b2a0cd7229e in parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*) arrow/cpp/src/parquet/decoder.cc:2112:12
  | #10 0x5b2a0cd7229e in parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrow(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*) arrow/cpp/src/parquet/decoder.cc:1960:5
  | #11 0x5b2a0ccf193f in parquet::TypedDecoder<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowNonNull(int, arrow::FixedSizeBinaryBuilder*) arrow/cpp/src/parquet/encoding.h:311:12
  | #12 0x5b2a0ccf193f in parquet::internal::(anonymous namespace)::FLBARecordReader::ReadValuesDense(long) arrow/cpp/src/parquet/column_reader.cc:1973:51
  | #13 0x5b2a0ccf390c in parquet::internal::(anonymous namespace)::TypedRecordReader<parquet::PhysicalType<(parquet::Type::type)7>>::ReadRequiredRecords(long, long*) arrow/cpp/src/parquet/column_reader.cc:1799:5
  | #14 0x5b2a0ccf390c in parquet::internal::(anonymous namespace)::TypedRecordReader<parquet::PhysicalType<(parquet::Type::type)7>>::ReadRecordData(long) arrow/cpp/src/parquet/column_reader.cc:1863:22
  | #15 0x5b2a0cce96b0 in parquet::internal::(anonymous namespace)::TypedRecordReader<parquet::PhysicalType<(parquet::Type::type)7>>::ReadRecords(long) arrow/cpp/src/parquet/column_reader.cc:0:22
  | #16 0x5b2a0c9bafd6 in parquet::arrow::(anonymous namespace)::LeafReader::LoadBatch(long) arrow/cpp/src/parquet/arrow/reader.cc:495:46
  | #17 0x5b2a0c9b8028 in parquet::arrow::ColumnReaderImpl::NextBatch(long, std::__1::shared_ptr<arrow::ChunkedArray>*) arrow/cpp/src/parquet/arrow/reader.cc:110:5
  | #18 0x5b2a0c9e4427 in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadColumn(int, std::__1::vector<int, std::__1::allocator<int>> const&, parquet::arrow::ColumnReader*, std::__1::shared_ptr<arrow::ChunkedArray>*) arrow/cpp/src/parquet/arrow/reader.cc:286:20
  | #19 0x5b2a0ca1632d in parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*)::$_0::operator()(unsigned long, std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>) const arrow/cpp/src/parquet/arrow/reader.cc:1282:5
  | #20 0x5b2a0ca1632d in arrow::Future<std::__1::vector<std::__1::shared_ptr<arrow::ChunkedArray>, std::__1::allocator<std::__1::shared_ptr<arrow::ChunkedArray>>>> arrow::internal::OptionalParallelForAsync<parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*)::$_0&, std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>, std::__1::shared_ptr<arrow::ChunkedArray>>(bool, std::__1::vector<std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>, std::__1::allocator<std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>>>, parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*)::$_0&, arrow::internal::Executor*, arrow::internal::TaskHints) arrow/cpp/src/arrow/util/parallel.h:97:7
  | #21 0x5b2a0ca1632d in parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*) arrow/cpp/src/parquet/arrow/reader.cc:1300:10
  | #22 0x5b2a0c9a8ee4 in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadRowGroups(std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::shared_ptr<arrow::Table>*) arrow/cpp/src/parquet/arrow/reader.cc:1261:14
  | #23 0x5b2a0c9a8311 in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadRowGroup(int, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::shared_ptr<arrow::Table>*) arrow/cpp/src/parquet/arrow/reader.cc:323:12
  | #24 0x5b2a0c9a893a in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadRowGroup(int, std::__1::shared_ptr<arrow::Table>*) arrow/cpp/src/parquet/arrow/reader.cc:327:12
  | #25 0x5b2a0c996195 in parquet::arrow::internal::(anonymous namespace)::FuzzReader(std::__1::unique_ptr<parquet::arrow::FileReader, std::__1::default_delete<parquet::arrow::FileReader>>) arrow/cpp/src/parquet/arrow/reader.cc:1405:37
  | #26 0x5b2a0c996195 in parquet::arrow::internal::FuzzReader(unsigned char const*, long) arrow/cpp/src/parquet/arrow/reader.cc:1432:11
  | #27 0x5b2a0c98c9b4 in LLVMFuzzerTestOneInput arrow/cpp/src/parquet/arrow/fuzz.cc:22:17
  | #28 0x5b2a0c98c879 in ExecuteFilesOnyByOne /src/aflplusplus/utils/aflpp_driver/aflpp_driver.c:267:7
  | #29 0x5b2a0c98c679 in LLVMFuzzerRunDriver /src/aflplusplus/utils/aflpp_driver/aflpp_driver.c:0
  | #30 0x5b2a0c98c21b in main /src/aflplusplus/utils/aflpp_driver/aflpp_driver.c:323:10
  | #31 0x7c03e5425082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/libc-start.c:308:16
  | #32 0x5b2a0c8a4c2d in _start
  |  
  | ==404==Register values:
  | rax = 0x00007803e2034800  rbx = 0x0000000000000000  rcx = 0x00000f00fc3fe901  rdx = 0x0000000000000010
  | rdi = 0x00007803e2034800  rsi = 0x0000000000000000  rbp = 0x00007fffb2edf4d0  rsp = 0x00007fffb2edec88
  | r8 = 0x00000f007c406900   r9 = 0x00007803e203480f  r10 = 0x00000f007c406901  r11 = 0x00000f00fc3fe900
  | r12 = 0x00000f00fc3fe900  r13 = 0xffffffffffffffcf  r14 = 0x0000000000000010  r15 = 0x00007973e48e0968
  | AddressSanitizer can not provide additional info.
  | SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0xbbaeb) (BuildId: 0702430aef5fa3dda43986563e9ffcc47efbd75e)
  | ==404==ABORTING

+----------------------------------------Release Build Stacktrace----------------------------------------+
Command: /mnt/scratch0/clusterfuzz/resources/platform/linux/unshare -c -n /mnt/scratch0/clusterfuzz/bot/builds/clusterfuzz-builds-afl_arrow_e29c872a699461cda988a0933f4bebaeaafdc12a/revisions/parquet-arrow-fuzz /mnt/scratch0/clusterfuzz/bot/inputs/fuzzer-testcases/crash
Time ran: 0.43276381492614746
AddressSanitizer:DEADLYSIGNAL
=================================================================
==404==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7c03e54bcaeb bp 0x7fffb2edf4d0 sp 0x7fffb2edec88 T0)
==404==The signal is caused by a READ memory access.
==404==Hint: address points to the zero page.
    #0 0x7c03e54bcaeb in memcpy /build/glibc-LcI20x/glibc-2.31/sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:142
    #1 0x5b2a0c945ddb in __asan_memcpy /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:63:3
    #2 0x5b2a0cd7229e in arrow::BufferBuilder::UnsafeAppend(void const*, long) [arrow/cpp/src/arrow/buffer_builder.h:143](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/arrow/buffer_builder.h#L143):5
    #3 0x5b2a0cd7229e in arrow::FixedSizeBinaryBuilder::UnsafeAppend(unsigned char const*) [arrow/cpp/src/arrow/array/builder_binary.h:797](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/arrow/array/builder_binary.h#L797):21
    #4 0x5b2a0cd7229e in parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>::AppendValue(unsigned char const*, int, std::__1::optional<long>) [arrow/cpp/src/parquet/decoder.cc:210](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/decoder.cc#L210):11
    #5 0x5b2a0cd7229e in auto parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)::operator()<parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>>(auto*) const::'lambda'(long, long, bool)::operator()(long, long, bool) const [arrow/cpp/src/parquet/decoder.cc:2093](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/decoder.cc#L2093):7
    #6 0x5b2a0cd7229e in arrow::Status arrow::internal::VisitBitRuns<auto parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)::operator()<parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>>(auto*) const::'lambda'(long, long, bool)>(unsigned char const*, long, long, auto&&) [arrow/cpp/src/arrow/util/bit_run_reader.h:469](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/arrow/util/bit_run_reader.h#L469):12
    #7 0x5b2a0cd7229e in auto parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)::operator()<parquet::(anonymous namespace)::ArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, arrow::FixedSizeBinaryType>>(auto*) const [arrow/cpp/src/parquet/decoder.cc:2093](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/decoder.cc#L2093):7
    #8 0x5b2a0cd7229e in auto parquet::(anonymous namespace)::DispatchArrowBinaryHelper<parquet::PhysicalType<(parquet::Type::type)7>, parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)&>(parquet::EncodingTraits<auto>::Accumulator*, long, std::__1::optional<long>, parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*)::'lambda'(auto*)&) [arrow/cpp/src/parquet/decoder.cc:259](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/decoder.cc#L259):12
    #9 0x5b2a0cd7229e in parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowDense(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*, int*) [arrow/cpp/src/parquet/decoder.cc:2112](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/decoder.cc#L2112):12
    #10 0x5b2a0cd7229e in parquet::(anonymous namespace)::DeltaByteArrayDecoderImpl<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrow(int, int, unsigned char const*, long, arrow::FixedSizeBinaryBuilder*) [arrow/cpp/src/parquet/decoder.cc:1960](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/decoder.cc#L1960):5
    #11 0x5b2a0ccf193f in parquet::TypedDecoder<parquet::PhysicalType<(parquet::Type::type)7>>::DecodeArrowNonNull(int, arrow::FixedSizeBinaryBuilder*) [arrow/cpp/src/parquet/encoding.h:311](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/encoding.h#L311):12
    #12 0x5b2a0ccf193f in parquet::internal::(anonymous namespace)::FLBARecordReader::ReadValuesDense(long) [arrow/cpp/src/parquet/column_reader.cc:1973](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/column_reader.cc#L1973):51
    #13 0x5b2a0ccf390c in parquet::internal::(anonymous namespace)::TypedRecordReader<parquet::PhysicalType<(parquet::Type::type)7>>::ReadRequiredRecords(long, long*) [arrow/cpp/src/parquet/column_reader.cc:1799](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/column_reader.cc#L1799):5
    #14 0x5b2a0ccf390c in parquet::internal::(anonymous namespace)::TypedRecordReader<parquet::PhysicalType<(parquet::Type::type)7>>::ReadRecordData(long) [arrow/cpp/src/parquet/column_reader.cc:1863](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/column_reader.cc#L1863):22
    #15 0x5b2a0cce96b0 in parquet::internal::(anonymous namespace)::TypedRecordReader<parquet::PhysicalType<(parquet::Type::type)7>>::ReadRecords(long) [arrow/cpp/src/parquet/column_reader.cc:0](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/column_reader.cc#L0):22
    #16 0x5b2a0c9bafd6 in parquet::arrow::(anonymous namespace)::LeafReader::LoadBatch(long) [arrow/cpp/src/parquet/arrow/reader.cc:495](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L495):46
    #17 0x5b2a0c9b8028 in parquet::arrow::ColumnReaderImpl::NextBatch(long, std::__1::shared_ptr<arrow::ChunkedArray>*) [arrow/cpp/src/parquet/arrow/reader.cc:110](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L110):5
    #18 0x5b2a0c9e4427 in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadColumn(int, std::__1::vector<int, std::__1::allocator<int>> const&, parquet::arrow::ColumnReader*, std::__1::shared_ptr<arrow::ChunkedArray>*) [arrow/cpp/src/parquet/arrow/reader.cc:286](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L286):20
    #19 0x5b2a0ca1632d in parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*)::$_0::operator()(unsigned long, std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>) const [arrow/cpp/src/parquet/arrow/reader.cc:1282](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L1282):5
    #20 0x5b2a0ca1632d in arrow::Future<std::__1::vector<std::__1::shared_ptr<arrow::ChunkedArray>, std::__1::allocator<std::__1::shared_ptr<arrow::ChunkedArray>>>> arrow::internal::OptionalParallelForAsync<parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*)::$_0&, std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>, std::__1::shared_ptr<arrow::ChunkedArray>>(bool, std::__1::vector<std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>, std::__1::allocator<std::__1::shared_ptr<parquet::arrow::ColumnReaderImpl>>>, parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*)::$_0&, arrow::internal::Executor*, arrow::internal::TaskHints) [arrow/cpp/src/arrow/util/parallel.h:97](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/arrow/util/parallel.h#L97):7
    #21 0x5b2a0ca1632d in parquet::arrow::(anonymous namespace)::FileReaderImpl::DecodeRowGroups(std::__1::shared_ptr<parquet::arrow::(anonymous namespace)::FileReaderImpl>, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, arrow::internal::Executor*) [arrow/cpp/src/parquet/arrow/reader.cc:1300](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L1300):10
    #22 0x5b2a0c9a8ee4 in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadRowGroups(std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::shared_ptr<arrow::Table>*) [arrow/cpp/src/parquet/arrow/reader.cc:1261](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L1261):14
    #23 0x5b2a0c9a8311 in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadRowGroup(int, std::__1::vector<int, std::__1::allocator<int>> const&, std::__1::shared_ptr<arrow::Table>*) [arrow/cpp/src/parquet/arrow/reader.cc:323](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L323):12
    #24 0x5b2a0c9a893a in parquet::arrow::(anonymous namespace)::FileReaderImpl::ReadRowGroup(int, std::__1::shared_ptr<arrow::Table>*) [arrow/cpp/src/parquet/arrow/reader.cc:327](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L327):12
    #25 0x5b2a0c996195 in parquet::arrow::internal::(anonymous namespace)::FuzzReader(std::__1::unique_ptr<parquet::arrow::FileReader, std::__1::default_delete<parquet::arrow::FileReader>>) [arrow/cpp/src/parquet/arrow/reader.cc:1405](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L1405):37
    #26 0x5b2a0c996195 in parquet::arrow::internal::FuzzReader(unsigned char const*, long) [arrow/cpp/src/parquet/arrow/reader.cc:1432](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/reader.cc#L1432):11
    #27 0x5b2a0c98c9b4 in LLVMFuzzerTestOneInput [arrow/cpp/src/parquet/arrow/fuzz.cc:22](https://github.com/apache/arrow/blob/9b96bdbc733d62f0375a2b1b9806132abc19cd3f/cpp/src/parquet/arrow/fuzz.cc#L22):17
    #28 0x5b2a0c98c879 in ExecuteFilesOnyByOne /src/aflplusplus/utils/aflpp_driver/aflpp_driver.c:267:7
    #29 0x5b2a0c98c679 in LLVMFuzzerRunDriver /src/aflplusplus/utils/aflpp_driver/aflpp_driver.c:0
    #30 0x5b2a0c98c21b in main /src/aflplusplus/utils/aflpp_driver/aflpp_driver.c:323:10
    #31 0x7c03e5425082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/libc-start.c:308:16
    #32 0x5b2a0c8a4c2d in _start
==404==Register values:
rax = 0x00007803e2034800  rbx = 0x0000000000000000  rcx = 0x00000f00fc3fe901  rdx = 0x0000000000000010
rdi = 0x00007803e2034800  rsi = 0x0000000000000000  rbp = 0x00007fffb2edf4d0  rsp = 0x00007fffb2edec88
 r8 = 0x00000f007c406900   r9 = 0x00007803e203480f  r10 = 0x00000f007c406901  r11 = 0x00000f00fc3fe900
r12 = 0x00000f00fc3fe900  r13 = 0xffffffffffffffcf  r14 = 0x0000000000000010  r15 = 0x00007973e48e0968
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0xbbaeb) (BuildId: 0702430aef5fa3dda43986563e9ffcc47efbd75e)
==404==ABORTING

Component(s)

C++, Parquet

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions