Subject: bug#49439: grafts cause “guix environment” to get killed with OOM

From: Sarah Morgensen <[email-masked]>
Date: Thu, 22 Jul 2021 21:59:21 -0700

Hello,

Ricardo Wurmus <[email-masked]> writes:

> With a recent version of Guix, “guix environment” will not 
> terminate on its own, keeps the CPU busy, and gets killed when the 
> system eventually runs out of memory.
>
> $ guix describe -f channels
>
> (list (channel
>         (name 'guix)
>         (url "/home/rekado/dev/gx/branches/master")
>         (commit
>           "685cfdec94e5e48c4ad28de53466a28dfc258edb")))
>
>
> $ guix environment pigx-scrnaseq
> [wait until it gets killed]

I can reproduce this with pigx-scrnaseq as well a number of other
packages (listed below).

$ ./pre-inst-env guix describe -f channels
(list (channel
        (name 'guix)
        (url "/home/sarah/guix")
        (commit
          "3217a04b0352c2dd13323257b369604eeabfccc3")))

Does not complete within 5 minutes:
package            # inputs  # transitive inputs
                                 (from package-transitive-inputs)
pigx-chipseq       48        338
pigx-scrnaseq      41        321
r-cellchat         34        110
pigx-rnaseq        34        343
pigx-bsseq         32        358
pigx-sars-cov2-ww  25        261
r-circus           16        134

Does complete:
r-chipseq          6         37     completes in >2m
r-shortread        17        36     completes in >1m
python-scanpy      25        113    completes in <15s

I suspect it has something to do with the number of transitive inputs,
because it is so prevalent with these R packages, which all use
propagated inputs. However... python-scanpy succeeds in under 15
seconds, and it has more transitive inputs than r-chipseq.

Can we reproduce this with a large number of low-transitivity packages
directly on the command line?

>
> The problem disappears when grafts are disabled:
>
> $ guix environment --no-grafts pigx-scrnaseq
> $ [env] yay!

--
Sarah