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
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Although there's no way to exclude this via the type system (well... we could have a nonnull_shared_ptr<T>...), this really shouldn't ever happen. All of our Expected<unique/shared_ptr>-returning APIs assume that in the non-error case, the pointer object will be valid. At best, this deserves an assertion.