Subject: bug#27476: guix pull fails on powerful server

From: Ricardo Wurmus <[email-masked]>
Date: Tue, 29 Jan 2019 11:07:15 +0100

Ludovic Courtès <[email-masked]> writes:

> [email-masked] (Ludovic Courtès) skribis:
>
>> I can’t reproduce this with current Guile ‘stable-2.2’, following Andy’s
>> weak-table rewrite¹, so this might have been a weak-table bug showing up
>> under memory pressure.
>
> With Guile 2.2.3 a similar program triggers a crash very quickly:
>
> --8<---------------cut here---------------start------------->8---
> $ cat ../guile-debugging/syntax-parms.scm
> (use-modules (ice-9 threads)
>              (srfi srfi-1)
>              (guix monads)
>              (guix store)
>              (system base compile))
>
> (compile #f)                                      ;load modules
>
> (define threads
>   (unfold (lambda (x) (> x 100))
>           (lambda (x)
>             (call-with-new-thread
>              (lambda ()
>                (while #t
>                  (compile
>                   '(mlet %store-monad ((x y))
>                      (mbegin %store-monad
>                        (return x)
>                        (return y)))
>                   #:env (current-module)
>                   #:from 'scheme
>                   #:to 'tree-il)))))
>           1+
>           0))
>
> (for-each join-thread threads)
[…]
> --8<---------------cut here---------------end--------------->8---

I tried this with guile 2.2.4 on my laptop with 4 CPUs (according to
lscpu) and I did not get a crash even after waiting for several minutes.

--
Ricardo