Skip to content

Commit abc87f3

Browse files
author
kendal
committed
Fix flake in TestZerothFrame.py
This test is relying on the order of `process.threads` which is nondeterministic. By selecting the thread based on whether it is stopped at our breakpoint we can reliably select the correct one.
1 parent 0c56fd0 commit abc87f3

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

lldb/test/API/functionalities/unwind/zeroth_frame/TestZerothFrame.py

+12-14
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,27 @@ def test(self):
4040
target = self.dbg.CreateTarget(exe)
4141
self.assertTrue(target, VALID_TARGET)
4242

43-
bp1_line = line_number("main.c", "// Set breakpoint 1 here")
44-
bp2_line = line_number("main.c", "// Set breakpoint 2 here")
45-
46-
lldbutil.run_break_set_by_file_and_line(
47-
self, "main.c", bp1_line, num_expected_locations=1
48-
)
49-
lldbutil.run_break_set_by_file_and_line(
50-
self, "main.c", bp2_line, num_expected_locations=1
51-
)
43+
main_dot_c = lldb.SBFileSpec("main.c")
44+
bp1 = target.BreakpointCreateBySourceRegex("// Set breakpoint 1 here", main_dot_c)
45+
bp2 = target.BreakpointCreateBySourceRegex("// Set breakpoint 2 here", main_dot_c)
5246

5347
process = target.LaunchSimple(None, None, self.get_process_working_directory())
5448
self.assertTrue(process, VALID_PROCESS)
5549

56-
thread = process.GetThreadAtIndex(0)
50+
# Get the thread executing a.out.
51+
threads = lldbutil.get_threads_stopped_at_breakpoint(process, bp1)
52+
self.assertEqual(len(threads), 1)
53+
thread = threads[0]
54+
5755
if self.TraceOn():
5856
print("Backtrace at the first breakpoint:")
5957
for f in thread.frames:
6058
print(f)
59+
6160
# Check that we have stopped at correct breakpoint.
6261
self.assertEqual(
63-
process.GetThreadAtIndex(0).frame[0].GetLineEntry().GetLine(),
64-
bp1_line,
62+
thread.frame[0].GetLineEntry().GetLine(),
63+
bp1.GetLocationAtIndex(0).GetAddress().GetLineEntry().GetLine(),
6564
"LLDB reported incorrect line number.",
6665
)
6766

@@ -70,15 +69,14 @@ def test(self):
7069
# 'continue' command.
7170
process.Continue()
7271

73-
thread = process.GetThreadAtIndex(0)
7472
if self.TraceOn():
7573
print("Backtrace at the second breakpoint:")
7674
for f in thread.frames:
7775
print(f)
7876
# Check that we have stopped at the breakpoint
7977
self.assertEqual(
8078
thread.frame[0].GetLineEntry().GetLine(),
81-
bp2_line,
79+
bp2.GetLocationAtIndex(0).GetAddress().GetLineEntry().GetLine(),
8280
"LLDB reported incorrect line number.",
8381
)
8482
# Double-check with GetPCAddress()

0 commit comments

Comments
 (0)