unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* 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).