From d4e63aead64cf4910fcee9590af72ba8bc68ceb5 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com>
Date: Tue, 18 Aug 2026 01:17:29 +0300
Subject: #5994 Fix path based launch for LLProcess
---
indra/llcommon/llprocess.cpp | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
(limited to 'indra/llcommon/llprocess.cpp')
diff --git a/indra/llcommon/llprocess.cpp b/indra/llcommon/llprocess.cpp
index a71589a2bf..e43f386af2 100644
--- a/indra/llcommon/llprocess.cpp
+++ b/indra/llcommon/llprocess.cpp
@@ -701,8 +701,25 @@ void LLProcess::launch(const LLSDOrParams& params)
else
stdio.err = nullptr; // inherit
- // Build executable path
+ // Build executable path.
+ // Resolve bare executable names (i.e. "outleap-agent") through the
+ // environment's PATH
boost::filesystem::path executable_path(params.executable());
+ if (!executable_path.has_parent_path())
+ {
+ boost::filesystem::path resolved =
+ bp::environment::find_executable(executable_path);
+ if (!resolved.empty())
+ {
+ executable_path = resolved;
+ }
+ else
+ {
+ LL_WARNS("LLProcess") << "Could not locate '" << params.executable()
+ << "' on PATH -- launch will likely fail" << LL_ENDL;
+ // Let bp::process try to produce an error.
+ }
+ }
// In Boost.Process v2, error_code cannot be passed as an initializer.
// Use the throwing overload and catch the exception instead.
--
cgit v1.3
From 60b7e3b78cc401318e4f895bb64b5688645b3462 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com>
Date: Tue, 25 Aug 2026 20:18:58 +0300
Subject: #6153 Make hardware test more robust
---
indra/llcommon/llprocess.cpp | 5 ++
indra/llcommon/llprocess.h | 4 ++
indra/newview/app_settings/cmd_line.xml | 6 ++
indra/newview/llappviewer.cpp | 43 +++++++++---
indra/newview/llappviewerwin32.cpp | 18 ++++-
indra/newview/llcommandlineparser.cpp | 2 +-
indra/newview/llfeaturemanager.cpp | 114 +++++++++++++++++++++++++++++++-
7 files changed, 178 insertions(+), 14 deletions(-)
(limited to 'indra/llcommon/llprocess.cpp')
diff --git a/indra/llcommon/llprocess.cpp b/indra/llcommon/llprocess.cpp
index e43f386af2..86e1f48377 100644
--- a/indra/llcommon/llprocess.cpp
+++ b/indra/llcommon/llprocess.cpp
@@ -1109,6 +1109,11 @@ bool LLProcess::kill(const LLProcessPtr& ptr, const std::string& who)
return !ptr || ptr->kill(who);
}
+void LLProcess::pump()
+{
+ tick();
+}
+
LLProcess::id LLProcess::getProcessID() const
{
if (!mChild)
diff --git a/indra/llcommon/llprocess.h b/indra/llcommon/llprocess.h
index 26f9a27837..a016b6a258 100644
--- a/indra/llcommon/llprocess.h
+++ b/indra/llcommon/llprocess.h
@@ -234,6 +234,10 @@ public:
bool kill(const std::string& who = "");
static bool kill(const LLProcessPtr& p, const std::string& who = "");
+ /// Manually drive pending I/O and check process state.
+ /// Use this when the mainloop is not yet running or was terminated.
+ void pump();
+
#if LL_WINDOWS
typedef int id;
typedef HANDLE handle;
diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml
index e16a5c7e76..bf7f9bab1f 100644
--- a/indra/newview/app_settings/cmd_line.xml
+++ b/indra/newview/app_settings/cmd_line.xml
@@ -90,6 +90,12 @@
ConnectAsGod
+ gpubenchmark
+
+
graphicslevel