diff mbox

test-skeleton.c: Do not set RLIMIT_DATA [BZ #19648]

Message ID 56C8746D.4080900@redhat.com
State New
Headers show

Commit Message

Florian Weimer Feb. 20, 2016, 2:13 p.m. UTC
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.

Florian

Comments

Florian Weimer March 7, 2016, 1:01 p.m. UTC | #1
On 02/20/2016 03:13 PM, Florian Weimer wrote:
> 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.

I have committed this.

Florian
diff mbox

Patch

2016-02-20  Florian Weimer  <fweimer@redhat.com>

	[BZ #19648]
	* test-skeleton.c (main): Do not set RLIMIT_DATA.

diff --git a/test-skeleton.c b/test-skeleton.c
index a2d90a2..29bdc9c 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)