-
Notifications
You must be signed in to change notification settings - Fork 11.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[scudo] Add errno description to mmap failure. #87713
Conversation
Added unit tests for all of the linux report error functions.
@llvm/pr-subscribers-compiler-rt-sanitizer Author: Christopher Ferris (cferris1000) ChangesAdded unit tests for all of the linux report error functions. Full diff: https://github.com/llvm/llvm-project/pull/87713.diff 2 Files Affected:
diff --git a/compiler-rt/lib/scudo/standalone/report_linux.cpp b/compiler-rt/lib/scudo/standalone/report_linux.cpp
index dfddef3324bd61..ecfc69258374d0 100644
--- a/compiler-rt/lib/scudo/standalone/report_linux.cpp
+++ b/compiler-rt/lib/scudo/standalone/report_linux.cpp
@@ -25,9 +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");
+ Error.append("Scudo ERROR: internal map failure (error desc=%s)",
+ strerror(errno));
if (SizeIfOOM) {
- Error.append(" (NO MEMORY) requesting %zuKB", SizeIfOOM >> 10);
+ 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
|
if (SizeIfOOM) { | ||
Error.append(" (NO MEMORY) requesting %zuKB", SizeIfOOM >> 10); | ||
Error.append(" requesting %zuKB", SizeIfOOM >> 10); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: single-line statement can remove the braces
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
This bot is broken https://lab.llvm.org/buildbot/#/builders/169/builds/30273 |
Fix has been submitted. |
Added unit tests for all of the linux report error functions.