forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dev/wwolff/sanitize 20240305 #78
Merged
Merged
Commits on Mar 8, 2024
-
dpu: llvm: lldb: DpuContext: fix initialization ordering
A DpuContext, wrapper of backends's `struct dpu_context_t` is constructed for every LLDB Dpu instance. These instances cover a full rank. Currently, a DpuContext instance is partialialy initialize at the first StopThreads call (i.e. when LLDB stop threads for investigation) on which Dpu is currently allocated. When LLDB resume threads with ResumeThreads call, it tries to resume threads from all LLDB::Dpu instance. Though, this does not correspond to the number of requested Dpus. Hence, LLDB manipulates unitialized object. This commit fixes those report from `valgrind`: ``` ==17528== Conditional jump or move depends on uninitialised value(s) ==17528== at 0x182A1E: lldb_private::dpu::DpuContext::ContextReadyForResumeOrStep() (DpuContext.cpp:153) ==17528== by 0x180C68: lldb_private::dpu::Dpu::ResumeThreads(llvm::SmallVector<unsigned int, 8u>*, bool) (Dpu.cpp:295) ==17528== by 0x18069C: lldb_private::dpu::DpuRank::ResumeDpus() (DpuRank.cpp:125) ==17528== by 0x17DDEB: lldb_private::process_dpu::ProcessDpu::Detach() (ProcessDpu.cpp:460) ==17528== by 0x17D339: lldb_private::process_dpu::ProcessDpu::Kill() (ProcessDpu.cpp:512) ==17528== by 0x1A8E70: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::Handle_k(StringExtractorGDBRemote&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A904D: std::_Function_handler<lldb_private::process_gdb_remote::GDBRemoteCommunication::PacketResult (StringExtractorGDBRemote&, lldb_private::Status&, bool&, bool&), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::RegisterPacketHandlers()::{lambda(StringExtractorGDBRemote, lldb_private::Status&, bool&, bool&)#1}>::_M_invoke(std::_Any_data const&, StringExtractorGDBRemote&, lldb_priv ate::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x19839D: lldb_private::process_gdb_remote::GDBRemoteCommunicationServer::GetPacketAndSendResponse(lldb_private::Timeout<std::ratio<1l, 1000000l> >, lldb_private::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A8A74: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::DataAvailableCallback() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1597DE: lldb_private::MainLoop::ProcessReadObject(int) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1598A3: lldb_private::MainLoop::RunImpl::ProcessEvents() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x159CCF: lldb_private::MainLoop::Run() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== ==17528== Conditional jump or move depends on uninitialised value(s) ==17528== at 0x180C6F: lldb_private::dpu::Dpu::ResumeThreads(llvm::SmallVector<unsigned int, 8u>*, bool) (Dpu.cpp:295) ==17528== by 0x18069C: lldb_private::dpu::DpuRank::ResumeDpus() (DpuRank.cpp:125) ==17528== by 0x17DDEB: lldb_private::process_dpu::ProcessDpu::Detach() (ProcessDpu.cpp:460) ==17528== by 0x17D339: lldb_private::process_dpu::ProcessDpu::Kill() (ProcessDpu.cpp:512) ==17528== by 0x1A8E70: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::Handle_k(StringExtractorGDBRemote&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A904D: std::_Function_handler<lldb_private::process_gdb_remote::GDBRemoteCommunication::PacketResult (StringExtractorGDBRemote&, lldb_private::Status&, bool&, bool&), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::RegisterPacketHandlers()::{lambda(StringExtractorGDBRemote, lldb_private::Status&, bool&, bool&)#1}>::_M_invoke(std::_Any_data const&, StringExtractorGDBRemote&, lldb_priv ate::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x19839D: lldb_private::process_gdb_remote::GDBRemoteCommunicationServer::GetPacketAndSendResponse(lldb_private::Timeout<std::ratio<1l, 1000000l> >, lldb_private::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A8A74: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::DataAvailableCallback() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1597DE: lldb_private::MainLoop::ProcessReadObject(int) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1598A3: lldb_private::MainLoop::RunImpl::ProcessEvents() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x159CCF: lldb_private::MainLoop::Run() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x14C220: main_gdbserver(int, char**) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== ==17528== Conditional jump or move depends on uninitialised value(s) ==17528== at 0x489E135: ci_debug_teardown_dpu (ufi_debug.c:443) ==17528== by 0x488B339: dpu_finalize_fault_process_for_dpu (dpu_debug.c:120) ==17528== by 0x182C1C: lldb_private::dpu::DpuContext::ResumeThreads(llvm::SmallVector<unsigned int, 8u>*) (DpuContext.cpp:120) ==17528== by 0x180C9B: lldb_private::dpu::Dpu::ResumeThreads(llvm::SmallVector<unsigned int, 8u>*, bool) (Dpu.cpp:308) ==17528== by 0x18069C: lldb_private::dpu::DpuRank::ResumeDpus() (DpuRank.cpp:125) ==17528== by 0x17DDEB: lldb_private::process_dpu::ProcessDpu::Detach() (ProcessDpu.cpp:460) ==17528== by 0x17D339: lldb_private::process_dpu::ProcessDpu::Kill() (ProcessDpu.cpp:512) ==17528== by 0x1A8E70: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::Handle_k(StringExtractorGDBRemote&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A904D: std::_Function_handler<lldb_private::process_gdb_remote::GDBRemoteCommunication::PacketResult (StringExtractorGDBRemote&, lldb_private::Status&, bool&, bool&), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::RegisterPacketHandlers()::{lambda(StringExtractorGDBRemote, lldb_private::Status&, bool&, bool&)#1}>::_M_invoke(std::_Any_data const&, StringExtractorGDBRemote&, lldb_priv ate::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x19839D: lldb_private::process_gdb_remote::GDBRemoteCommunicationServer::GetPacketAndSendResponse(lldb_private::Timeout<std::ratio<1l, 1000000l> >, lldb_private::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A8A74: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::DataAvailableCallback() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1597DE: lldb_private::MainLoop::ProcessReadObject(int) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== ==17528== Conditional jump or move depends on uninitialised value(s) ==17528== at 0x489E140: ci_debug_teardown_dpu (ufi_debug.c:443) ==17528== by 0x488B339: dpu_finalize_fault_process_for_dpu (dpu_debug.c:120) ==17528== by 0x182C1C: lldb_private::dpu::DpuContext::ResumeThreads(llvm::SmallVector<unsigned int, 8u>*) (DpuContext.cpp:120) ==17528== by 0x180C9B: lldb_private::dpu::Dpu::ResumeThreads(llvm::SmallVector<unsigned int, 8u>*, bool) (Dpu.cpp:308) ==17528== by 0x18069C: lldb_private::dpu::DpuRank::ResumeDpus() (DpuRank.cpp:125) ==17528== by 0x17DDEB: lldb_private::process_dpu::ProcessDpu::Detach() (ProcessDpu.cpp:460) ==17528== by 0x17D339: lldb_private::process_dpu::ProcessDpu::Kill() (ProcessDpu.cpp:512) ==17528== by 0x1A8E70: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::Handle_k(StringExtractorGDBRemote&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A904D: std::_Function_handler<lldb_private::process_gdb_remote::GDBRemoteCommunication::PacketResult (StringExtractorGDBRemote&, lldb_private::Status&, bool&, bool&), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::RegisterPacketHandlers()::{lambda(StringExtractorGDBRemote, lldb_private::Status&, bool&, bool&)#1}>::_M_invoke(std::_Any_data const&, StringExtractorGDBRemote&, lldb_priv ate::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x19839D: lldb_private::process_gdb_remote::GDBRemoteCommunicationServer::GetPacketAndSendResponse(lldb_private::Timeout<std::ratio<1l, 1000000l> >, lldb_private::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A8A74: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::DataAvailableCallback() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1597DE: lldb_private::MainLoop::ProcessReadObject(int) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== ```
Configuration menu - View commit details
-
Copy full SHA for 846fa24 - Browse repository at this point
Copy the full SHA 846fa24View commit details -
dpu: llvm: lldb: Dpu: fix type mismatch
In internal API, a {bkp, mem, dma}_fault_thread_index are declared as `dpu_thread_t` a.k.a `uint8_t`. In LLDB::Dpu::GetThreadState, shortcut variables are declared as `uint32_t`. This commit synchronize both to fix those report from `valgrind`: ``` ==17528== Conditional jump or move depends on uninitialised value(s) ==17528== at 0x182126: lldb_private::dpu::Dpu::GetThreadState(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, lldb::StopReason&, bool) (Dpu.cpp:785) ==17528== by 0x18024D: lldb_private::process_dpu::ThreadDpu::GetStopReason(lldb_private::ThreadStopInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (ThreadDpu.cpp:46) ==17528== by 0x1B1E6F: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::SendStopReplyPacketForThread(unsigned long) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1B3D10: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::SendStopReasonForState(lldb::StateType) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1B3E3C: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::HandleInferiorState_Stopped(lldb_private::NativeProcessProtocol*) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1B3F59: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::ProcessStateChanged(lldb_private::NativeProcessProtocol*, lldb::StateType) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x15E373: lldb_private::NativeProcessProtocol::SynchronouslyNotifyProcessStateChanged(lldb::StateType) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x15E8F9: lldb_private::NativeProcessProtocol::SetState(lldb::StateType, bool) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x17DA15: lldb_private::process_dpu::ProcessDpu::InterfaceTimerCallback() (ProcessDpu.cpp:366) ==17528== by 0x1597DE: lldb_private::MainLoop::ProcessReadObject(int) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1598A3: lldb_private::MainLoop::RunImpl::ProcessEvents() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x159CCF: lldb_private::MainLoop::Run() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== ==17528== Conditional jump or move depends on uninitialised value(s) ==17528== at 0x182126: lldb_private::dpu::Dpu::GetThreadState(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, lldb::StopReason&, bool) (Dpu.cpp:785) ==17528== by 0x18024D: lldb_private::process_dpu::ThreadDpu::GetStopReason(lldb_private::ThreadStopInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (ThreadDpu.cpp:46) ==17528== by 0x1B0599: GetJSONThreadsInfo(lldb_private::NativeProcessProtocol&, bool) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1B85C4: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::Handle_jThreadsInfo(StringExtractorGDBRemote&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A6E56: std::_Function_handler<lldb_private::process_gdb_remote::GDBRemoteCommunication::PacketResult (StringExtractorGDBRemote&, lldb_private::Status&, bool&, bool&), void lldb_private::process_gdb_remote::GDBRemoteCommunicationServerCommon::RegisterMemberFunctionHandler<lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS>(StringExtractorGDBRemote::ServerPacketType, lldb_private::process_ gdb_remote::GDBRemoteCommunication::PacketResult (lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::*)(StringExtractorGDBRemote&))::{lambda(StringExtractorGDBRemote, lldb_private::Status&, bool&, bool&)#1}>::_M_invoke(std::_Any_data const&, StringExtractorGDBRemote&, lldb_private::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x19839D: lldb_private::process_gdb_remote::GDBRemoteCommunicationServer::GetPacketAndSendResponse(lldb_private::Timeout<std::ratio<1l, 1000000l> >, lldb_private::Status&, bool&, bool&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1A8A74: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::DataAvailableCallback() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1597DE: lldb_private::MainLoop::ProcessReadObject(int) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1598A3: lldb_private::MainLoop::RunImpl::ProcessEvents() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x159CCF: lldb_private::MainLoop::Run() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x14C220: main_gdbserver(int, char**) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1473B2: main (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ```
Configuration menu - View commit details
-
Copy full SHA for f45d7b3 - Browse repository at this point
Copy the full SHA f45d7b3View commit details -
dpu: llvm: lldb: fix memory leak
The Dpu specifics d'tor wasn't or not well implemented. This commit fix those `valgrind` report: ``` ==17528== 288,802 (96 direct, 288,706 indirect) bytes in 1 blocks are definitely lost in loss record 187 of 187 ==17528== at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334) ==17528== by 0x17F451: lldb_private::process_dpu::ProcessDpu::Factory::Launch(lldb_private::ProcessLaunchInfo&, lldb_private::NativeProcessProtocol::NativeDelegate&, lldb_private::MainLoop&) const (ProcessDpu.cpp:103) ==17528== by 0x1AA7B9: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::LaunchProcess() (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x149271: handle_launch(lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS&, llvm::ArrayRef<llvm::StringRef>) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x14C19D: main_gdbserver(int, char**) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==17528== by 0x1473B2: main (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ``` or ``` ==32349== 280,107 (96 direct, 280,011 indirect) bytes in 1 blocks are definitely lost in loss record 149 of 149 ==32349== at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334) ==32349== by 0x17F72B: lldb_private::process_dpu::ProcessDpu::Factory::Attach(unsigned long, lldb_private::NativeProcessProtocol::NativeDelegate&, lldb_private::MainLoop&) const (ProcessDpu.cpp:202) ==32349== by 0x1AA199: lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::AttachToProcess(unsigned long) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==32349== by 0x148FA9: handle_attach_to_pid(lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS&, unsigned long) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==32349== by 0x14906A: handle_attach(lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==32349== by 0x14C65B: main_gdbserver(int, char**) (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ==32349== by 0x1473B2: main (in /scratch/wwolff/dpu_tools_rework_testsuite/bin/lldb-server-dpu) ```
Configuration menu - View commit details
-
Copy full SHA for 8fa4b24 - Browse repository at this point
Copy the full SHA 8fa4b24View commit details
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.