diff options
| author | Florian Mayer <fmayer@google.com> | 2024-08-07 14:00:46 -0700 |
|---|---|---|
| committer | Florian Mayer <fmayer@google.com> | 2024-08-07 14:00:46 -0700 |
| commit | 6eae899f9ddda73a6e15c21c08e3e87ddea95b9d (patch) | |
| tree | 2bed79061b5c434c4e3a0778101f1dede804c976 /lldb/source/Target/Thread.cpp | |
| parent | 5e8cc899c3fbf6c6ab5af3885c9bfda5ecbdcbb4 (diff) | |
| parent | a8f125feaf9720915d570bf957611775fc1b8bf5 (diff) | |
Created using spr 1.3.4
Diffstat (limited to 'lldb/source/Target/Thread.cpp')
| -rw-r--r-- | lldb/source/Target/Thread.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index a62074b9a3ea..74d1a268c6df 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -143,6 +143,12 @@ uint64_t ThreadProperties::GetMaxBacktraceDepth() const { idx, g_thread_properties[idx].default_uint_value); } +uint64_t ThreadProperties::GetSingleThreadPlanTimeout() const { + const uint32_t idx = ePropertySingleThreadPlanTimeout; + return GetPropertyAtIndexAs<uint64_t>( + idx, g_thread_properties[idx].default_uint_value); +} + // Thread Event Data llvm::StringRef Thread::ThreadEventData::GetFlavorString() { @@ -813,12 +819,17 @@ bool Thread::ShouldStop(Event *event_ptr) { // decide whether they still need to do more work. bool done_processing_current_plan = false; - if (!current_plan->PlanExplainsStop(event_ptr)) { if (current_plan->TracerExplainsStop()) { done_processing_current_plan = true; should_stop = false; } else { + // Leaf plan that does not explain the stop should be popped. + // The plan should be push itself later again before resuming to stay + // as leaf. + if (current_plan->IsLeafPlan()) + PopPlan(); + // If the current plan doesn't explain the stop, then find one that does // and let it handle the situation. ThreadPlan *plan_ptr = current_plan; @@ -1715,6 +1726,8 @@ std::string Thread::StopReasonAsString(lldb::StopReason reason) { return "instrumentation break"; case eStopReasonProcessorTrace: return "processor trace"; + case eStopReasonInterrupt: + return "async interrupt"; } return "StopReason = " + std::to_string(reason); |
