Yida Wu created IMPALA-13868:
--------------------------------

             Summary: Asan build failed in test_ai_generate_text_exprs
                 Key: IMPALA-13868
                 URL: https://issues.apache.org/jira/browse/IMPALA-13868
             Project: IMPALA
          Issue Type: Bug
          Components: Backend
    Affects Versions: Impala 4.5.0
            Reporter: Yida Wu
            Assignee: Yida Wu


Running query_test/test_exprs.py in the ASAN build consistently fails at one 
AiGenerateText test case, which testing the handling of 'Error parsing Impala 
options'. The issue is likely caused by improper usage of stringstream in 
https://github.com/apache/impala/blob/356b7e5ddf7868968fb76ca55a8046d0291388fd/be/src/exprs/ai-functions.cc#L129.
{code:java}
=================================================================
==26567==ERROR: AddressSanitizer: use-after-poison on address 0x6210008ca21c at 
pc 0x00000217c628 bp 0x7f38044928f0 sp 0x7f38044920a0
READ of size 3841 at 0x6210008ca21c thread T508
==26567==AddressSanitizer: while reporting a bug found another one. Ignoring.
E0316 19:52:50.080662 29280 LiteralExpr.java:216] 
5c49cc395b09b4b5:98a5006b00000000] Failed to evaluate expr 'aes_encrypt('ABC', 
'12345678901234567890123456789012', '', '1234567890123456')': Invalid AES 
'mode':
    #0 0x217c627  (/impala/Impala/be/build/debug/service/impalad+0x217c627)
    #1 0x7f3d04199a69 in std::char_traits<char>::length(char const*) 
/mnt/source/gcc/build-10.4.0/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/char_traits.h:399:25
    #2 0x7f3d04199a69 in std::basic_ostream<char, std::char_traits<char> >& 
std::operator<< <std::char_traits<char> >(std::basic_ostream<char, 
std::char_traits<char> >&, char const*) 
/mnt/source/gcc/build-10.4.0/x86_64-pc-linux-gnu/libstdc++-v3/include/ostream:612:44
    #3 0x4944cc5 in impala::ParseImpalaOptions(impala_udf::StringVal const&, 
rapidjson::GenericDocument<rapidjson::UTF8<char>, 
rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, 
rapidjson::CrtAllocator>&, impala::AiFunctions::AiFunctionsOptions&) 
/impala/Impala/be/src/exprs/ai-functions.cc:129:44
    #4 0x494d551 in impala_udf::StringVal 
impala::AiFunctions::AiGenerateTextInternal<false, 
(impala::AiFunctions::AI_PLATFORM)1>(impala_udf::FunctionContext*, 
std::basic_string_view<char, std::char_traits<char> > const&, 
impala_udf::StringVal const&, impala_udf::StringVal const&, 
impala_udf::StringVal const&, impala_udf::StringVal const&, 
impala_udf::StringVal const&, bool) 
/impala/Impala/be/src/exprs/ai-functions.cc:190:7
    #5 0x4b015bf in impala_udf::StringVal 
impala::AiFunctions::AiGenerateTextHelper<false>(impala_udf::FunctionContext*, 
impala_udf::StringVal const&, impala_udf::StringVal const&, 
impala_udf::StringVal const&, impala_udf::StringVal const&, 
impala_udf::StringVal const&, impala_udf::StringVal const&) 
/impala/Impala/be/src/exprs/ai-functions-ir.cc:226:14
    #6 0x49e109a in impala_udf::StringVal 
impala::ScalarFnCall::InterpretEval<impala_udf::StringVal>(impala::ScalarExprEvaluator*,
 impala::TupleRow const*) const 
/impala/Impala/be/src/exprs/scalar-fn-call.cc:490:7
    #7 0x49b1d14 in 
impala::ScalarFnCall::GetStringValInterpreted(impala::ScalarExprEvaluator*, 
impala::TupleRow const*) const 
/impala/Impala/be/src/exprs/scalar-fn-call.cc:556:1
    #8 0x4979c7f in 
impala::ScalarExpr::GetStringVal(impala::ScalarExprEvaluator*, impala::TupleRow 
const*) const /impala/Impala/be/src/exprs/scalar-expr.inline.h:63:1
    #9 0x49769cb in impala::ScalarExprEvaluator::GetValue(impala::ScalarExpr 
const&, impala::TupleRow const*) 
/impala/Impala/be/src/exprs/scalar-expr-evaluator.cc:318:38
    #10 0x2e4a731 in void impala::Tuple::MaterializeExprs<false, 
false>(impala::TupleRow*, impala::TupleDescriptor const&, 
impala::ScalarExprEvaluator* const*, impala::MemPool*, 
std::vector<impala::StringValue*, std::allocator<impala::StringValue*> >*, 
std::vector<std::pair<impala::CollectionValue*, long>, 
std::allocator<std::pair<impala::CollectionValue*, long> > >*, int*, int*, 
int*) /impala/Impala/be/src/runtime/tuple.cc:279:27
    #11 0x3c0227f in void impala::Tuple::MaterializeExprs<false, 
false>(impala::TupleRow*, impala::TupleDescriptor const&, 
std::vector<impala::ScalarExprEvaluator*, 
std::allocator<impala::ScalarExprEvaluator*> > const&, impala::MemPool*, 
std::vector<impala::StringValue*, std::allocator<impala::StringValue*> >*, 
std::vector<std::pair<impala::CollectionValue*, long>, 
std::allocator<std::pair<impala::CollectionValue*, long> > >*, int*) 
/impala/Impala/be/src/runtime/tuple.h:229:5
    #12 0x3def605 in 
impala::UnionNode::MaterializeExprs(std::vector<impala::ScalarExprEvaluator*, 
std::allocator<impala::ScalarExprEvaluator*> > const&, impala::TupleRow*, 
unsigned char*, impala::RowBatch*) 
/impala/Impala/be/src/exec/union-node-ir.cc:29:14
    #13 0x3cf74f1 in impala::UnionNode::GetNextConst(impala::RuntimeState*, 
impala::RowBatch*) /impala/Impala/be/src/exec/union-node.cc:295:5
    #14 0x3cf7e05 in impala::UnionNode::GetNext(impala::RuntimeState*, 
impala::RowBatch*, bool*) /impala/Impala/be/src/exec/union-node.cc:329:5
    #15 0x2ee04e0 in impala::FragmentInstanceState::ExecInternal() 
/impala/Impala/be/src/runtime/fragment-instance-state.cc:446:7
    #16 0x2edc6a6 in impala::FragmentInstanceState::Exec() 
/impala/Impala/be/src/runtime/fragment-instance-state.cc:104:14
    #17 0x2dace0e in 
impala::QueryState::ExecFInstance(impala::FragmentInstanceState*) 
/impala/Impala/be/src/runtime/query-state.cc:1013:24
    #18 0x2cf07c6 in boost::function0<void>::operator()() const 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763:14
    #19 0x39bffef in 
impala::Thread::SuperviseThread(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&, boost::function<void ()> const&, impala::ThreadDebugInfo const*, 
impala::Promise<long, (impala::PromiseMode)0>*) 
/impala/Impala/be/src/util/thread.cc:360:3
    #20 0x39ccadb in boost::_bi::bind_t<void, void 
(*)(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&, boost::function<void ()> 
const&, impala::ThreadDebugInfo const*, impala::Promise<long, 
(impala::PromiseMode)0>*), 
boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > >, 
boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, 
boost::_bi::value<impala::ThreadDebugInfo*>, 
boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > 
>::operator()() 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
    #21 0x51dd596 in thread_proxy 
(/impala/Impala/be/build/debug/service/impalad+0x51dd596)
    #22 0x7f3d03c176da in start_thread 
(/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
    #23 0x7f3d0097b61e in clone 
/build/glibc-CVJwZb/glibc-2.27/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95

0x6210008cb100 is located 0 bytes to the right of 4096-byte region 
[0x6210008ca100,0x6210008cb100)
allocated by thread T508 here:
    #0 0x2217daf in __interceptor_malloc 
(/impala/Impala/be/build/debug/service/impalad+0x2217daf)
    #1 0x2d81723 in impala::MemPool::FindChunk(long, bool) 
/impala/Impala/be/src/runtime/mem-pool.cc:132:45
    #2 0x41458e6 in unsigned char* impala::MemPool::Allocate<true>(long, int) 
/impala/Impala/be/src/runtime/mem-pool.h:295:9
    #3 0x41458e6 in impala::MemPool::TryAllocateAligned(long, int) 
/impala/Impala/be/src/runtime/mem-pool.h:130
    #4 0x495edb7 in impala::AllocateAnyVal(impala::RuntimeState*, 
impala::MemPool*, impala::ColumnType const&, std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, impala_udf::AnyVal**) 
/impala/Impala/be/src/exprs/anyval-util.cc:34:39
    #5 0x49adb80 in 
impala::ScalarFnCall::OpenEvaluator(impala_udf::FunctionContext::FunctionStateScope,
 impala::RuntimeState*, impala::ScalarExprEvaluator*) const 
/impala/Impala/be/src/exprs/scalar-fn-call.cc:152:5
    #6 0x4974706 in impala::ScalarExprEvaluator::Open(impala::RuntimeState*) 
/impala/Impala/be/src/exprs/scalar-expr-evaluator.cc:155:16
    #7 0x4974926 in 
impala::ScalarExprEvaluator::Open(std::vector<impala::ScalarExprEvaluator*, 
std::allocator<impala::ScalarExprEvaluator*> > const&, impala::RuntimeState*) 
/impala/Impala/be/src/exprs/scalar-expr-evaluator.cc:160:42
    #8 0x3cf40bb in impala::UnionNode::Open(impala::RuntimeState*) 
/impala/Impala/be/src/exec/union-node.cc:176:5
    #9 0x2edfac8 in impala::FragmentInstanceState::Open() 
/impala/Impala/be/src/runtime/fragment-instance-state.cc:426:5
    #10 0x2edc4f5 in impala::FragmentInstanceState::Exec() 
/impala/Impala/be/src/runtime/fragment-instance-state.cc:95:12
    #11 0x2dace0e in 
impala::QueryState::ExecFInstance(impala::FragmentInstanceState*) 
/impala/Impala/be/src/runtime/query-state.cc:1013:24
    #12 0x2cf07c6 in boost::function0<void>::operator()() const 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763:14
    #13 0x39bffef in 
impala::Thread::SuperviseThread(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&, boost::function<void ()> const&, impala::ThreadDebugInfo const*, 
impala::Promise<long, (impala::PromiseMode)0>*) 
/impala/Impala/be/src/util/thread.cc:360:3
    #14 0x39ccadb in boost::_bi::bind_t<void, void 
(*)(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&, boost::function<void ()> 
const&, impala::ThreadDebugInfo const*, impala::Promise<long, 
(impala::PromiseMode)0>*), 
boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > >, 
boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, 
boost::_bi::value<impala::ThreadDebugInfo*>, 
boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > 
>::operator()() 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
    #15 0x51dd596 in thread_proxy 
(/impala/Impala/be/build/debug/service/impalad+0x51dd596)

Thread T508 created by T507 here:
    #0 0x215f7e2 in __interceptor_pthread_create 
(/impala/Impala/be/build/debug/service/impalad+0x215f7e2)
    #1 0x51dc89d in boost::thread::start_thread_noexcept() 
(/impala/Impala/be/build/debug/service/impalad+0x51dc89d)
    #2 0x39c5086 in boost::thread::thread<void 
(*)(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&, boost::function<void ()> 
const&, impala::ThreadDebugInfo const*, impala::Promise<long, 
(impala::PromiseMode)0>*), std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> 
>, boost::function<void ()>, impala::ThreadDebugInfo*, impala::Promise<long, 
(impala::PromiseMode)0>*>(void (*)(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&, boost::function<void ()> const&, impala::ThreadDebugInfo const*, 
impala::Promise<long, (impala::PromiseMode)0>*), 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> 
>, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, boost::function<void ()>, impala::ThreadDebugInfo*, 
impala::Promise<long, (impala::PromiseMode)0>*) 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:424:13
    #3 0x39bf44d in 
impala::Thread::StartThread(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&, boost::function<void ()> const&, std::unique_ptr<impala::Thread, 
std::default_delete<impala::Thread> >*, bool) 
/impala/Impala/be/src/util/thread.cc:317:13
    #4 0x2dac1cb in impala::Status 
impala::Thread::Create<impala::QueryState::StartFInstances()::$_15>(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&, impala::QueryState::StartFInstances()::$_15 const&, 
std::unique_ptr<impala::Thread, std::default_delete<impala::Thread> >*, bool) 
/impala/Impala/be/src/util/thread.h:74:12
    #5 0x2dab307 in impala::QueryState::StartFInstances() 
/impala/Impala/be/src/runtime/query-state.cc:917:11
    #6 0x2d8c980 in 
impala::QueryExecMgr::ExecuteQueryHelper(impala::QueryState*) 
/impala/Impala/be/src/runtime/query-exec-mgr.cc:170:7
    #7 0x2d987eb in boost::_bi::bind_t<void, boost::_mfi::mf1<void, 
impala::QueryExecMgr, impala::QueryState*>, 
boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>, 
boost::_bi::value<impala::QueryState*> > >::operator()() 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
    #8 0x2cf07c6 in boost::function0<void>::operator()() const 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763:14
    #9 0x39bffef in 
impala::Thread::SuperviseThread(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&, boost::function<void ()> const&, impala::ThreadDebugInfo const*, 
impala::Promise<long, (impala::PromiseMode)0>*) 
/impala/Impala/be/src/util/thread.cc:360:3
    #10 0x39ccadb in boost::_bi::bind_t<void, void 
(*)(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&, boost::function<void ()> 
const&, impala::ThreadDebugInfo const*, impala::Promise<long, 
(impala::PromiseMode)0>*), 
boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > >, 
boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, 
boost::_bi::value<impala::ThreadDebugInfo*>, 
boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > 
>::operator()() 
/impala/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
    #11 0x51dd596 in thread_proxy 
(/impala/Impala/be/build/debug/service/impalad+0x51dd596)
{code}




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to