kou commented on PR #14147:
URL: https://github.com/apache/arrow/pull/14147#issuecomment-1263261877

   Could you confirm this failure? 
https://github.com/apache/arrow/actions/runs/3155990217/jobs/5136453754#step:6:3035
   
   ```text
   [----------] 2 tests from TestBooleanRLE
   [ RUN      ] TestBooleanRLE.TestBooleanScanner
   [       OK ] TestBooleanRLE.TestBooleanScanner (4 ms)
   [ RUN      ] TestBooleanRLE.TestBatchRead
   =================================================================
   ==24088==ERROR: AddressSanitizer: stack-buffer-overflow on address 
0x7ffd9a55539f at pc 0x7f4c6b9f033d bp 0x7ffd9a5528b0 sp 0x7ffd9a5528a8
   WRITE of size 1 at 0x7ffd9a55539f thread T0
       #0 0x7f4c6b9f033c in void arrow::bit_util::detail::GetValue_<bool>(int, 
bool*, int, unsigned char const*, int*, int*, unsigned long*) 
/arrow/cpp/src/arrow/util/bit_stream_utils.h:279:6
       #1 0x7f4c6b9edb05 in int arrow::bit_util::BitReader::GetBatch<bool>(int, 
bool*, int) /arrow/cpp/src/arrow/util/bit_stream_utils.h:338:7
       #2 0x7f4c6b9ec0e6 in int arrow::util::RleDecoder::GetBatch<bool>(bool*, 
int) /arrow/cpp/src/arrow/util/rle_encoding.h:320:37
       #3 0x7f4c6b9dd98d in parquet::(anonymous 
namespace)::RleBooleanDecoder::Decode(bool*, int) 
/arrow/cpp/src/parquet/encoding.cc:2368:19
       #4 0x7f4c6b676a35 in parquet::(anonymous 
namespace)::ColumnReaderImplBase<parquet::PhysicalType<(parquet::Type::type)0> 
>::ReadValues(long, bool*) /arrow/cpp/src/parquet/column_reader.cc:576:45
       #5 0x7f4c6b65c99c in parquet::(anonymous 
namespace)::TypedColumnReaderImpl<parquet::PhysicalType<(parquet::Type::type)0> 
>::ReadBatch(long, short*, short*, bool*, long*) 
/arrow/cpp/src/parquet/column_reader.cc:1044:24
       #6 0x7a3c21 in parquet::TestBooleanRLE_TestBatchRead_Test::TestBody() 
/arrow/cpp/src/parquet/reader_test.cc:240:14
       #7 0x7f4c6d436a3a in void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:2607:10
       #8 0x7f4c6d41b569 in void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:2643:14
       #9 0x7f4c6d3f4c42 in testing::Test::Run() 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:2682:5
       #10 0x7f4c6d3f5a08 in testing::TestInfo::Run() 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:2861:11
       #11 0x7f4c6d3f6223 in testing::TestSuite::Run() 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:3015:28
       #12 0x7f4c6d407004 in testing::internal::UnitTestImpl::RunAllTests() 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:5855:44
       #13 0x7f4c6d4398da in bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:2607:10
       #14 0x7f4c6d41dd89 in bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:2643:14
       #15 0x7f4c6d406b60 in testing::UnitTest::Run() 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:5438:10
       #16 0x7f4c6d471210 in RUN_ALL_TESTS() 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/include/gtest/gtest.h:2490:46
       #17 0x7f4c6d4711ec in main 
/build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest_main.cc:52:10
       #18 0x7f4c4efc5082 in __libc_start_main 
(/lib/x86_64-linux-gnu/libc.so.6+0x24082)
       #19 0x47330d in _start (/build/cpp/debug/parquet-reader-test+0x47330d)
   
   Address 0x7ffd9a55539f is located in stack of thread T0 at offset 1503 in 
frame
       #0 0x79e64f in parquet::TestBooleanRLE_TestBatchRead_Test::TestBody() 
/arrow/cpp/src/parquet/reader_test.cc:188
   
     This frame has 104 object(s):
       [32, 36) 'nvalues' (line 189)
       [48, 52) 'num_row_groups' (line 190)
       [64, 68) 'metadata_size' (line 191)
       [80, 96) 'group' (line 193)
       [112, 128) 'col' (line 196)
       [144, 160) 'ref.tmp' (line 196)
       [176, 192) 'gtest_ar' (line 199)
       [208, 216) 'ref.tmp9' (line 199)
       [240, 256) 'ref.tmp10' (line 199)
       [272, 280) 'ref.tmp30' (line 199)
       [304, 312) 'ref.tmp33' (line 199)
       [336, 352) 'gtest_ar47' (line 201)
       [368, 372) 'ref.tmp48' (line 201)
       [384, 400) 'ref.tmp49' (line 201)
       [416, 424) 'ref.tmp73' (line 201)
       [448, 456) 'ref.tmp76' (line 201)
       [480, 496) 'gtest_ar94' (line 203)
       [512, 516) 'ref.tmp95' (line 203)
       [528, 544) 'ref.tmp96' (line 203)
       [560, 568) 'ref.tmp120' (line 203)
       [592, 600) 'ref.tmp123' (line 203)
       [624, 640) 'gtest_ar141' (line 205)
       [656, 664) 'ref.tmp142' (line 205)
       [688, 696) 'ref.tmp160' (line 205)
       [720, 728) 'ref.tmp163' (line 205)
       [752, 760) 'col_chunk' (line 208)
       [784, 800) 'gtest_ar_' (line 209)
       [816, 817) 'ref.tmp190' (line 209)
       [832, 840) 'ref.tmp191' (line 209)
       [864, 872) 'agg.tmp'
       [896, 904) 'agg.tmp201'
       [928, 932) 'ref.tmp211' (line 209)
       [944, 952) 'ref.tmp218' (line 209)
       [976, 984) 'ref.tmp240' (line 209)
       [1008, 1016) 'ref.tmp243' (line 209)
       [1040, 1072) 'ref.tmp244' (line 209)
       [1104, 1120) 'gtest_ar_265' (line 213)
       [1136, 1137) 'ref.tmp266' (line 213)
       [1152, 1160) 'ref.tmp281' (line 213)
       [1184, 1192) 'ref.tmp284' (line 213)
       [1216, 1248) 'ref.tmp285' (line 213)
       [1280, 1288) 'curr_batch_read' (line 214)
       [1312, 1314) 'batch_size' (line 216)
       [1328, 1362) 'def_levels' (line 218)
       [1408, 1442) 'rep_levels' (line 219)
       [1488, 1503) 'values' (line 220) <== Memory access at offset 1503 
overflows this variable
       [1520, 1528) 'levels_read' (line 222)
       [1552, 1568) 'gtest_ar316' (line 224)
       [1584, 1592) 'ref.tmp324' (line 224)
       [1616, 1624) 'ref.tmp327' (line 224)
       [1648, 1664) 'gtest_ar345' (line 228)
       [1680, 1684) 'ref.tmp346' (line 228)
       [1696, 1704) 'ref.tmp355' (line 228)
       [1728, 1736) 'ref.tmp358' (line 228)
       [1760, 1776) 'gtest_ar376' (line 231)
       [1792, 1860) 'ref.tmp377' (line 231)
       [1904, 1972) 'agg.tmp378'
       [2016, 2020) 'ref.tmp379' (line 231)
       [2032, 2036) 'ref.tmp380' (line 231)
       [2048, 2052) 'ref.tmp381' (line 231)
       [2064, 2068) 'ref.tmp382' (line 231)
       [2080, 2084) 'ref.tmp383' (line 231)
       [2096, 2100) 'ref.tmp384' (line 231)
       [2112, 2116) 'ref.tmp385' (line 231)
       [2128, 2132) 'ref.tmp386' (line 231)
       [2144, 2148) 'ref.tmp387' (line 231)
       [2160, 2164) 'ref.tmp388' (line 231)
       [2176, 2180) 'ref.tmp389' (line 231)
       [2192, 2196) 'ref.tmp390' (line 231)
       [2208, 2212) 'ref.tmp391' (line 231)
       [2224, 2228) 'ref.tmp392' (line 231)
       [2240, 2244) 'ref.tmp393' (line 231)
       [2256, 2260) 'ref.tmp394' (line 231)
       [2272, 2276) 'ref.tmp395' (line 231)
       [2288, 2296) 'ref.tmp423' (line 231)
       [2320, 2328) 'ref.tmp426' (line 231)
       [2352, 2368) 'gtest_ar444' (line 235)
       [2384, 2444) 'ref.tmp445' (line 235)
       [2480, 2540) 'agg.tmp446'
       [2576, 2580) 'ref.tmp447' (line 235)
       [2592, 2596) 'ref.tmp448' (line 235)
       [2608, 2612) 'ref.tmp449' (line 235)
       [2624, 2628) 'ref.tmp450' (line 235)
       [2640, 2644) 'ref.tmp451' (line 235)
       [2656, 2660) 'ref.tmp452' (line 235)
       [2672, 2676) 'ref.tmp453' (line 235)
       [2688, 2692) 'ref.tmp454' (line 235)
       [2704, 2708) 'ref.tmp455' (line 235)
       [2720, 2724) 'ref.tmp456' (line 235)
       [2736, 2740) 'ref.tmp457' (line 235)
       [2752, 2756) 'ref.tmp458' (line 235)
       [2768, 2772) 'ref.tmp459' (line 235)
       [2784, 2788) 'ref.tmp460' (line 235)
       [2800, 2804) 'ref.tmp461' (line 235)
       [2816, 2824) 'ref.tmp487' (line 235)
       [2848, 2856) 'ref.tmp490' (line 235)
       [2880, 2896) 'gtest_ar519' (line 241)
       [2912, 2920) 'ref.tmp527' (line 241)
       [2944, 2952) 'ref.tmp530' (line 241)
       [2976, 2992) 'gtest_ar_552' (line 245)
       [3008, 3009) 'ref.tmp553' (line 245)
       [3024, 3032) 'ref.tmp570' (line 245)
       [3056, 3064) 'ref.tmp573' (line 245)
       [3088, 3120) 'ref.tmp574' (line 245)
   HINT: this may be a false positive if your program uses some custom stack 
unwind mechanism, swapcontext or vfork
         (longjmp and C++ exceptions *are* supported)
   SUMMARY: AddressSanitizer: stack-buffer-overflow 
/arrow/cpp/src/arrow/util/bit_stream_utils.h:279:6 in void 
arrow::bit_util::detail::GetValue_<bool>(int, bool*, int, unsigned char const*, 
int*, int*, unsigned long*)
   Shadow bytes around the buggy address:
     0x1000334a2a20: f8 f2 f2 f2 00 f2 f2 f2 00 f2 f2 f2 f8 f2 f8 f2
     0x1000334a2a30: f2 f2 f8 f2 f2 f2 f8 f2 f2 f2 f8 f8 f8 f8 f2 f2
     0x1000334a2a40: f2 f2 f8 f8 f2 f2 f8 f2 f8 f2 f2 f2 f8 f2 f2 f2
     0x1000334a2a50: f8 f8 f8 f8 f2 f2 f2 f2 00 f2 f2 f2 02 f2 00 00
     0x1000334a2a60: 00 00 02 f2 f2 f2 f2 f2 00 00 00 00 02 f2 f2 f2
   =>0x1000334a2a70: f2 f2 00[07]f2 f2 00 f2 f2 f2 f8 f8 f2 f2 f8 f2
     0x1000334a2a80: f2 f2 f8 f2 f2 f2 f8 f8 f2 f2 f8 f2 f8 f2 f2 f2
     0x1000334a2a90: f8 f2 f2 f2 f8 f8 f2 f2 f8 f8 f8 f8 f8 f8 f8 f8
     0x1000334a2aa0: f8 f2 f2 f2 f2 f2 00 00 00 00 00 00 00 00 04 f2
     0x1000334a2ab0: f2 f2 f2 f2 f8 f2 f8 f2 f8 f2 f8 f2 f8 f2 f8 f2
     0x1000334a2ac0: f8 f2 f8 f2 f8 f2 f8 f2 f8 f2 f8 f2 f8 f2 f8 f2
   Shadow byte legend (one shadow byte represents 8 application bytes):
     Addressable:           00
     Partially addressable: 01 02 03 04 05 06 07
     Heap left redzone:       fa
     Freed heap region:       fd
     Stack left redzone:      f1
     Stack mid redzone:       f2
     Stack right redzone:     f3
     Stack after return:      f5
     Stack use after scope:   f8
     Global redzone:          f9
     Global init order:       f6
     Poisoned by user:        f7
     Container overflow:      fc
     Array cookie:            ac
     Intra object redzone:    bb
     ASan internal:           fe
     Left alloca redzone:     ca
     Right alloca redzone:    cb
     Shadow gap:              cc
   ==24088==ABORTING
   /build/cpp/src/parquet
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to