[Lldb-commits] [PATCH] D134037: [lldb] Fix CommandInterpreter::DidProcessStopAbnormally() with multiple threads
Martin Storsjö via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Sep 16 13:31:23 PDT 2022
mstorsjo updated this revision to Diff 460880.
mstorsjo added a comment.
Added a testcase. I'm not sure if this is the most accurate/correct place for the test, but the name is at least verbose enough to describe what it exercises.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134037/new/
https://reviews.llvm.org/D134037
Files:
lldb/source/Interpreter/CommandInterpreter.cpp
lldb/test/Shell/Driver/CommandOnCrashMultiThreaded.test
lldb/test/Shell/Driver/Inputs/CommandOnCrashMultiThreaded.cpp
Index: lldb/test/Shell/Driver/Inputs/CommandOnCrashMultiThreaded.cpp
===================================================================
--- /dev/null
+++ lldb/test/Shell/Driver/Inputs/CommandOnCrashMultiThreaded.cpp
@@ -0,0 +1,13 @@
+#include <thread>
+
+void t_func() {
+ asm volatile(
+ "int3\n\t"
+ );
+}
+
+int main() {
+ std::thread t(t_func);
+ t.join();
+ return 0;
+}
Index: lldb/test/Shell/Driver/CommandOnCrashMultiThreaded.test
===================================================================
--- /dev/null
+++ lldb/test/Shell/Driver/CommandOnCrashMultiThreaded.test
@@ -0,0 +1,6 @@
+# XFAIL: system-windows
+# REQUIRES: native && (target-x86 || target-x86_64)
+# RUN: %clangxx_host %p/Inputs/CommandOnCrashMultiThreaded.cpp -o %t -pthread
+# RUN: %lldb -b -o "process launch" -k "process continue" -k "exit" %t | FileCheck %s
+
+# CHECK: Process {{[0-9]+}} exited with status = 0
Index: lldb/source/Interpreter/CommandInterpreter.cpp
===================================================================
--- lldb/source/Interpreter/CommandInterpreter.cpp
+++ lldb/source/Interpreter/CommandInterpreter.cpp
@@ -2441,7 +2441,7 @@
for (const auto &thread_sp : process_sp->GetThreadList().Threads()) {
StopInfoSP stop_info = thread_sp->GetStopInfo();
if (!stop_info)
- return false;
+ continue;
const StopReason reason = stop_info->GetStopReason();
if (reason == eStopReasonException ||
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134037.460880.patch
Type: text/x-patch
Size: 1440 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220916/873e251f/attachment-0001.bin>
More information about the lldb-commits
mailing list