about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2016-03-07 13:48:47 +0100
committerFlorian Weimer <fweimer@redhat.com>2016-03-07 13:48:47 +0100
commit900056024b75eae8b550d7fee1dec9e71f28344e (patch)
treede2aefba0ab594ddb7125cf4b25c50bb7e575240
parent9ff72da471a509a8c19791efe469f47fa6977410 (diff)
downloadglibc-900056024b75eae8b550d7fee1dec9e71f28344e.tar.gz
glibc-900056024b75eae8b550d7fee1dec9e71f28344e.tar.xz
glibc-900056024b75eae8b550d7fee1dec9e71f28344e.zip
test-skeleton.c: Do not set RLIMIT_DATA [BZ #19648]
With older kernels, it is mostly ineffective because it causes malloc
to switch from sbrk to mmap (potentially invalidating malloc testing
compared to what real appliations do).  With newer kernels which
have switched to enforcing RLIMIT_DATA for mmap as well, some test
cases will fail in an unintended fashion because the limit which was
set previously does not include room for all mmap mappings.
-rw-r--r--ChangeLog5
-rw-r--r--test-skeleton.c17
2 files changed, 5 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index ce8bf046e6..a9b1c9b2a2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-07  Florian Weimer  <fweimer@redhat.com>
+
+	[BZ #19648]
+	* test-skeleton.c (main): Do not set RLIMIT_DATA.
+
 2016-03-07  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	[BZ #14750]
diff --git a/test-skeleton.c b/test-skeleton.c
index a2d90a298f..29bdc9c74e 100644
--- a/test-skeleton.c
+++ b/test-skeleton.c
@@ -429,23 +429,6 @@ main (int argc, char *argv[])
       setrlimit (RLIMIT_CORE, &core_limit);
 #endif
 
-#ifdef RLIMIT_DATA
-      /* Try to avoid eating all memory if a test leaks.  */
-      struct rlimit data_limit;
-      if (getrlimit (RLIMIT_DATA, &data_limit) == 0)
-	{
-	  if (TEST_DATA_LIMIT == RLIM_INFINITY)
-	    data_limit.rlim_cur = data_limit.rlim_max;
-	  else if (data_limit.rlim_cur > (rlim_t) TEST_DATA_LIMIT)
-	    data_limit.rlim_cur = MIN ((rlim_t) TEST_DATA_LIMIT,
-				       data_limit.rlim_max);
-	  if (setrlimit (RLIMIT_DATA, &data_limit) < 0)
-	    printf ("setrlimit: RLIMIT_DATA: %m\n");
-	}
-      else
-	printf ("getrlimit: RLIMIT_DATA: %m\n");
-#endif
-
       /* We put the test process in its own pgrp so that if it bogusly
 	 generates any job control signals, they won't hit the whole build.  */
       if (setpgid (0, 0) != 0)