[lldb/Plugins] Fix ScriptedThread IndexID reporting
When listing all the Scripted Threads of a ScriptedProcess, we can see that all have the thread index set to 1. This is caused by the lldb_private::Thread constructor, which sets the m_index_id member using the provided thread id `tid`. Because the call to the super constructor is done before instantiating the `ScriptedThreadInterface`, lldb can't fetch the thread id from the script instance, so it uses `LLDB_INVALID_THREAD_ID` instead. To mitigate this, this patch takes advantage of the `ScriptedThread::Create` fallible constructor idiom to defer calling the `ScriptedThread` constructor (and the `Thread` super constructor with it), until we can fetch a valid thread id `tid` from the `ScriptedThreadInterface`. rdar://87432065 Differential Revision: https://reviews.llvm.org/D117076 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
This commit is contained in:
1 parent
cfa55bfe78
commit
45148bfe8a
5 files changed
+60
-44
No files matched your search
@@ -32,7 +32,7 @@ ScriptedThreadPythonInterface::ScriptedThreadPythonInterface(
|
||||
StructuredData::GenericSP ScriptedThreadPythonInterface::CreatePluginObject(
|
||||
const llvm::StringRef class_name, ExecutionContext &exe_ctx,
|
||||
StructuredData::DictionarySP args_sp, StructuredData::Generic *script_obj) {
|
||||
if (class_name.empty())
|
||||
if (class_name.empty() && !script_obj)
|
||||
return {};
|
||||
|
||||
ProcessSP process_sp = exe_ctx.GetProcessSP();
|
||||
|
||||
Reference in new issue
Block a user