Skip to content

Commit 1423137

Browse files
committed
Reland "[lldb][target] Add progress report for wait-attaching to process" (llvm#144810)
This relands commit e0933ab. The original commit was causing the test TestCreateAfterAttach.py to fail on ARM Ubuntu bots. It's possible that this could've been happening because the test for wait-attach progress reporting is waiting on a process named "a.out" which could be too generic as multiple other tests (when run in parallel on the bots) could also be using processes named "a.out". This commit changes the wait-attach progress report test to wait on a unique process name. Original PR description: This commit adds a progress report when wait-attaching to a process as well as a test for this. Original PR link: llvm#144768
1 parent b5d5708 commit 1423137

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

lldb/source/Target/Target.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3546,6 +3546,7 @@ llvm::Expected<TraceSP> Target::GetTraceOrCreate() {
35463546
}
35473547

35483548
Status Target::Attach(ProcessAttachInfo &attach_info, Stream *stream) {
3549+
Progress attach_progress("Waiting to attach to process");
35493550
m_stats.SetLaunchOrAttachTime();
35503551
auto state = eStateInvalid;
35513552
auto process_sp = GetProcessSP();

lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Test that we are able to broadcast and receive progress events from lldb
33
"""
44
import lldb
5+
import threading
56

67
import lldbsuite.test.lldbutil as lldbutil
78

@@ -16,6 +17,39 @@ def setUp(self):
1617
self.broadcaster, lldb.SBDebugger.eBroadcastBitProgress
1718
)
1819

20+
def test_wait_attach_progress_reporting(self):
21+
"""Test that progress reports for wait attaching work as intended."""
22+
self.build()
23+
target = self.dbg.CreateTarget(None)
24+
25+
# Wait attach to a process, then check to see that a progress report was created
26+
# and that its message is correct for waiting to attach to a process.
27+
class AttachThread(threading.Thread):
28+
def __init__(self, target):
29+
threading.Thread.__init__(self)
30+
self.target = target
31+
32+
def run(self):
33+
self.target.AttachToProcessWithName(
34+
lldb.SBListener(),
35+
"wait-attach-progress-report",
36+
True,
37+
lldb.SBError(),
38+
)
39+
40+
thread = AttachThread(target)
41+
thread.start()
42+
43+
event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
44+
progress_data = lldb.SBDebugger.GetProgressDataFromEvent(event)
45+
message = progress_data.GetValueForKey("message").GetStringValue(100)
46+
self.assertEqual(message, "Waiting to attach to process")
47+
48+
# Interrupt the process attach to keep the test from stalling.
49+
target.process.SendAsyncInterrupt()
50+
51+
thread.join()
52+
1953
def test_dwarf_symbol_loading_progress_report(self):
2054
"""Test that we are able to fetch dwarf symbol loading progress events"""
2155
self.build()

0 commit comments

Comments
 (0)