* test-ou
@ 2017-01-20 15:56 Ludovic Courtès
0 siblings, 0 replies; only message in thread
From: Ludovic Courtès @ 2017-01-20 15:56 UTC (permalink / raw)
To: Andy Wingo; +Cc: guile-devel
[-- Attachment #1: Type: text/plain, Size: 1351 bytes --]
Hi!
With 2.1.6 I get this test failure on x86_64-linux-gnu:
--8<---------------cut here---------------start------------->8---
wrote `/tmp/guix-build-guile-next-2.1.6.drv-0/guile-2.1.6/cache/guile/ccache/2.2-LE-8-3.9/tmp/guix-build-guile-next-2.1.6.drv-0/guile-2.1.6/test-suite/standalone/test-out-of-memory.go'
GC Warning: Failed to expand heap by 134348800 bytes
GC Warning: Failed to expand heap by 134217728 bytes
GC Warning: Out of Memory! Heap size: 1 MiB. Returning NULL!
error creating finalization thread: Cannot allocate memory
GC Warning: Failed to expand heap by 1000132608 bytes
GC Warning: Failed to expand heap by 1000001536 bytes
GC Warning: Out of Memory! Heap size: 1 MiB. Returning NULL!
GC Warning: Failed to expand heap by 499712 bytes
GC Warning: Failed to expand heap by 65536 bytes
GC Warning: Out of Memory! Heap size: 1 MiB. Returning NULL!
GC Warning: Failed to expand heap by 499712 bytes
GC Warning: Failed to expand heap by 65536 bytes
GC Warning: Out of Memory! Heap size: 1 MiB. Returning NULL!
Warning: Unwind-only `out-of-memory' exception; skipping pre-unwind handler.
FAIL: test-out-of-memory
--8<---------------cut here---------------end--------------->8---
It happens once every 2–3 runs. With the attached patched, I determined
that it’s the third test (iota) that’s failing:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 2121 bytes --]
--- a/test-suite/standalone/test-out-of-memory 2016-08-01 13:32:31.548127428 +0200
+++ b/test-suite/standalone/test-out-of-memory 2017-01-20 16:52:43.181547628 +0100
@@ -18,7 +18,10 @@ exec guile -q -s "$0" "$@"
(catch #t
;; Silence GC warnings.
(lambda ()
- (current-warning-port (open-output-file "/dev/null")))
+ (let ((stderr (dup (current-error-port))))
+ (set-current-error-port stderr)
+ (close-fdes 2)
+ (dup2 (open-fdes "/dev/null" O_WRONLY) 2)))
(lambda (k . args)
(print-exception (current-error-port) #f k args)
(write "Skipping test.\n" (current-error-port))
@@ -32,7 +35,8 @@ exec guile -q -s "$0" "$@"
(unless (and soft (< soft *limit*))
(setrlimit 'as (if hard (min *limit* hard) *limit*) hard))))
-(define (test thunk)
+(define (test n thunk)
+ (pk 'test n)
(catch 'out-of-memory
(lambda ()
(thunk)
@@ -42,27 +46,27 @@ exec guile -q -s "$0" "$@"
(use-modules (rnrs bytevectors))
-(test (lambda ()
+(test 1 (lambda ()
;; Unhappily, on 32-bit systems, vectors are limited to 16M
;; elements. Boo. Anyway, a vector with 16M elements takes 64
;; MB, which doesn't fit into 50 MB.
(make-vector (1- (ash 1 24)))))
-(test (lambda ()
+(test 2 (lambda ()
;; Likewise for a bytevector. This is different from the above,
;; as the elements of a bytevector are not traced by GC.
(make-bytevector #e1e9)))
-(test (lambda ()
+(test 3 (lambda ()
;; This one is the kicker -- we allocate pairs until the heap
;; can't expand. This is the hardest test to deal with because
;; the error-handling machinery has no memory in which to work.
(iota #e1e8)))
-(test (lambda ()
+(test 4 (lambda ()
;; The same, but also causing allocating during the unwind
;; (ouch!)
(dynamic-wind
(lambda () #t)
- (lambda () (iota #e1e8))
- (lambda () (iota #e1e8)))))
+ (lambda () (pk 'body) (iota #e1e8))
+ (lambda () (pk 'unwind) (iota #e1e8)))))
;; Local Variables:
;; mode: scheme
[-- Attachment #3: Type: text/plain, Size: 31 bytes --]
Ideas?
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-01-20 15:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-20 15:56 test-ou Ludovic Courtès
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).