mbox series

[v2,0/8] oe-selftest: devtool ide-sdk: fix lldb connect race in _lldb_server_debugging_once

Message ID 20260809093629.3457107-1-adrian.freihofer@siemens.com
Headers show
Series oe-selftest: devtool ide-sdk: fix lldb connect race in _lldb_server_debugging_once | expand

Message

AdrianF Aug. 9, 2026, 9:35 a.m. UTC
From: Adrian Freihofer <adrian.freihofer@siemens.com>

The autobuilder intermittently failed the clang devtool ide-sdk selftest when
LLDB attempted to connect before lldb-server had started listening. The first
two commits prevent that race: generated LLDB MULTI tasks wait for the target
TCP listener before returning, and the selftest runs that startup task
synchronously before starting LLDB.

The remaining commits make the debugger lifecycle and its coverage more
robust. Centralize TCP polling, timeout cleanup, server naming,
readiness-marker generation, and shutdown handling in DebuggerCrossConfig.
GDB ONCE and ATTACH tasks emit a dedicated readiness marker and retain their
SSH connection for the debug session. Remove the unused LLDB one-shot start
path and reject unsupported LLDB modes explicitly.

Strengthen the devtool ide-sdk selftests to exercise these generated task
contracts rather than rely on timing or process-list probes. Use QEMU target
commands, wait for GDB's readiness marker, and normalize task-shell dollar
escaping before invoking SSH directly. Keep the C++ debugger test code
observable so breakpoint checks remain meaningful across toolchains and
rebuilds.

Changes from v1 to v2:
- Rather than making the connection-failure path more robust, v2 prevents the
  failure by waiting for lldb-server to become ready before connecting.
- Extend the same lifecycle synchronization and coverage to related debugger
  startup and shutdown paths.

Adrian Freihofer (8):
  devtool: ide-sdk: wait for lldb-server readiness
  oe-selftest: devtool ide-sdk: wait for lldb-server readiness
  devtool: ide-sdk: synchronize debugger server readiness
  oe-selftest: devtool ide-sdk: wait for gdbserver readiness
  devtool: ide-sdk: wait for debugger server shutdown
  oe-selftest: devtool ide-sdk: verify debugger shutdown
  oe-selftest: devtool: use QEMU target commands
  cpp-example: prevent compiler from eliminating debugger test code

 .../cpp/files/cpp-example-lib.hpp             |   6 +-
 .../recipes-test/cpp/files/cpp-example.cpp    |  10 +-
 meta/lib/oeqa/selftest/cases/devtool.py       | 222 +++++++++---------
 scripts/lib/devtool/ide_plugins/__init__.py   |  74 ++++--
 scripts/lib/devtool/ide_plugins/ide_code.py   |   7 +-
 scripts/lib/devtool/ide_plugins/ide_none.py   |  17 +-
 6 files changed, 193 insertions(+), 143 deletions(-)