Jim Apple has posted comments on this change. Change subject: IMPALA-5031: remove undefined behavior: call to strncmp with nullptr ......................................................................
Patch Set 1: (1 comment) http://gerrit.cloudera.org:8080/#/c/6767/1/be/src/runtime/string-value.inline.h File be/src/runtime/string-value.inline.h: Line 59: const int result = len > 0 ? strncmp(s1, s2, len) : 0; Example backtrace: /home/ubuntu/Impala/be/src/runtime/string-value.inline.h:60:24: runtime error: null pointer passed as argument 1, which is declared to never be null /usr/include/string.h:148:58: note: nonnull attribute specified here #0 0x7f72c79c6b6b in impala::StringCompare(char const*, int, char const*, int, int) /home/ubuntu/Impala/be/src/runtime/string-value.inline.h:60:16 #1 0x7f72c79c9dba in impala::StringValue::Eq(impala::StringValue const&) const /home/ubuntu/Impala/be/src/runtime/string-value.inline.h:82:10 #2 0x7f72c33268a9 in impala::RawValue::Eq(void const*, void const*, impala::ColumnType const&) /home/ubuntu/Impala/be/src/runtime/raw-value.inline.h:71:14 #3 0x7f72c335f282 in bool impala::HashTableCtx::Equals<true>(impala::TupleRow const*, unsigned char const*, unsigned char const*) const /home/ubuntu/Impala/be/src/exec/hash-table.cc:228:10 #4 0x7f72c33623da in bool impala::HashTableCtx::Equals<true>(impala::TupleRow const*) const /home/ubuntu/Impala/be/src/exec/hash-table.h:454:12 #5 0x7f72c33623da in long impala::HashTable::Probe<true>(impala::HashTable::Bucket*, long, impala::HashTableCtx*, unsigned int, bool*) /home/ubuntu/Impala/be/src/exec/hash-table.inline.h:71 #6 0x7f72c3ad7beb in impala::HashTable::InsertInternal(impala::HashTableCtx*) /home/ubuntu/Impala/be/src/exec/hash-table.inline.h:100:24 #7 0x7f72c3ad7568 in impala::HashTable::Insert(impala::HashTableCtx*, impala::BufferedTupleStream::RowIdx const&, impala::TupleRow*) /home/ubuntu/Impala/be/src/exec/hash-table.inline.h:115:20 #8 0x7f72c3ad69f9 in impala::PhjBuilder::Partition::InsertBatch(impala::TPrefetchMode::type, impala::HashTableCtx*, impala::RowBatch*, std::vector<impala::BufferedTupleStream::RowIdx, std::allocator<impala::BufferedTupleStream::RowIdx> > const&) /home/ubuntu/Impala/be/src/exec/partitioned-hash-join-builder-ir.cc:102:35 #9 0x7f72c3aaa402 in impala::PhjBuilder::Partition::BuildHashTable(bool*) /home/ubuntu/Impala/be/src/exec/partitioned-hash-join-builder.cc:687:32 #10 0x7f72c3a9c158 in impala::PhjBuilder::BuildHashTablesAndPrepareProbeStreams() /home/ubuntu/Impala/be/src/exec/partitioned-hash-join-builder.cc:374:31 #11 0x7f72c3a98db4 in impala::PhjBuilder::FlushFinal(impala::RuntimeState*) /home/ubuntu/Impala/be/src/exec/partitioned-hash-join-builder.cc:222:29 #12 0x7f72c30dd627 in impala::Status impala::BlockingJoinNode::SendBuildInputToSink<true>(impala::RuntimeState*, impala::DataSink*) /home/ubuntu/Impala/be/src/exec/blocking-join-node.cc:294:31 #13 0x7f72c30d2fb8 in impala::BlockingJoinNode::ProcessBuildInputAsync(impala::RuntimeState*, impala::DataSink*, impala::Promise<impala::Status>*) /home/ubuntu/Impala/be/src/exec/blocking-join-node.cc:154:11 #14 0x7f72c30efaa2 in boost::_mfi::mf3<void, impala::BlockingJoinNode, impala::RuntimeState*, impala::DataSink*, impala::Promise<impala::Status>*>::operator()(impala::BlockingJoinNode*, impala::RuntimeState*, impala::DataSink*, impala::Promise<impala::Status>*) const /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/bind/mem_fn_template.hpp:393:16 #15 0x7f72c30ef8ee in void boost::_bi::list4<boost::_bi::value<impala::BlockingJoinNode*>, boost::_bi::value<impala::RuntimeState*>, boost::_bi::value<impala::DataSink*>, boost::_bi::value<impala::Promise<impala::Status>*> >::operator()<boost::_mfi::mf3<void, impala::BlockingJoinNode, impala::RuntimeState*, impala::DataSink*, impala::Promise<impala::Status>*>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf3<void, impala::BlockingJoinNode, impala::RuntimeState*, impala::DataSink*, impala::Promise<impala::Status>*>&, boost::_bi::list0&, int) /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/bind/bind.hpp:457:9 #16 0x7f72c30ef27b in boost::_bi::bind_t<void, boost::_mfi::mf3<void, impala::BlockingJoinNode, impala::RuntimeState*, impala::DataSink*, impala::Promise<impala::Status>*>, boost::_bi::list4<boost::_bi::value<impala::BlockingJoinNode*>, boost::_bi::value<impala::RuntimeState*>, boost::_bi::value<impala::DataSink*>, boost::_bi::value<impala::Promise<impala::Status>*> > >::operator()() /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/bind/bind_template.hpp:20:16 #17 0x7f72c30ee649 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf3<void, impala::BlockingJoinNode, impala::RuntimeState*, impala::DataSink*, impala::Promise<impala::Status>*>, boost::_bi::list4<boost::_bi::value<impala::BlockingJoinNode*>, boost::_bi::value<impala::RuntimeState*>, boost::_bi::value<impala::DataSink*>, boost::_bi::value<impala::Promise<impala::Status>*> > >, void>::invoke(boost::detail::function::function_buffer&) /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/function/function_template.hpp:153:11 #18 0x7f72c798cdd4 in boost::function0<void>::operator()() const /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/function/function_template.hpp:766:14 #19 0x7f72c797df10 in impala::Thread::SuperviseThread(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*) /home/ubuntu/Impala/be/src/util/thread.cc:325:3 #20 0x7f72c79a5f83 in void boost::_bi::list4<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::Promise<long>*> >::operator()<void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list0&, int) /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/bind/bind.hpp:457:9 #21 0x7f72c79a58ab in boost::_bi::bind_t<void, void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list4<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::Promise<long>*> > >::operator()() /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/bind/bind_template.hpp:20:16 #22 0x7f72c79a42f5 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list4<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::Promise<long>*> > > >::run() /home/ubuntu/Impala/toolchain/boost-1.57.0-p1/include/boost/thread/detail/thread.hpp:116:17 #23 0xa4d0b9 in thread_proxy (/home/ubuntu/Impala/be/build/debug/service/impalad+0xa4d0b9) #24 0x7f72b83fe183 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8183) #25 0x7f72b812b37c in clone (/lib/x86_64-linux-gnu/libc.so.6+0xfa37c) -- To view, visit http://gerrit.cloudera.org:8080/6767 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id563e81720a0a4847664fa2828ecfdcad870da5b Gerrit-PatchSet: 1 Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-Owner: Jim Apple <[email protected]> Gerrit-Reviewer: Jim Apple <[email protected]> Gerrit-HasComments: Yes
