diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2021-04-22 11:05:17 +0200 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2021-04-22 11:14:18 +0200 |
commit | faf7d413a3f3337be1a3ac5cdf33e0e3b87b426e (patch) | |
tree | 718731d41bf2fe2ee43ffb30420fc14f0a886deb /gcc | |
parent | 5668843346c74cabf830e46b45fad24db4566fd6 (diff) | |
download | gcc-faf7d413a3f3337be1a3ac5cdf33e0e3b87b426e.zip gcc-faf7d413a3f3337be1a3ac5cdf33e0e3b87b426e.tar.gz gcc-faf7d413a3f3337be1a3ac5cdf33e0e3b87b426e.tar.bz2 |
gfortran.dg/pr68078.f90: Avoid increasing RLIMIT_AS
pr68078.f90 tests out-of-memory handling and calls set_vm_limit to set the
soft limit. However, setrlimit was then called with hard limit RLIM_INFINITY,
which failed when the current hard limit was lower.
gcc/testsuite/
* gfortran.dg/set_vm_limit.c (set_vm_limit): Call getrlimit, use
obtained hard limit, and only call setrlimit if new softlimit is lower.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gfortran.dg/set_vm_limit.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/testsuite/gfortran.dg/set_vm_limit.c b/gcc/testsuite/gfortran.dg/set_vm_limit.c index 30c4b43..8344f6f 100644 --- a/gcc/testsuite/gfortran.dg/set_vm_limit.c +++ b/gcc/testsuite/gfortran.dg/set_vm_limit.c @@ -8,9 +8,20 @@ void set_vm_limit (int vm_limit) { - struct rlimit rl = { vm_limit, RLIM_INFINITY }; + struct rlimit rl; int r; + r = getrlimit (RLIMIT_AS, &rl); + if (r) + { + perror ("get_vm_limit"); + exit (1); + } + + if (vm_limit >= rl.rlim_cur) + return; + + rl.rlim_cur = vm_limit; r = setrlimit (RLIMIT_AS, &rl); if (r) { |