Skip to content

[lldb] Add PlatformWebInspectorWasm#188751

Merged
JDevlieghere merged 2 commits intollvm:mainfrom
JDevlieghere:wasm-platform
Mar 27, 2026
Merged

[lldb] Add PlatformWebInspectorWasm#188751
JDevlieghere merged 2 commits intollvm:mainfrom
JDevlieghere:wasm-platform

Conversation

@JDevlieghere
Copy link
Copy Markdown
Member

@JDevlieghere JDevlieghere commented Mar 26, 2026

Add a new PlatformWebInspectorWasm, which is a Wasm platform that automatically connects to the WebInspector platform server.

The existing "wasm" platform handles WebAssembly generally and allows you to configure a runtime to launch under. The "webinspector-wasm" platform does the inverse, and only supports attaching to an already running WebAssembly instance in Safari. The workflow here is always platform process list followed by platform process attach. This explains why you can only force create this platform and it's never automatically selected when loading a Wasm target.

Add a new PlatformWebInspectorWasm, which is a Wasm platform that
automatically connects to the WebInspector platform server.
@llvmbot
Copy link
Copy Markdown
Member

llvmbot commented Mar 26, 2026

@llvm/pr-subscribers-lldb

Author: Jonas Devlieghere (JDevlieghere)

Changes

Add a new PlatformWebInspectorWasm, which is a Wasm platform that automatically connects to the WebInspector platform server.


Full diff: https://github.com/llvm/llvm-project/pull/188751.diff

5 Files Affected:

  • (modified) lldb/source/Plugins/Platform/WebAssembly/CMakeLists.txt (+1)
  • (modified) lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp (+17-17)
  • (modified) lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.h (+11-2)
  • (added) lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.cpp (+177)
  • (added) lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.h (+58)
diff --git a/lldb/source/Plugins/Platform/WebAssembly/CMakeLists.txt b/lldb/source/Plugins/Platform/WebAssembly/CMakeLists.txt
index e049937dffd47..3149189cbe32c 100644
--- a/lldb/source/Plugins/Platform/WebAssembly/CMakeLists.txt
+++ b/lldb/source/Plugins/Platform/WebAssembly/CMakeLists.txt
@@ -9,6 +9,7 @@ lldb_tablegen(PlatformWasmPropertiesEnum.inc -gen-lldb-property-enum-defs
 add_lldb_library(lldbPluginPlatformWasm PLUGIN
   PlatformWasm.cpp
   PlatformWasmRemoteGDBServer.cpp
+  PlatformWebInspectorWasm.cpp
 
   LINK_LIBS
     lldbCore
diff --git a/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp b/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
index bcc71f83a017d..c9af2551281e9 100644
--- a/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
+++ b/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
@@ -8,6 +8,7 @@
 
 #include "Plugins/Platform/WebAssembly/PlatformWasm.h"
 #include "Plugins/Platform/WebAssembly/PlatformWasmRemoteGDBServer.h"
+#include "Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.h"
 #include "Plugins/Process/wasm/ProcessWasm.h"
 #include "lldb/Core/PluginManager.h"
 #include "lldb/Host/FileSystem.h"
@@ -71,6 +72,7 @@ llvm::StringRef PlatformWasm::GetPluginDescriptionStatic() {
 }
 
 void PlatformWasm::Initialize() {
+  PlatformWebInspectorWasm::Initialize();
   PluginManager::RegisterPlugin(
       GetPluginNameStatic(), GetPluginDescriptionStatic(),
       PlatformWasm::CreateInstance, PlatformWasm::DebuggerInitialize);
@@ -78,6 +80,7 @@ void PlatformWasm::Initialize() {
 
 void PlatformWasm::Terminate() {
   PluginManager::UnregisterPlugin(PlatformWasm::CreateInstance);
+  PlatformWebInspectorWasm::Terminate();
 }
 
 void PlatformWasm::DebuggerInitialize(Debugger &debugger) {
@@ -113,17 +116,20 @@ PlatformSP PlatformWasm::CreateInstance(bool force, const ArchSpec *arch) {
   return create ? PlatformSP(new PlatformWasm()) : PlatformSP();
 }
 
+llvm::Expected<uint16_t> PlatformWasm::FindFreeTCPPort() {
+  TCPSocket sock(true);
+  Status status = sock.Listen("localhost:0", /*backlog=*/5);
+  if (status.Fail())
+    return status.takeError();
+  return sock.GetLocalPortNumber();
+}
+
 std::vector<ArchSpec>
 PlatformWasm::GetSupportedArchitectures(const ArchSpec &process_host_arch) {
   return {ArchSpec("wasm32-unknown-unknown-wasm"),
           ArchSpec("wasm64-unknown-unknown-wasm")};
 }
 
-static auto get_arg_range(const Args &args) {
-  return llvm::make_range(args.GetArgumentArrayRef().begin(),
-                          args.GetArgumentArrayRef().end());
-}
-
 lldb::ProcessSP PlatformWasm::Attach(ProcessAttachInfo &attach_info,
                                      Debugger &debugger, Target *target,
                                      Status &status) {
@@ -155,18 +161,12 @@ lldb::ProcessSP PlatformWasm::DebugProcess(ProcessLaunchInfo &launch_info,
     return nullptr;
   }
 
-  uint16_t port = 0;
-  {
-    // Get the next available port by binding a socket to port 0.
-    TCPSocket listen_socket(true);
-    error = listen_socket.Listen("localhost:0", /*backlog=*/5);
-    if (error.Fail())
-      return nullptr;
-    port = listen_socket.GetLocalPortNumber();
-  }
-
-  if (error.Fail())
+  llvm::Expected<uint16_t> expected_port = FindFreeTCPPort();
+  if (!expected_port) {
+    error = Status::FromError(expected_port.takeError());
     return nullptr;
+  }
+  uint16_t port = *expected_port;
 
   Args args({runtime.GetPath(),
              llvm::formatv("{0}{1}", properties.GetPortArg(), port).str()});
@@ -192,7 +192,7 @@ lldb::ProcessSP PlatformWasm::DebugProcess(ProcessLaunchInfo &launch_info,
   llvm::Error Err = launch_info.SetUpPtyRedirection();
   LLDB_LOG_ERROR(log, std::move(Err), "SetUpPtyRedirection failed: {0}");
 
-  LLDB_LOG(log, "{0}", get_arg_range(launch_info.GetArguments()));
+  LLDB_LOG(log, "{0}", GetArgRange(launch_info.GetArguments()));
   error = Host::LaunchProcess(launch_info);
   if (error.Fail())
     return nullptr;
diff --git a/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.h b/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.h
index 5744ca7d0ca22..e752b8bae9840 100644
--- a/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.h
+++ b/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.h
@@ -55,11 +55,20 @@ class PlatformWasm : public RemoteAwarePlatform {
         arch, addr, length, prot, flags, fd, offset);
   }
 
+protected:
+  /// Find a free TCP port by binding to port 0.
+  static llvm::Expected<uint16_t> FindFreeTCPPort();
+
+  static auto GetArgRange(const Args &args) {
+    return llvm::make_range(args.GetArgumentArrayRef().begin(),
+                            args.GetArgumentArrayRef().end());
+  }
+
+  PlatformWasm() : RemoteAwarePlatform(/*is_host=*/false) {}
+
 private:
   static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch);
   static void DebuggerInitialize(Debugger &debugger);
-
-  PlatformWasm() : RemoteAwarePlatform(/*is_host=*/false) {}
 };
 
 } // namespace lldb_private
diff --git a/lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.cpp b/lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.cpp
new file mode 100644
index 0000000000000..fc60a98f46862
--- /dev/null
+++ b/lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.cpp
@@ -0,0 +1,177 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "PlatformWebInspectorWasm.h"
+#include "lldb/Core/PluginManager.h"
+#include "lldb/Host/FileSystem.h"
+#include "lldb/Host/Host.h"
+#include "lldb/Host/ProcessLaunchInfo.h"
+#include "lldb/Utility/LLDBLog.h"
+#include "lldb/Utility/Log.h"
+#include "llvm/ADT/StringExtras.h"
+#include "llvm/Support/ErrorExtras.h"
+
+#include <chrono>
+#include <csignal>
+#include <thread>
+
+using namespace lldb;
+using namespace lldb_private;
+
+LLDB_PLUGIN_DEFINE(PlatformWebInspectorWasm)
+
+static constexpr llvm::StringLiteral kServerBinary =
+    "/System/Cryptexes/App/usr/libexec/webinspector-wasm-lldb-platform";
+static constexpr uint8_t kConnectAttempts = 5;
+static constexpr auto kConnectDelay = std::chrono::milliseconds(100);
+
+llvm::StringRef PlatformWebInspectorWasm::GetPluginDescriptionStatic() {
+  return "Platform for debugging Wasm via WebInspector";
+}
+
+void PlatformWebInspectorWasm::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(),
+                                GetPluginDescriptionStatic(),
+                                PlatformWebInspectorWasm::CreateInstance);
+}
+
+void PlatformWebInspectorWasm::Terminate() {
+  PluginManager::UnregisterPlugin(PlatformWebInspectorWasm::CreateInstance);
+}
+
+PlatformSP PlatformWebInspectorWasm::CreateInstance(bool force,
+                                                    const ArchSpec *arch) {
+  Log *log = GetLog(LLDBLog::Platform);
+  LLDB_LOG(log, "force = {0}, arch = ({1}, {2})", force,
+           arch ? arch->GetArchitectureName() : "<null>",
+           arch ? arch->GetTriple().getTriple() : "<null>");
+  return force ? PlatformSP(new PlatformWebInspectorWasm()) : PlatformSP();
+}
+
+PlatformWebInspectorWasm::~PlatformWebInspectorWasm() {
+  if (m_server_pid != LLDB_INVALID_PROCESS_ID)
+    Host::Kill(m_server_pid, SIGTERM);
+}
+
+llvm::Error PlatformWebInspectorWasm::LaunchPlatformServer() {
+  Log *log = GetLog(LLDBLog::Platform);
+
+  if (!FileSystem::Instance().Exists(FileSpec(kServerBinary)))
+    return llvm::createStringErrorV("platform binary not found: {0}",
+                                    kServerBinary);
+
+  // Find two free TCP ports.
+  llvm::Expected<uint16_t> expected_platform_port = FindFreeTCPPort();
+  if (!expected_platform_port)
+    return expected_platform_port.takeError();
+  uint16_t platform_port = *expected_platform_port;
+
+  llvm::Expected<uint16_t> expected_debugserver_port = FindFreeTCPPort();
+  if (!expected_debugserver_port)
+    return expected_debugserver_port.takeError();
+  uint16_t debugserver_port = *expected_debugserver_port;
+
+  ProcessLaunchInfo launch_info;
+  launch_info.SetExecutableFile(FileSpec(kServerBinary),
+                                /*add_exe_file_as_first_arg=*/true);
+  Args args;
+  args.AppendArgument(kServerBinary);
+  args.AppendArgument("--platform");
+  args.AppendArgument(llvm::utostr(platform_port));
+  args.AppendArgument("--debugserver");
+  args.AppendArgument(llvm::utostr(debugserver_port));
+  launch_info.SetArguments(args, /*first_arg_is_executable=*/true);
+  launch_info.SetLaunchInSeparateProcessGroup(true);
+  launch_info.GetFlags().Clear(eLaunchFlagDebug);
+
+  launch_info.SetMonitorProcessCallback(
+      [log](lldb::pid_t pid, int signal, int status) {
+        LLDB_LOG(log,
+                 "Platform exited: pid = {0}, signal = "
+                 "{1}, status = {2}",
+                 pid, signal, status);
+      });
+
+  LLDB_LOG(log, "{0}", GetArgRange(launch_info.GetArguments()));
+
+  Status status = Host::LaunchProcess(launch_info);
+  if (status.Fail())
+    return status.takeError();
+
+  m_server_pid = launch_info.GetProcessID();
+  LLDB_LOG(log, "Platform launched: pid = {0}", m_server_pid);
+
+  Args connect_args;
+  connect_args.AppendArgument(
+      llvm::formatv("connect://localhost:{0}", platform_port).str());
+
+  // The platform may need some time to bind a socket to the requested port.
+  for (uint8_t attempt = 0; attempt < kConnectAttempts; attempt++) {
+    status = PlatformWasm::ConnectRemote(connect_args);
+    if (status.Success())
+      return llvm::Error::success();
+
+    LLDB_LOG(
+        log,
+        "[{0}/{1}] platform not yet listening on port {2}: trying again in {3}",
+        attempt, kConnectAttempts, platform_port, kConnectDelay);
+    std::this_thread::sleep_for(kConnectDelay);
+  }
+  return status.takeError();
+}
+
+llvm::Error PlatformWebInspectorWasm::EnsureConnected() {
+  if (m_remote_platform_sp)
+    return llvm::Error::success();
+  return LaunchPlatformServer();
+}
+
+Status PlatformWebInspectorWasm::ConnectRemote(Args &args) {
+  if (args.GetArgumentCount() == 0)
+    return Status::FromError(LaunchPlatformServer());
+  return PlatformWasm::ConnectRemote(args);
+}
+
+ProcessSP PlatformWebInspectorWasm::Attach(ProcessAttachInfo &attach_info,
+                                           Debugger &debugger, Target *target,
+                                           Status &status) {
+  status = Status::FromError(EnsureConnected());
+  if (status.Fail())
+    return nullptr;
+  return PlatformWasm::Attach(attach_info, debugger, target, status);
+}
+
+uint32_t PlatformWebInspectorWasm::FindProcesses(
+    const ProcessInstanceInfoMatch &match_info,
+    ProcessInstanceInfoList &proc_infos) {
+  if (llvm::Error err = EnsureConnected()) {
+    LLDB_LOG_ERROR(GetLog(LLDBLog::Platform), std::move(err),
+                   "EnsureConnected failed: {0}");
+    return 0;
+  }
+  return PlatformWasm::FindProcesses(match_info, proc_infos);
+}
+
+bool PlatformWebInspectorWasm::GetProcessInfo(lldb::pid_t pid,
+                                              ProcessInstanceInfo &proc_info) {
+  if (llvm::Error err = EnsureConnected()) {
+    LLDB_LOG_ERROR(GetLog(LLDBLog::Platform), std::move(err),
+                   "EnsureConnected failed: {0}");
+    return false;
+  }
+  return PlatformWasm::GetProcessInfo(pid, proc_info);
+}
+
+lldb::ProcessSP
+PlatformWebInspectorWasm::DebugProcess(ProcessLaunchInfo &launch_info,
+                                       Debugger &debugger, Target &target,
+                                       Status &error) {
+  error = Status::FromErrorStringWithFormatv("{0} does not support launching",
+                                             GetPluginNameStatic());
+  return nullptr;
+}
diff --git a/lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.h b/lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.h
new file mode 100644
index 0000000000000..52286b4532ebc
--- /dev/null
+++ b/lldb/source/Plugins/Platform/WebAssembly/PlatformWebInspectorWasm.h
@@ -0,0 +1,58 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SOURCE_PLUGINS_PLATFORM_WEBASSEMBLY_PLATFORMWEBINSPECTORWASM_H
+#define LLDB_SOURCE_PLUGINS_PLATFORM_WEBASSEMBLY_PLATFORMWEBINSPECTORWASM_H
+
+#include "PlatformWasm.h"
+
+namespace lldb_private {
+
+class PlatformWebInspectorWasm : public PlatformWasm {
+public:
+  static void Initialize();
+  static void Terminate();
+
+  static llvm::StringRef GetPluginNameStatic() { return "webinspector-wasm"; }
+  static llvm::StringRef GetPluginDescriptionStatic();
+
+  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
+  llvm::StringRef GetDescription() override {
+    return GetPluginDescriptionStatic();
+  }
+
+  ~PlatformWebInspectorWasm() override;
+
+  Status ConnectRemote(Args &args) override;
+
+  lldb::ProcessSP Attach(ProcessAttachInfo &attach_info, Debugger &debugger,
+                         Target *target, Status &status) override;
+
+  lldb::ProcessSP DebugProcess(ProcessLaunchInfo &launch_info,
+                               Debugger &debugger, Target &target,
+                               Status &error) override;
+
+  uint32_t FindProcesses(const ProcessInstanceInfoMatch &match_info,
+                         ProcessInstanceInfoList &proc_infos) override;
+
+  bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info) override;
+
+private:
+  static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch);
+
+  PlatformWebInspectorWasm() = default;
+
+  llvm::Error LaunchPlatformServer();
+  llvm::Error EnsureConnected();
+
+  lldb::pid_t m_server_pid = LLDB_INVALID_PROCESS_ID;
+};
+
+} // namespace lldb_private
+
+#endif // LLDB_SOURCE_PLUGINS_PLATFORM_WEBASSEMBLY_PLATFORMWEBINSPECTORWASM_H

@DavidSpickett
Copy link
Copy Markdown
Collaborator

Can you describe this and contrast with the existing platform?

(lldb) platform select
Available completions:
        remote-AIX       
        remote-linux     
        remote-android   
        remote-freebsd   
        remote-gdb-server
        darwin           
        remote-ios       
        remote-macosx    
        host             
        remote-netbsd    
        remote-openbsd   
        qemu-user        
        wasm             
        remote-windows

I guess that wasm is "launch a runtime for me" and this one is "connect to some instance my browser (?) is already running".

@DavidSpickett
Copy link
Copy Markdown
Collaborator

Also, more changes to come, or worth a release note already?

@JDevlieghere
Copy link
Copy Markdown
Member Author

JDevlieghere commented Mar 26, 2026

I guess that wasm is "launch a runtime for me" and this one is "connect to some instance my browser (?) is already running".

Yes that's right. The existing "wasm" platform handles WebAssembly generally (hence why we inherit from it here), and allows you to configure a runtime to launch under. This one does the inverse, and only supports attaching to an already running WebAssembly instance in Safari.

The workflow here is always platform porcess list -> platform process attach, which is why you can only force create this platform (i.e. it's never automatically selected for you based on loading a Wasm target).

Release note sounds good 👍

Edit: updated the PR description

@JDevlieghere JDevlieghere merged commit 7119610 into llvm:main Mar 27, 2026
11 checks passed
@JDevlieghere JDevlieghere deleted the wasm-platform branch March 27, 2026 14:31
JDevlieghere added a commit to swiftlang/llvm-project that referenced this pull request Mar 27, 2026
Add a new PlatformWebInspectorWasm, which is a Wasm platform that
automatically connects to the WebInspector platform server.

The existing "wasm" platform handles WebAssembly generally and allows
you to configure a runtime to launch under. The "webinspector-wasm"
platform does the inverse, and only supports attaching to an already
running WebAssembly instance in Safari. The workflow here is always
`platform process list` followed by `platform process attach`. This
explains why you can only force create this platform and it's never
automatically selected when loading a Wasm target.

(cherry picked from commit 7119610)
@llvm-ci
Copy link
Copy Markdown

llvm-ci commented Mar 27, 2026

LLVM Buildbot has detected a new failure on builder lldb-aarch64-windows running on linaro-armv8-windows-msvc-05 while building lldb,llvm at step 6 "test".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/141/builds/16719

Here is the relevant piece of the build log for the reference
Step 6 (test) failure: build (failure)
...
UNSUPPORTED: lldb-api :: functionalities/inferior-changed/TestInferiorChanged.py (551 of 2485)
PASS: lldb-api :: functionalities/inferior-crashing/TestInferiorCrashing.py (552 of 2485)
XFAIL: lldb-api :: functionalities/inferior-assert/TestInferiorAssert.py (553 of 2485)
PASS: lldb-api :: functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py (554 of 2485)
PASS: lldb-api :: functionalities/inferior-crashing/TestInferiorCrashingStep.py (555 of 2485)
UNSUPPORTED: lldb-api :: functionalities/inline-sourcefile/TestInlineSourceFiles.py (556 of 2485)
PASS: lldb-api :: functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py (557 of 2485)
UNSUPPORTED: lldb-api :: functionalities/interactive_scripted_process/TestInteractiveScriptedProcess.py (558 of 2485)
PASS: lldb-api :: functionalities/jitloader_gdb/TestJITLoaderGDB.py (559 of 2485)
PASS: lldb-api :: functionalities/json/object-file/TestObjectFileJSON.py (560 of 2485)
FAIL: lldb-api :: functionalities/inline-stepping/TestInlineStepping.py (561 of 2485)
******************** TEST 'lldb-api :: functionalities/inline-stepping/TestInlineStepping.py' FAILED ********************
Script:
--
C:/Users/tcwg/scoop/apps/python/current/python.exe C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/llvm-project/lldb\test\API\dotest.py -u CXXFLAGS -u CFLAGS --env LLVM_LIBS_DIR=C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./lib --env LLVM_INCLUDE_DIR=C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/include --env LLVM_TOOLS_DIR=C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin --arch aarch64 --build-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/lldb-test-build.noindex --lldb-module-cache-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/lldb-test-build.noindex/module-cache-lldb\lldb-api --clang-module-cache-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/lldb-test-build.noindex/module-cache-clang\lldb-api --executable C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin/lldb.exe --compiler C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin/clang.exe --dsymutil C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin/dsymutil.exe --make C:/Users/tcwg/scoop/shims/make.exe --llvm-tools-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin --lldb-obj-root C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/tools/lldb --lldb-libs-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./lib --cmake-build-type Release --skip-category=watchpoint C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping -p TestInlineStepping.py
--
Exit Code: 1

Command Output (stdout):
--
lldb version 23.0.0git (https://github.com/llvm/llvm-project.git revision 7119610bc43fe4121c4f6341c5bcc9e9eef7deb6)
  clang revision 7119610bc43fe4121c4f6341c5bcc9e9eef7deb6
  llvm revision 7119610bc43fe4121c4f6341c5bcc9e9eef7deb6
Skipping the following test categories: watchpoint, libc++, libstdcxx, dwo, dsym, gmodules, debugserver, objc, fork, pexpect


--
Command Output (stderr):
--
UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_step_in_template_with_python_api_dsym (TestInlineStepping.TestInlineStepping.test_step_in_template_with_python_api_dsym) (test case does not fall in any category of interest for this run) 

XFAIL: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_step_in_template_with_python_api_dwarf (TestInlineStepping.TestInlineStepping.test_step_in_template_with_python_api_dwarf)

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_step_in_template_with_python_api_dwo (TestInlineStepping.TestInlineStepping.test_step_in_template_with_python_api_dwo) (test case does not fall in any category of interest for this run) 

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_step_over_with_python_api_dsym (TestInlineStepping.TestInlineStepping.test_step_over_with_python_api_dsym) (test case does not fall in any category of interest for this run) 

FAIL: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_step_over_with_python_api_dwarf (TestInlineStepping.TestInlineStepping.test_step_over_with_python_api_dwarf)

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_step_over_with_python_api_dwo (TestInlineStepping.TestInlineStepping.test_step_over_with_python_api_dwo) (test case does not fall in any category of interest for this run) 

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_virtual_inline_stepping_dsym (TestInlineStepping.TestInlineStepping.test_virtual_inline_stepping_dsym) (test case does not fall in any category of interest for this run) 

PASS: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_virtual_inline_stepping_dwarf (TestInlineStepping.TestInlineStepping.test_virtual_inline_stepping_dwarf)

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_virtual_inline_stepping_dwo (TestInlineStepping.TestInlineStepping.test_virtual_inline_stepping_dwo) (test case does not fall in any category of interest for this run) 

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_with_python_api_dsym (TestInlineStepping.TestInlineStepping.test_with_python_api_dsym) (test case does not fall in any category of interest for this run) 


DavidSpickett added a commit to DavidSpickett/llvm-project that referenced this pull request Mar 27, 2026
This is flakey on the buildbot.

https://lab.llvm.org/buildbot/#/builders/141/builds/16719 as reported
on llvm#188751.

FAIL: test_step_over_with_python_api_dwarf (TestInlineStepping.TestInlineStepping.test_step_over_with_python_api_dwarf)
    Test stepping over and into inlined functions.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\packages\Python\lldbsuite\test\lldbtest.py", line 2019, in test_method
    return attrvalue(self)
           ^^^^^^^^^^^^^^^
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 25, in test_step_over_with_python_api
    self.inline_stepping_step_over()
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 317, in inline_stepping_step_over
    self.run_step_sequence(step_sequence)
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 152, in run_step_sequence
    self.do_step(step_pattern[1], target_line_entry, test_stack_depth)
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 83, in do_step
    self.fail(
AssertionError: Failed to stop due to step into operation stepping to: C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\calling.cpp:46
DavidSpickett added a commit that referenced this pull request Mar 27, 2026
…189032)

This is flakey on the buildbot.

https://lab.llvm.org/buildbot/#/builders/141/builds/16719 as reported on
#188751.
```
FAIL: test_step_over_with_python_api_dwarf (TestInlineStepping.TestInlineStepping.test_step_over_with_python_api_dwarf)
    Test stepping over and into inlined functions.
---------------------------------------------------------------------- Traceback (most recent call last):
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\packages\Python\lldbsuite\test\lldbtest.py", line 2019, in test_method
    return attrvalue(self)
           ^^^^^^^^^^^^^^^
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 25, in test_step_over_with_python_api
    self.inline_stepping_step_over()
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 317, in inline_stepping_step_over
    self.run_step_sequence(step_sequence)
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 152, in run_step_sequence
    self.do_step(step_pattern[1], target_line_entry, test_stack_depth)
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 83, in do_step
    self.fail(
AssertionError: Failed to stop due to step into operation stepping to: C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\calling.cpp:46
```
JDevlieghere added a commit to swiftlang/llvm-project that referenced this pull request Mar 27, 2026
Aadarsh-Keshri pushed a commit to Aadarsh-Keshri/llvm-project that referenced this pull request Mar 28, 2026
Add a new PlatformWebInspectorWasm, which is a Wasm platform that
automatically connects to the WebInspector platform server.

The existing "wasm" platform handles WebAssembly generally and allows
you to configure a runtime to launch under. The "webinspector-wasm"
platform does the inverse, and only supports attaching to an already
running WebAssembly instance in Safari. The workflow here is always
`platform process list` followed by `platform process attach`. This
explains why you can only force create this platform and it's never
automatically selected when loading a Wasm target.
Aadarsh-Keshri pushed a commit to Aadarsh-Keshri/llvm-project that referenced this pull request Mar 28, 2026
…lvm#189032)

This is flakey on the buildbot.

https://lab.llvm.org/buildbot/#/builders/141/builds/16719 as reported on
llvm#188751.
```
FAIL: test_step_over_with_python_api_dwarf (TestInlineStepping.TestInlineStepping.test_step_over_with_python_api_dwarf)
    Test stepping over and into inlined functions.
---------------------------------------------------------------------- Traceback (most recent call last):
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\packages\Python\lldbsuite\test\lldbtest.py", line 2019, in test_method
    return attrvalue(self)
           ^^^^^^^^^^^^^^^
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 25, in test_step_over_with_python_api
    self.inline_stepping_step_over()
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 317, in inline_stepping_step_over
    self.run_step_sequence(step_sequence)
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 152, in run_step_sequence
    self.do_step(step_pattern[1], target_line_entry, test_stack_depth)
  File "C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\TestInlineStepping.py", line 83, in do_step
    self.fail(
AssertionError: Failed to stop due to step into operation stepping to: C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\inline-stepping\calling.cpp:46
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants