[lldb] Track the API boundary using a thread_local variable.
The reproducers currently use a static variable to track the API boundary. This is obviously incorrect when the SB API is used concurrently. While I do not plan to support that use-case (right now), I do want to avoid us crashing. As a first step, correctly track API boundaries across multiple threads. Before this patch SB API calls made by the embedded script interpreter would be considered "behind the API boundary" and correctly ignored. After this patch, we need to tell the reproducers to ignore the scripting thread as a "private thread". Differential revision: https://reviews.llvm.org/D92811
This commit is contained in:
1 parent
fed7565ee2
commit
5861234e72
3 files changed
+8
-2
No files matched your search
@@ -33,6 +33,7 @@
|
||||
#include "lldb/Interpreter/CommandReturnObject.h"
|
||||
#include "lldb/Target/Thread.h"
|
||||
#include "lldb/Target/ThreadPlan.h"
|
||||
#include "lldb/Utility/ReproducerInstrumentation.h"
|
||||
#include "lldb/Utility/Timer.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
@@ -437,6 +438,7 @@ ScriptInterpreterPythonImpl::Locker::Locker(
|
||||
: ScriptInterpreterLocker(),
|
||||
m_teardown_session((on_leave & TearDownSession) == TearDownSession),
|
||||
m_python_interpreter(py_interpreter) {
|
||||
repro::Recorder::PrivateThread();
|
||||
DoAcquireLock();
|
||||
if ((on_entry & InitSession) == InitSession) {
|
||||
if (!DoInitSession(on_entry, in, out, err)) {
|
||||
|
||||
Reference in new issue
Block a user