Hello team, I'd like to contribute to Impala and would like to start it with this (IMPALA-6296) jira. Can I please have it assigned to me?
My development environment is ready. I'm on ubuntu 16.04 so yes some challenges to set up the environment especially with the LD_LIBRARY_PATH issues. So far I'm able to work past it and might ask for another pair of eyes to ensure it follows standard. The builds are going fine and runs a bit longer as I've disabled the -so. Apart from setup, I'm was able to reproduce the issue and might have been ready with the fix which I'd like to discuss once I'm officially assigned the jira. Thanks Tim, for the instructions, it was very helpful. Thanks! Mansi On Tue, Dec 12, 2017 at 8:24 PM, Tim Armstrong <tarmstr...@cloudera.com> wrote: > If you'd like to contribute a patch to Impala, but aren't sure what > you want to work on, you can look at Impala's newbie issues: > https://issues.apache.org/jira/issues/?filter=12341668. You can find > detailed instructions on submitting patches at > https://cwiki.apache.org/confluence/display/IMPALA/Contributing+to+Impala. > This is a walkthrough of a ticket a new contributor could take on, > with hopefully enough detail to get you going but not so much to take > away the fun. > > How can we solve https://issues.apache.org/jira/browse/IMPALA-6296, > "DCheck in CodegenSymbolEmitter when --asm_module_dir is set on debug build > "? > First, make sure you have your development environment set up. Let's > see if we can reproduce the issue. > > Create a directory for the codegen modules then start impala-server > $ mkdir codegen-modules > $ start-impala-cluster.py --impalad_args="--opt_module_dir=codegen-modules > --unopt_module_dir=codegen-modules --asm_module_dir=codegen-modules" > > Now run a query through Impala. I chose this query because it uses Impala's > runtime code generation ("codegen") to improve performance > $ bin/impala-shell.sh -q "select count(*) from tpch.lineitem" > > After a few seconds, you should see an error from Impala crashing: > Error communicating with impalad: TSocket read 0 bytes > Could not execute command: select count(*) from tpch.lineitem > > Attempting to run any further queries will fail because of the crashed > Impala daemons: > $ impala-shell.sh -q "select count(*) from tpch.lineitem"; > Starting Impala Shell without Kerberos authentication > Error connecting: TTransportException, Could not connect to localhost:21000 > Not connected to Impala, could not execute queries. > > If you look at logs/cluster/impalad.ERROR you will see a message explaining > the crash - we hit a DCHECK (a.k.a. an assertion): > > F1212 17:10:07.642722 9138 codegen-symbol-emitter.cc:90] Check failed: > perf_map_.find(obj.getData().data()) != perf_map_.end() > *** Check failure stack trace: *** > @ 0x3be16ed google::LogMessage::Fail() > @ 0x3be2f92 google::LogMessage::SendToLog() > @ 0x3be10c7 google::LogMessage::Flush() > @ 0x3be468e google::LogMessageFatal::~LogMessageFatal() > @ 0x1b354f1 > impala::CodegenSymbolEmitter::NotifyFreeingObject() > @ 0x375b791 llvm::MCJIT::NotifyFreeingObject() > @ 0x375b811 llvm::MCJIT::~MCJIT() > @ 0x375bfc9 llvm::MCJIT::~MCJIT() > @ 0x1b265ba std::default_delete<>::operator()() > @ 0x1b23e21 std::unique_ptr<>::reset() > @ 0x1b11198 impala::LlvmCodeGen::Close() > @ 0x182194d impala::RuntimeState::ReleaseResources() > @ 0x1893a35 impala::FragmentInstanceState::Close() > @ 0x1890d58 impala::FragmentInstanceState::Exec() > @ 0x1879afa impala::QueryState::ExecFInstance() > @ 0x18783bc > _ZZN6impala10QueryState15StartFInstancesEvENKUlvE_clEv > @ 0x187a739 > _ZN5boost6detail8function26void_function_obj_ > invoker0IZN6impala10QueryState15StartFInstancesEvEUlvE_ > vE6invokeERNS1_15function_bufferE > @ 0x17c7200 boost::function0<>::operator()() > @ 0x1abdf8b impala::Thread::SuperviseThread() > @ 0x1ac6b16 boost::_bi::list4<>::operator()<>() > @ 0x1ac6a59 boost::_bi::bind_t<>::operator()() > @ 0x1ac6a1c boost::detail::thread_data<>::run() > @ 0x2d6b08a thread_proxy > @ 0x7fcb5ff146ba start_thread > @ 0x7fcb5fc4a3dd clone > > It looks like something is wrong with the code - 'perf_map_' doesn't have > anything in it. If we look a few lines above, it looks like 'perf_map_' is > only filled in if 'emit_perf_map_' is true. > > if (emit_perf_map_) { > lock_guard<SpinLock> perf_map_lock(perf_map_lock_); > DCHECK(perf_map_.find(obj.getData().data()) == perf_map_.end()); > perf_map_[obj.getData().data()] = std::move(perf_map_entries); > WritePerfMapLocked(); > } > > Maybe we should also be checking 'emit_perf_map_' before the DCHECK? > > After you have fixed this bug, you should be able to run the query without > Impala crashing and you should be able to inspect the assembly generated by > Impala in codegen-modules/*.asm > > Have fun, and don't be afraid to ask dev@impala.apache.org is you have > any questions! >