Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
Description
I've observed occasional crashes when using the parquet::arrow::ColumnReader to iteratively read a fixed number of records. This has been quite tricky to isolate but compiling the attached version of parquet-arrow-example with ASAN has pointed me to an out-of-bounds access at cpp/src/parquet/arrow/record_reader.cc#L356
ASAN stack trace
==18666==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00010c1b3038 at pc 0x000108330bdd bp 0x7ffee8d16450 sp 0x7ffee8d15c00 READ of size 198 at 0x00010c1b3038 thread T0 #0 0x108330bdc in __asan_memmove (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x54bdc) #1 0x107205e96 in parquet::internal::RecordReader::RecordReaderImpl::Reset() algorithm:1828 #2 0x107205813 in parquet::internal::RecordReader::Reset() record_reader.cc:932 #3 0x106faea47 in parquet::arrow::PrimitiveImpl::NextBatch(long long, std::__1::shared_ptr<arrow::ChunkedArray>*) reader.cc:1549 #4 0x106f6e69b in parquet::arrow::ColumnReader::NextBatch(long long, std::__1::shared_ptr<arrow::ChunkedArray>*) reader.cc:1665 #5 0x106f06afe in read_column_iterative() reader-writer.cc:162 #6 0x106f09e9a in main reader-writer.cc:174 #7 0x7fff79472ed8 in start (libdyld.dylib:x86_64+0x16ed8)
Attachments
Issue Links
- links to