[sanitizer] Only set soft coredump limit.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Wed, 7 Nov 2018 01:03:26 +0000 (01:03 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Wed, 7 Nov 2018 01:03:26 +0000 (01:03 +0000)
Summary: If user wants to raise it back, let them.

Reviewers: kcc, vitalybuka

Subscribers: llvm-commits, kubamracek

Differential Revision: https://reviews.llvm.org/D54190

llvm-svn: 346284

compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc
compiler-rt/test/sanitizer_common/TestCases/corelimit.cc

index 266e9bdba051e04464005f0c35052c99ab2335f5..3006e60d89f39251a9d45a572407a0c229b46ce1 100644 (file)
@@ -94,10 +94,12 @@ static rlim_t getlim(int res) {
 }
 
 static void setlim(int res, rlim_t lim) {
-  // The following magic is to prevent clang from replacing it with memset.
-  volatile struct rlimit rlim;
+  struct rlimit rlim;
+  if (getrlimit(res, const_cast<struct rlimit *>(&rlim))) {
+    Report("ERROR: %s getrlimit() failed %d\n", SanitizerToolName, errno);
+    Die();
+  }
   rlim.rlim_cur = lim;
-  rlim.rlim_max = lim;
   if (setrlimit(res, const_cast<struct rlimit *>(&rlim))) {
     Report("ERROR: %s setrlimit() failed %d\n", SanitizerToolName, errno);
     Die();
index eb02afc01a1ba3544858f99914022e503cab3f6a..2378a4cfdced12a29dc4ef7c67f992e1c0bccde1 100644 (file)
@@ -10,7 +10,7 @@ int main() {
   getrlimit(RLIMIT_CORE, &lim_core);
   void *p;
   if (sizeof(p) == 8) {
-    assert(0 == lim_core.rlim_max);
+    assert(0 == lim_core.rlim_cur);
   }
   return 0;
 }