aboutsummaryrefslogtreecommitdiff
path: root/lldb/test/API/python_api
diff options
context:
space:
mode:
authorDavid Spickett <david.spickett@linaro.org>2023-12-20 09:37:15 +0000
committerDavid Spickett <david.spickett@linaro.org>2023-12-20 09:41:33 +0000
commitd14d52158bc444e2d036067305cf54aeea7c9edb (patch)
treede8f1f6ee25b0f117310746c3b3ac606681152ee /lldb/test/API/python_api
parent3ae5a9b67fb6372f1e0d3afa9dcc71aef29fdfca (diff)
downloadllvm-d14d52158bc444e2d036067305cf54aeea7c9edb.zip
llvm-d14d52158bc444e2d036067305cf54aeea7c9edb.tar.gz
llvm-d14d52158bc444e2d036067305cf54aeea7c9edb.tar.bz2
[lldb][test] Add extra logging for module cache test
And remove the workaround I was trying, as this logging may prove what the actual issue is. Which I think is that the thread plan map in Process is cleared before the threads are destroyed. So Thread::ShouldStop could be getting the current plan, then the plan map is cleared, then Thread::ShouldStop is deciding based on that plan to pop a plan from the now empty stack.
Diffstat (limited to 'lldb/test/API/python_api')
-rw-r--r--lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py b/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
index cc9da15..aacfb92 100644
--- a/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
+++ b/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
@@ -34,6 +34,10 @@ class GlobalModuleCacheTestCase(TestBase):
# The rerun tests indicate rerunning on Windows doesn't really work, so
# this one won't either.
@skipIfWindows
+ # On Arm and AArch64 Linux, this test attempts to pop a thread plan when
+ # we only have the base plan remaining. Skip it until we can figure out
+ # the bug this is exposing.
+ @skipIf(oslist=["linux"], archs=["arm", "aarch64"])
def test_OneTargetOneDebugger(self):
self.do_test(True, True)
@@ -50,6 +54,11 @@ class GlobalModuleCacheTestCase(TestBase):
self.do_test(True, False)
def do_test(self, one_target, one_debugger):
+ # Here to debug flakiness on Arm, remove later!
+ log_cmd_result = lldb.SBCommandReturnObject()
+ interp = self.dbg.GetCommandInterpreter()
+ interp.HandleCommand("log enable lldb step", log_cmd_result)
+
# Make sure that if we have one target, and we run, then
# change the binary and rerun, the binary (and any .o files
# if using dwarf in .o file debugging) get removed from the
@@ -100,13 +109,6 @@ class GlobalModuleCacheTestCase(TestBase):
self.old_debugger = self.dbg
self.dbg = new_debugger
def cleanupDebugger(self):
- # On Arm and AArch64 Linux, it is suspected that destroying
- # the debugger first causes lldb to try to pop from an empty
- # thread plan stack. Try to prove this by killing the process
- # first.
- for i in range(self.dbg.GetNumTargets()):
- self.dbg.GetTargetAtIndex(i).GetProcess().Kill()
-
lldb.SBDebugger.Destroy(self.dbg)
self.dbg = self.old_debugger
self.old_debugger = None