labath added a comment. I think it'd be better to commit this in two patches after all. The first one could include the server bits (and the multiprocess+ server thingy) -- I believe this is good to go already. The second patch/review could deal with the thread/process id business on the client (and finally enable multiprocess+ client-side).
================ Comment at: lldb/include/lldb/Utility/StringExtractorGDBRemote.h:197 + static constexpr lldb::pid_t AllProcesses = UINT64_MAX; + static constexpr lldb::tid_t AllThreads = UINT64_MAX; + ---------------- These also need a definition in the .cpp file (debug builds fail without that). ================ Comment at: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp:741 if (response.GetChar() == 'C') { - m_curr_pid = response.GetHexMaxU32(false, LLDB_INVALID_PROCESS_ID); + m_curr_pid = response.GetHexMaxU64(false, LLDB_INVALID_PROCESS_ID); if (m_curr_pid != LLDB_INVALID_PROCESS_ID) { ---------------- mgorny wrote: > I've noticed a few places where we take U32 instead of U64, so fixed that as > well. Maybe just commit that separately (no review needed). ================ Comment at: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp:2795 std::vector<lldb::tid_t> &thread_ids, bool &sequence_mutex_unavailable) { + // lldb::pid_t pid = GetCurrentProcessID(); + lldb::pid_t pid = 0; ---------------- mgorny wrote: > @labath, any clue if we could make this work some other way? Calling > `GetCurrentProcessID()` causes a crash for some tests here: > > ``` > Fatal Python error: Segmentation fault > > Thread 0x00007f918d203640 (most recent call first): > File > "/home/mgorny/git/llvm-project/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py", > line 470 in _handlePacket > File > "/home/mgorny/git/llvm-project/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py", > line 380 in _receive > File > "/home/mgorny/git/llvm-project/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py", > line 364 in _run > File "/usr/lib/python3.10/threading.py", line 910 in run > File "/usr/lib/python3.10/threading.py", line 972 in _bootstrap_inner > File "/usr/lib/python3.10/threading.py", line 930 in _bootstrap > > Current thread 0x00007f9196327740 (most recent call first): > File > "/home/mgorny/git/llvm-project/build.gentoo/lib/python3.10/site-packages/lldb/__init__.py", > line 10250 in ConnectRemote > File > "/home/mgorny/git/llvm-project/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py", > line 526 in connect > File > "/home/mgorny/git/llvm-project/lldb/test/API/functionalities/gdb_remote_client/TestRecognizeBreakpoint.py", > line 103 in test > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/case.py", > line 413 in runMethod > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/case.py", > line 383 in run > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/case.py", > line 458 in __call__ > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/suite.py", > line 117 in _wrapped_run > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/suite.py", > line 115 in _wrapped_run > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/suite.py", > line 85 in run > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/suite.py", > line 66 in __call__ > File > "/home/mgorny/git/llvm-project/lldb/third_party/Python/module/unittest2/unittest2/runner.py", > line 165 in run > File > "/home/mgorny/git/llvm-project/lldb/packages/Python/lldbsuite/test/dotest.py", > line 997 in run_suite > File "/home/mgorny/git/llvm-project/lldb/test/API/dotest.py", line 7 in > <module> > > Extension modules: lldb._lldb (total: 1) > ``` This backtrace is useless, as it only shows python threads (and the crash happens in a native one), but if you run the test in a debugger, the problem becomes obvious -- mutual recursion between `GetCurrentThreadIDs` and `GetCurrentProcessID`. To fix that, we need to break it. I'd probably to in by creating a new function, which implements the core of q[fs]ThreadInfo functionality (for instance, it could return something like (`vector<pair<pid, tid>>` with INVALID_PID for unknown), and then call it from both of these functions to do their thing. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D98482/new/ https://reviews.llvm.org/D98482 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits