[compiler-rt] 0a39f1a - [scudo] Add errno description to mmap failure. (#87713)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 5 14:25:43 PDT 2024
Author: Christopher Ferris
Date: 2024-04-05T14:25:39-07:00
New Revision: 0a39f1a7e5c7fd00b37231964ec81dae938948e7
URL: https://github.com/llvm/llvm-project/commit/0a39f1a7e5c7fd00b37231964ec81dae938948e7
DIFF: https://github.com/llvm/llvm-project/commit/0a39f1a7e5c7fd00b37231964ec81dae938948e7.diff
LOG: [scudo] Add errno description to mmap failure. (#87713)
Added unit tests for all of the linux report error functions.
Added:
Modified:
compiler-rt/lib/scudo/standalone/report_linux.cpp
compiler-rt/lib/scudo/standalone/tests/report_test.cpp
Removed:
################################################################################
diff --git a/compiler-rt/lib/scudo/standalone/report_linux.cpp b/compiler-rt/lib/scudo/standalone/report_linux.cpp
index dfddef3324bd61..432f6a01696463 100644
--- a/compiler-rt/lib/scudo/standalone/report_linux.cpp
+++ b/compiler-rt/lib/scudo/standalone/report_linux.cpp
@@ -25,10 +25,10 @@ namespace scudo {
// Fatal internal map() error (potentially OOM related).
void NORETURN reportMapError(uptr SizeIfOOM) {
ScopedString Error;
- Error.append("Scudo ERROR: internal map failure");
- if (SizeIfOOM) {
- Error.append(" (NO MEMORY) requesting %zuKB", SizeIfOOM >> 10);
- }
+ Error.append("Scudo ERROR: internal map failure (error desc=%s)",
+ strerror(errno));
+ if (SizeIfOOM)
+ Error.append(" requesting %zuKB", SizeIfOOM >> 10);
Error.append("\n");
reportRawError(Error.data());
}
diff --git a/compiler-rt/lib/scudo/standalone/tests/report_test.cpp b/compiler-rt/lib/scudo/standalone/tests/report_test.cpp
index 92f1ee813036cd..2c790247a2f6e2 100644
--- a/compiler-rt/lib/scudo/standalone/tests/report_test.cpp
+++ b/compiler-rt/lib/scudo/standalone/tests/report_test.cpp
@@ -53,3 +53,28 @@ TEST(ScudoReportDeathTest, CSpecific) {
EXPECT_DEATH(scudo::reportInvalidAlignedAllocAlignment(123, 456),
"Scudo ERROR.*123.*456");
}
+
+#if SCUDO_LINUX || SCUDO_TRUSTY || SCUDO_ANDROID
+#include "report_linux.h"
+
+#include <errno.h>
+#include <sys/mman.h>
+
+TEST(ScudoReportDeathTest, Linux) {
+ errno = ENOMEM;
+ EXPECT_DEATH(scudo::reportMapError(),
+ "Scudo ERROR:.*internal map failure \\(error desc=.*\\)\\s*$");
+ errno = ENOMEM;
+ EXPECT_DEATH(scudo::reportMapError(1024U),
+ "Scudo ERROR:.*internal map failure \\(error desc=.*\\) "
+ "requesting 1KB\\s*$");
+ errno = ENOMEM;
+ EXPECT_DEATH(scudo::reportUnmapError(0x1000U, 100U),
+ "Scudo ERROR:.*internal unmap failure \\(error desc=.*\\) Addr "
+ "0x1000 Size 100\\s*$");
+ errno = ENOMEM;
+ EXPECT_DEATH(scudo::reportProtectError(0x1000U, 100U, PROT_READ),
+ "Scudo ERROR:.*internal protect failure \\(error desc=.*\\) "
+ "Addr 0x1000 Size 100 Prot 1\\s*$");
+}
+#endif
More information about the llvm-commits
mailing list