kevinwkt wrote: 👋 Looks like the recent changes introduced a memory leak that makes asan very unhappy when running the test suite:
A bunch of tests (e.g., target_tests, expression_tests) are failing during teardown with: ```SUMMARY: AddressSanitizer: 112 byte(s) leaked in 1 allocation(s). PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug. Direct leak of 112 byte(s) in 1 object(s) allocated from: #0 0x563965aa2c9d in operator new(unsigned long) compiler-rt/lib/asan/asan_new_delete.cpp:109:35 #1 0x7f517888ade5 in lldb_private::Process::PrivateStateThread::PrivateStateThread(...) lldb/include/lldb/Target/Process.h:3210:5 #2 0x7f5178889dcf in lldb_private::Process::Process(...) lldb/source/Target/Process.cpp:446:42 #3 0x7f517afdeca1 in std::make_shared<DummyProcess>(...)/libcxx/include/__memory/shared_ptr.h:690:10 ``` Could you take a look? 🙏 It's pointing to the initial construction inside the Process::Process member initializer list: ``` Process::Process(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp, const UnixSignalsSP &unix_signals_sp) : ProcessProperties(this), // ... m_current_private_state_thread(new PrivateStateThread( <<<<<<< ASAN points here *this, eStateUnloaded, eStateUnloaded, false, "rename-this-thread")), // ... ``` I believe it's most likely because Process::~Process() deletes or clears out its other members, but it is completely missing a delete m_current_private_state_thread; to pair with this raw pointer allocation. So any time a `Process` instance completes its lifecycle (particularly prominent in unit tests spinning up mock targets/processes), it leaves an orphaned `PrivateStateThread` behind, but that's just my theory. https://github.com/llvm/llvm-project/pull/179799 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
