[Lldb-commits] [lldb] 18b211c - Disable stdin/stdout for environment_check inferior process
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Fri Aug 18 16:27:57 PDT 2023
Author: Jason Molenda
Date: 2023-08-18T16:25:50-07:00
New Revision: 18b211cb15213f984b2014413b74958243a4805f
URL: https://github.com/llvm/llvm-project/commit/18b211cb15213f984b2014413b74958243a4805f
DIFF: https://github.com/llvm/llvm-project/commit/18b211cb15213f984b2014413b74958243a4805f.diff
LOG: Disable stdin/stdout for environment_check inferior process
To work around an address sanitizer issue on macOS where
environment_check prints a spurious stderr msg when executing,
environment_check(41292,0x113e7a600) malloc: nano zone abandoned due to inability to preallocate reserved vm space.
And TestClient::Continue() which intends to continue to exit
instead sees the stderr output streamed, and doesn't handle that
unexpected output. Easiest to disable stdin/stdout for this
one test case to avoid this corner case issue with this TestClient.cpp
way of expecting a stop reply packet after continuing.
Differential Revision: https://reviews.llvm.org/D158237
Added:
Modified:
lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp
lldb/unittests/tools/lldb-server/tests/TestClient.cpp
lldb/unittests/tools/lldb-server/tests/TestClient.h
Removed:
################################################################################
diff --git a/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp b/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp
index 92efeffde7f19e..1f53b6d9d9944e 100644
--- a/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp
+++ b/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp
@@ -41,9 +41,10 @@ TEST_F(TestBase, DS_TEST(DebugserverEnv)) {
// Test that --env takes precedence over inherited environment variables.
putenv(const_cast<char *>("LLDB_TEST_MAGIC_VARIABLE=foobar"));
- auto ClientOr = TestClient::launchCustom(getLogFileName(),
- { "--env", "LLDB_TEST_MAGIC_VARIABLE=LLDB_TEST_MAGIC_VALUE" },
- {getInferiorPath("environment_check")});
+ auto ClientOr = TestClient::launchCustom(
+ getLogFileName(), /* disable_stdio */ true,
+ {"--env", "LLDB_TEST_MAGIC_VARIABLE=LLDB_TEST_MAGIC_VALUE"},
+ {getInferiorPath("environment_check")});
ASSERT_THAT_EXPECTED(ClientOr, Succeeded());
auto &Client = **ClientOr;
diff --git a/lldb/unittests/tools/lldb-server/tests/TestClient.cpp b/lldb/unittests/tools/lldb-server/tests/TestClient.cpp
index 232f725baf58a7..2d7ce36bacfaa3 100644
--- a/lldb/unittests/tools/lldb-server/tests/TestClient.cpp
+++ b/lldb/unittests/tools/lldb-server/tests/TestClient.cpp
@@ -59,10 +59,13 @@ Expected<std::unique_ptr<TestClient>> TestClient::launch(StringRef Log) {
}
Expected<std::unique_ptr<TestClient>> TestClient::launch(StringRef Log, ArrayRef<StringRef> InferiorArgs) {
- return launchCustom(Log, {}, InferiorArgs);
+ return launchCustom(Log, false, {}, InferiorArgs);
}
-Expected<std::unique_ptr<TestClient>> TestClient::launchCustom(StringRef Log, ArrayRef<StringRef> ServerArgs, ArrayRef<StringRef> InferiorArgs) {
+Expected<std::unique_ptr<TestClient>>
+TestClient::launchCustom(StringRef Log, bool disable_stdio,
+ ArrayRef<StringRef> ServerArgs,
+ ArrayRef<StringRef> InferiorArgs) {
const ArchSpec &arch_spec = HostInfo::GetArchitecture();
Args args;
args.AppendArgument(LLDB_SERVER);
@@ -111,6 +114,8 @@ Expected<std::unique_ptr<TestClient>> TestClient::launchCustom(StringRef Log, Ar
// Accept().
Info.SetMonitorProcessCallback(&ProcessLaunchInfo::NoOpMonitorCallback);
+ if (disable_stdio)
+ Info.GetFlags().Set(lldb::eLaunchFlagDisableSTDIO);
status = Host::LaunchProcess(Info);
if (status.Fail())
return status.ToError();
diff --git a/lldb/unittests/tools/lldb-server/tests/TestClient.h b/lldb/unittests/tools/lldb-server/tests/TestClient.h
index 9a1831d4dbc174..deb6802d0da707 100644
--- a/lldb/unittests/tools/lldb-server/tests/TestClient.h
+++ b/lldb/unittests/tools/lldb-server/tests/TestClient.h
@@ -48,8 +48,9 @@ class TestClient
/// using this for generic tests, as the two stubs have
diff erent
/// command-line interfaces.
static llvm::Expected<std::unique_ptr<TestClient>>
- launchCustom(llvm::StringRef Log, llvm::ArrayRef<llvm::StringRef> ServerArgs, llvm::ArrayRef<llvm::StringRef> InferiorArgs);
-
+ launchCustom(llvm::StringRef Log, bool disable_stdio,
+ llvm::ArrayRef<llvm::StringRef> ServerArgs,
+ llvm::ArrayRef<llvm::StringRef> InferiorArgs);
~TestClient() override;
llvm::Error SetInferior(llvm::ArrayRef<std::string> inferior_args);
More information about the lldb-commits
mailing list