[ 
https://issues.apache.org/jira/browse/ARROW-13639?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Li updated ARROW-13639:
-----------------------------
    Summary: [C++] Concatenate with an empty dictionary segfaults (ASan failure 
in TestFilterKernelWithString/0.FilterDictionary)  (was: [C++] ASan failure in 
TestFilterKernelWithString/0.FilterDictionary)

> [C++] Concatenate with an empty dictionary segfaults (ASan failure in 
> TestFilterKernelWithString/0.FilterDictionary)
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: ARROW-13639
>                 URL: https://issues.apache.org/jira/browse/ARROW-13639
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++
>            Reporter: David Li
>            Assignee: David Li
>            Priority: Major
>             Fix For: 6.0.0
>
>
> {noformat}
> [ RUN      ] TestFilterKernelWithString/0.FilterDictionary
> =================================================================
> ==31836==ERROR: AddressSanitizer: global-buffer-overflow on address 
> 0x7f3788bac6c0 at pc 0x7f377c13382b bp 0x7ffe135dddb0 sp 0x7ffe135ddda8
> READ of size 4 at 0x7f3788bac6c0 thread T0
>     #0 0x7f377c13382a in void arrow::internal::TransposeInts<signed char, 
> signed char>(signed char const*, signed char*, long, int const*) 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/util/int_util.cc:434
>     #1 0x7f377c1243f2 in Visit<arrow::Int8Type> 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/util/int_util.cc:482
>     #2 0x7f377c11a5f9 in VisitTypeInline<arrow::internal::(anonymous 
> namespace)::TransposeIntsDest<signed char> > 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/visitor_inline.h:89
>     #3 0x7f377c119b51 in operator() 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/util/int_util.cc:491
>     #4 0x7f377c102ac9 in Visit<arrow::Int8Type> 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/util/int_util.cc:508
>     #5 0x7f377c0f7c88 in VisitTypeInline<arrow::internal::(anonymous 
> namespace)::TransposeIntsSrc> 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/visitor_inline.h:89
>     #6 0x7f377c0f479d in operator() 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/util/int_util.cc:515
>     #7 0x7f377c0f49f3 in arrow::internal::TransposeInts(arrow::DataType 
> const&, arrow::DataType const&, unsigned char const*, unsigned char*, long, 
> long, long, int const*) 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/util/int_util.cc:525
>     #8 0x7f377b6e72fd in ConcatenateDictionaryIndices 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/array/concatenate.cc:289
>     #9 0x7f377b6e85f0 in Visit 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/array/concatenate.cc:320
>     #10 0x7f377b6ef4cf in VisitTypeInline<arrow::(anonymous 
> namespace)::ConcatenateImpl> 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/visitor_inline.h:89
>     #11 0x7f377b6e11a2 in Concatenate 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/array/concatenate.cc:193
>     #12 0x7f377b6ed681 in 
> arrow::Concatenate(std::vector<std::shared_ptr<arrow::Array>, 
> std::allocator<std::shared_ptr<arrow::Array> > > const&, arrow::MemoryPool*) 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/array/concatenate.cc:481
>     #13 0x55adf99765b9 in 
> arrow::compute::TestFilterKernel::AssertFilter(std::shared_ptr<arrow::Array> 
> const&, std::shared_ptr<arrow::Array> const&, std::shared_ptr<arrow::Array> 
> const&) 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/compute/kernels/vector_selection_test.cc:221
>     #14 0x55adf9c12be2 in 
> arrow::compute::TestFilterKernelWithString<arrow::BinaryType>::AssertFilterDictionary(std::__cxx11::basic_string<char,
>  std::char_traits<char>, std::allocator<char> > const&, 
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> 
> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, 
> std::allocator<char> > const&, std::__cxx11::basic_string<char, 
> std::char_traits<char>, std::allocator<char> > const&) 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/compute/kernels/vector_selection_test.cc:517
>     #15 0x55adf9bb251d in 
> arrow::compute::TestFilterKernelWithString_FilterDictionary_Test<arrow::BinaryType>::TestBody()
>  
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/compute/kernels/vector_selection_test.cc:531
>     #16 0x7f378ac3698d in void 
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
> void>(testing::Test*, void (testing::Test::*)(), char const*) 
> (/home/lidavidm/miniconda3/envs/arrow4/lib/libgtest.so+0x4c98d)
>     #17 0x7f378ac36be0 in testing::Test::Run() 
> (/home/lidavidm/miniconda3/envs/arrow4/lib/libgtest.so+0x4cbe0)
>     #18 0x7f378ac36f0e in testing::TestInfo::Run() 
> (/home/lidavidm/miniconda3/envs/arrow4/lib/libgtest.so+0x4cf0e)
>     #19 0x7f378ac37035 in testing::TestSuite::Run() 
> (/home/lidavidm/miniconda3/envs/arrow4/lib/libgtest.so+0x4d035)
>     #20 0x7f378ac375eb in testing::internal::UnitTestImpl::RunAllTests() 
> (/home/lidavidm/miniconda3/envs/arrow4/lib/libgtest.so+0x4d5eb)
>     #21 0x7f378ac37858 in testing::UnitTest::Run() 
> (/home/lidavidm/miniconda3/envs/arrow4/lib/libgtest.so+0x4d858)
>     #22 0x7f378ac9707e in main 
> (/home/lidavidm/miniconda3/envs/arrow4/lib/libgtest_main.so+0x107e)
>     #23 0x7f377180cbf6 in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x21bf6)
>     #24 0x55adf9431658  
> (/home/lidavidm/Code/upstream/merging/build/debug/arrow-compute-vector-test+0xbaa658)0x7f3788bac6c1
>  is located 0 bytes to the right of global variable 'zero_size_area' defined 
> in '/home/lidavidm/Code/upstream/merging/cpp/src/arrow/memory_pool.cc:188:36' 
> (0x7f3788bac6c0) of size 1
>   'zero_size_area' is ascii string ''
> SUMMARY: AddressSanitizer: global-buffer-overflow 
> /home/lidavidm/Code/upstream/merging/cpp/src/arrow/util/int_util.cc:434 in 
> void arrow::internal::TransposeInts<signed char, signed char>(signed char 
> const*, signed char*, long, int const*)
> Shadow bytes around the buggy address:
>   0x0fe77116d880: f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9 00 00 f9 f9
>   0x0fe77116d890: f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9 00 00 f9 f9
>   0x0fe77116d8a0: f9 f9 f9 f9 04 f9 f9 f9 f9 f9 f9 f9 00 00 00 00
>   0x0fe77116d8b0: 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
>   0x0fe77116d8c0: 00 f9 f9 f9 f9 f9 f9 f9 02 f9 f9 f9 f9 f9 f9 f9
> =>0x0fe77116d8d0: 00 f9 f9 f9 f9 f9 f9 f9[01]f9 f9 f9 f9 f9 f9 f9
>   0x0fe77116d8e0: 00 00 00 00 00 00 00 f9 f9 f9 f9 f9 00 00 00 00
>   0x0fe77116d8f0: 01 f9 f9 f9 f9 f9 f9 f9 04 f9 f9 f9 f9 f9 f9 f9
>   0x0fe77116d900: 00 00 00 00 00 00 00 00 00 00 00 00 01 f9 f9 f9
>   0x0fe77116d910: f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9
>   0x0fe77116d920: f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9
> 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
> ==31836==ABORTING
> fish: Job 1, './debug/arrow-compute-vector-te…' terminated by signal SIGABRT 
> (Abort) {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to