[compiler-rt] 6fc0e54 - [test][msan] Add test for dc4d9d6

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 23 15:08:27 PDT 2023


Author: Vitaly Buka
Date: 2023-06-23T15:08:09-07:00
New Revision: 6fc0e54807f9df2a296b2b35aaa05cdd73904f98

URL: https://github.com/llvm/llvm-project/commit/6fc0e54807f9df2a296b2b35aaa05cdd73904f98
DIFF: https://github.com/llvm/llvm-project/commit/6fc0e54807f9df2a296b2b35aaa05cdd73904f98.diff

LOG: [test][msan] Add test for dc4d9d6

Added: 
    compiler-rt/test/msan/release_origin.c

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
index 8fd3985642809..895763ac6b6f5 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
@@ -67,6 +67,8 @@ void *BackgroundThread(void *arg) {
       } else if (soft_rss_limit_mb >= current_rss_mb &&
                  reached_soft_rss_limit) {
         reached_soft_rss_limit = false;
+        Report("%s: soft rss limit unexhausted (%zdMb vs %zdMb)\n",
+               SanitizerToolName, soft_rss_limit_mb, current_rss_mb);
         SetRssLimitExceeded(false);
       }
     }

diff  --git a/compiler-rt/test/msan/release_origin.c b/compiler-rt/test/msan/release_origin.c
new file mode 100644
index 0000000000000..a5328a0de8c2f
--- /dev/null
+++ b/compiler-rt/test/msan/release_origin.c
@@ -0,0 +1,42 @@
+// RUN: %clang_msan -fsanitize-memory-track-origins=0 -O0 %s -o %t && MSAN_OPTIONS=soft_rss_limit_mb=18:verbosity=1:allocator_may_return_null=1 %run %t 2>&1 | FileCheck %s -implicit-check-not="soft rss limit" -check-prefixes=CHECK,NOORIG
+// RUN: %clang_msan -fsanitize-memory-track-origins=2 -O0 %s -o %t && MSAN_OPTIONS=soft_rss_limit_mb=36:verbosity=1:allocator_may_return_null=1 %run %t 2>&1 | FileCheck %s -implicit-check-not="soft rss limit" -check-prefixes=CHECK,ORIGIN
+
+#include <assert.h>
+#include <sanitizer/allocator_interface.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+void *p;
+
+int main(int argc, char **argv) {
+  int s = 20 * 1024 * 1024;
+  p = malloc(s);
+  fprintf(stderr, "malloc\n");
+  sleep(1);
+  memset(p, 1, s);
+  fprintf(stderr, "memset\n");
+  sleep(1);
+  free(p);
+  fprintf(stderr, "free\n");
+  sleep(1);
+  return 0;
+}
+
+// CHECK-LABEL: malloc
+
+// Non origin mode allocate ~20M for shadow.
+// Origin mode allocate ~20M for shadow and ~20M for origin.
+// CHECK: soft rss limit exhausted
+
+// CHECK-LABEL: memset
+
+// Memset reserve modified pages, frees ~20M for shadow. So not change in RSS for non-origin mode.
+// Origin mode also frees ~20M of origins, so 'unexhausted'.
+// ORIGIN: soft rss limit unexhausted
+
+// CHECK-LABEL: free
+
+// Now non-origin release all everything.
+// NOORIG: soft rss limit unexhausted
\ No newline at end of file


        


More information about the llvm-commits mailing list