https://github.com/royitaqi updated https://github.com/llvm/llvm-project/pull/142224
>From 58b8a322a8cc6e3cce3d3e2d405fb915c338791a Mon Sep 17 00:00:00 2001 From: Roy Shi <roy...@meta.com> Date: Fri, 30 May 2025 14:21:06 -0700 Subject: [PATCH 1/4] Fix crash and add test --- lldb/source/Plugins/Process/Linux/Procfs.cpp | 2 +- lldb/unittests/Process/Linux/ProcfsTests.cpp | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/Procfs.cpp b/lldb/source/Plugins/Process/Linux/Procfs.cpp index d3bd396fbaeab..4349a2b1adb9d 100644 --- a/lldb/source/Plugins/Process/Linux/Procfs.cpp +++ b/lldb/source/Plugins/Process/Linux/Procfs.cpp @@ -74,7 +74,7 @@ lldb_private::process_linux::GetAvailableLogicalCoreIDs() { llvm::Expected<int> lldb_private::process_linux::GetPtraceScope() { ErrorOr<std::unique_ptr<MemoryBuffer>> ptrace_scope_file = getProcFile("sys/kernel/yama/ptrace_scope"); - if (!*ptrace_scope_file) + if (!ptrace_scope_file) return errorCodeToError(ptrace_scope_file.getError()); // The contents should be something like "1\n". Trim it so we get "1". StringRef buffer = (*ptrace_scope_file)->getBuffer().trim(); diff --git a/lldb/unittests/Process/Linux/ProcfsTests.cpp b/lldb/unittests/Process/Linux/ProcfsTests.cpp index e7af1f469c2bf..cbddccb89a215 100644 --- a/lldb/unittests/Process/Linux/ProcfsTests.cpp +++ b/lldb/unittests/Process/Linux/ProcfsTests.cpp @@ -104,7 +104,7 @@ TEST(Perf, RealLogicalCoreIDs) { ASSERT_GT((int)cpu_ids->size(), 0) << "We must see at least one core"; } -TEST(Perf, RealPtraceScope) { +TEST(Perf, RealPtraceScopeWhenExist) { // We first check we can read /proc/sys/kernel/yama/ptrace_scope auto buffer_or_error = errorOrToExpected(getProcFile("sys/kernel/yama/ptrace_scope")); @@ -120,6 +120,18 @@ TEST(Perf, RealPtraceScope) { << "Sensible values of ptrace_scope are between 0 and 3"; } +TEST(Perf, RealPtraceScopeWhenNotExist) { + // We first check we can NOT read /proc/sys/kernel/yama/ptrace_scope + auto buffer_or_error = + errorOrToExpected(getProcFile("sys/kernel/yama/ptrace_scope")); + if (buffer_or_error) + GTEST_SKIP() << "In order for this test to run, sys/kernel/yama/ptrace_scope should not exist"; + + // At this point we should fail parsing the ptrace_scope value. + Expected<int> ptrace_scope = GetPtraceScope(); + ASSERT_FALSE((bool)ptrace_scope); +} + #ifdef LLVM_ENABLE_THREADING TEST(Support, getProcFile_Tid) { auto BufferOrError = getProcFile(getpid(), llvm::get_threadid(), "comm"); >From 02a2ba2d67105b1fadec0a9e0c0ee7d914a24e72 Mon Sep 17 00:00:00 2001 From: Roy Shi <roy...@meta.com> Date: Fri, 30 May 2025 14:39:46 -0700 Subject: [PATCH 2/4] Fix test --- lldb/unittests/Process/Linux/ProcfsTests.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lldb/unittests/Process/Linux/ProcfsTests.cpp b/lldb/unittests/Process/Linux/ProcfsTests.cpp index cbddccb89a215..a795fa4e019c5 100644 --- a/lldb/unittests/Process/Linux/ProcfsTests.cpp +++ b/lldb/unittests/Process/Linux/ProcfsTests.cpp @@ -125,11 +125,13 @@ TEST(Perf, RealPtraceScopeWhenNotExist) { auto buffer_or_error = errorOrToExpected(getProcFile("sys/kernel/yama/ptrace_scope")); if (buffer_or_error) - GTEST_SKIP() << "In order for this test to run, sys/kernel/yama/ptrace_scope should not exist"; + GTEST_SKIP() << "In order for this test to run, /proc/sys/kernel/yama/ptrace_scope should not exist"; + consumeError(buffer_or_error.takeError()); // At this point we should fail parsing the ptrace_scope value. Expected<int> ptrace_scope = GetPtraceScope(); ASSERT_FALSE((bool)ptrace_scope); + consumeError(ptrace_scope.takeError()); } #ifdef LLVM_ENABLE_THREADING >From 02e9d8b60dcd8797e29874b64fe1369bfb7821b6 Mon Sep 17 00:00:00 2001 From: Roy Shi <roy...@meta.com> Date: Fri, 30 May 2025 15:55:06 -0700 Subject: [PATCH 3/4] Add if for unique_ptr --- lldb/source/Plugins/Process/Linux/Procfs.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lldb/source/Plugins/Process/Linux/Procfs.cpp b/lldb/source/Plugins/Process/Linux/Procfs.cpp index 4349a2b1adb9d..7ef4f3a102c2c 100644 --- a/lldb/source/Plugins/Process/Linux/Procfs.cpp +++ b/lldb/source/Plugins/Process/Linux/Procfs.cpp @@ -76,6 +76,9 @@ llvm::Expected<int> lldb_private::process_linux::GetPtraceScope() { getProcFile("sys/kernel/yama/ptrace_scope"); if (!ptrace_scope_file) return errorCodeToError(ptrace_scope_file.getError()); + if (!*ptrace_scope_file) + return createStringError(inconvertibleErrorCode(), + "ptrace_scope buffer is nullptr"); // The contents should be something like "1\n". Trim it so we get "1". StringRef buffer = (*ptrace_scope_file)->getBuffer().trim(); int ptrace_scope_value; >From e55bbbed66bb1b49bc23a7d24d70055865424ba5 Mon Sep 17 00:00:00 2001 From: Roy Shi <roy...@meta.com> Date: Fri, 30 May 2025 15:55:46 -0700 Subject: [PATCH 4/4] Fix format --- lldb/source/Plugins/Process/Linux/Procfs.cpp | 2 +- lldb/unittests/Process/Linux/ProcfsTests.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/Procfs.cpp b/lldb/source/Plugins/Process/Linux/Procfs.cpp index 7ef4f3a102c2c..b7a61bf810fff 100644 --- a/lldb/source/Plugins/Process/Linux/Procfs.cpp +++ b/lldb/source/Plugins/Process/Linux/Procfs.cpp @@ -78,7 +78,7 @@ llvm::Expected<int> lldb_private::process_linux::GetPtraceScope() { return errorCodeToError(ptrace_scope_file.getError()); if (!*ptrace_scope_file) return createStringError(inconvertibleErrorCode(), - "ptrace_scope buffer is nullptr"); + "ptrace_scope buffer is nullptr"); // The contents should be something like "1\n". Trim it so we get "1". StringRef buffer = (*ptrace_scope_file)->getBuffer().trim(); int ptrace_scope_value; diff --git a/lldb/unittests/Process/Linux/ProcfsTests.cpp b/lldb/unittests/Process/Linux/ProcfsTests.cpp index a795fa4e019c5..534e3e132ec62 100644 --- a/lldb/unittests/Process/Linux/ProcfsTests.cpp +++ b/lldb/unittests/Process/Linux/ProcfsTests.cpp @@ -125,7 +125,8 @@ TEST(Perf, RealPtraceScopeWhenNotExist) { auto buffer_or_error = errorOrToExpected(getProcFile("sys/kernel/yama/ptrace_scope")); if (buffer_or_error) - GTEST_SKIP() << "In order for this test to run, /proc/sys/kernel/yama/ptrace_scope should not exist"; + GTEST_SKIP() << "In order for this test to run, " + "/proc/sys/kernel/yama/ptrace_scope should not exist"; consumeError(buffer_or_error.takeError()); // At this point we should fail parsing the ptrace_scope value. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits