aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Fuzzer/FuzzerLoop.cpp
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2016-05-06 21:58:35 +0000
committerKostya Serebryany <kcc@google.com>2016-05-06 21:58:35 +0000
commit52b394e9813c9dad61fbf4f53a934da3fc17b7fa (patch)
treed03a17067e4757b046052c33749ac23249a8adb7 /llvm/lib/Fuzzer/FuzzerLoop.cpp
parente88946223ca73d423c4eb5e669474898b5b3ade7 (diff)
downloadllvm-52b394e9813c9dad61fbf4f53a934da3fc17b7fa.zip
llvm-52b394e9813c9dad61fbf4f53a934da3fc17b7fa.tar.gz
llvm-52b394e9813c9dad61fbf4f53a934da3fc17b7fa.tar.bz2
[libFuzzer] add exeprimental -rss_limit_mb flag to fight against OOMs
llvm-svn: 268807
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerLoop.cpp')
-rw-r--r--llvm/lib/Fuzzer/FuzzerLoop.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp
index 3b0b339..e02ebcf 100644
--- a/llvm/lib/Fuzzer/FuzzerLoop.cpp
+++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp
@@ -176,6 +176,17 @@ void Fuzzer::AlarmCallback() {
}
}
+void Fuzzer::RssLimitCallback(size_t RssPeakMb, size_t RssLimitMb) {
+ Printf("==%d== ERROR: libFuzzer: out-of-memory (used: %zdMb; limit: %zdMb)\n",
+ GetPid(), RssPeakMb, RssLimitMb);
+ Printf("*****************************************************************\n");
+ Printf("** Experimental! TODO: dump the stack trace and the reproducer **\n");
+ Printf("*****************************************************************\n");
+ Printf("SUMMARY: libFuzzer: out-of-memory\n");
+ PrintFinalStats();
+ _Exit(Options.ErrorExitCode); // Stop right now.
+}
+
void Fuzzer::PrintStats(const char *Where, const char *End) {
size_t ExecPerSec = execPerSec();
if (Options.OutputCSV) {