mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 11:50:28 +02:00
On Darwin, setrlimit is ignored, and these tests do not terminate. There doesn't seem to be another way to limit the memory allocated by a process. * test-suite/standalone/test-stack-overflow: Skip this test on Darwin. * test-suite/standalone/test-out-of-memory: Skip this test on Darwin.
46 lines
1.1 KiB
Scheme
Executable file
46 lines
1.1 KiB
Scheme
Executable file
#!/bin/sh
|
|
guild compile "$0"
|
|
exec guile -q -s "$0" "$@"
|
|
!#
|
|
|
|
(unless (defined? 'setrlimit)
|
|
;; Without an rlimit, this test can take down your system, as it
|
|
;; consumes all of your memory in stack space. That doesn't seem like
|
|
;; something we should run as part of an automated test suite.
|
|
(exit 0))
|
|
|
|
(when (string-ci= "darwin" (vector-ref (uname) 0))
|
|
;; setrlimits are ignored in OS X (tested on 10.9 and 10.10). Proceeding
|
|
;; with the test would fill all available memory and probably end in a crash.
|
|
;; See also test-stack-overflow.
|
|
(exit 77)) ; uresolved
|
|
|
|
;; 100 MB.
|
|
(define *limit* (* 100 1024 1024))
|
|
|
|
(call-with-values (lambda () (getrlimit 'as))
|
|
(lambda (soft hard)
|
|
(unless (and soft (< soft *limit*))
|
|
(setrlimit 'as (if hard (min *limit* hard) *limit*) hard))))
|
|
|
|
(define (test)
|
|
(catch 'stack-overflow
|
|
(lambda ()
|
|
(let lp ()
|
|
(lp)
|
|
(error "should not be reached")))
|
|
(lambda _
|
|
#t)))
|
|
|
|
;; Run the test a few times. The stack will only be enlarged and
|
|
;; relocated on the first one.
|
|
|
|
(test)
|
|
(test)
|
|
(test)
|
|
(test)
|
|
(test)
|
|
|
|
;; Local Variables:
|
|
;; mode: scheme
|
|
;; End:
|