Subject: bug#42371: Grafts max out build slots without being queued

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 16 Jul 2020 18:06:24 -0400

Hi Ludo :-)

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

> Hi,
>
> Maxim Cournoyer <[email-masked]> skribis:
>
>> While working on ruby-asciidoctor-pdf, the following command failed
>> because of maxing out build users:
>>
>> ./pre-inst-env guix build --quiet --keep-going --check
>> [email-masked] gnome-shell-extension-gsconnect@33
>> [email-masked] arc-theme@20190917 [email-masked]
>> [email-masked] [email-masked] [email-masked]
>> [email-masked] [email-masked] [email-masked]
>> [email-masked] [email-masked] [email-masked] [email-masked]
>> [email-masked] [email-masked]
>> [email-masked] [email-masked]
>> [email-masked] [email-masked] --max-jobs=1
>> The following derivations will be built:
>>    /gnu/store/w5qba9nzswv7ysrlxfwcqdvrf9vsgbk6-ruby-jekyll-paginate-v2-2.0.0.drv
>>    /gnu/store/4r1ziw3cb5n5jgknd1jfsvdl46cz56f9-ruby-autoprefixer-rails-9.4.7.drv
>>    /gnu/store/2f674244hhb399p86z15zgv246sj78gr-ruby-web-console-3.7.0.drv
>>    /gnu/store/sqy6f63vzgbyk6jg1zigxvks9g365wfs-ruby-rspec-its-1.3.0.drv
>>    /gnu/store/zz34dh2q37r21r2d26k7z5rpryysc3km-ruby-sass-rails-5.0.7.drv
>>    /gnu/store/62nlbfwd2jf01nm0p0wlc9sgvn5yp6gc-ruby-fakefs-1.2.2.drv
>>    /gnu/store/pjdh08jh7pxlfm4dcz86bg5xqbjyf4lm-gnome-3.34.2.drv
>>    /gnu/store/xqdvar6gmkz28003md4w9c1mqvg0slas-arc-theme-20190917.drv
>>    /gnu/store/qwmj9b493ays4dvgkmniq61fnxg3claw-numix-gtk-theme-2.6.7.drv
>>    /gnu/store/s112ayw6qg86y7j45r5yslfl151ngvgn-ruby_version-1.0.2.drv
>> The following grafts will be made:
>>    /gnu/store/ww8blyc1nkf788jjb3anh22dylibvbah-ruby-solargraph-0.36.0.drv
>>    /gnu/store/c7bfyqfq8d7imgy8il7wzqpx3qpx4zpw-ruby-asciidoctor-pdf-1.5.3-1.f25ea78.drv
>>    /gnu/store/cf501w2kdgw6k2gv6n24ikhzww8f51x7-ruby-yard-with-tests-0.9.25.drv
>>    /gnu/store/da8hhcaj20z06f2kww0sg4y24ma034dy-js8call-2.2.0.drv
>>    /gnu/store/zn1jkg86fpji54s0pa0lfnf1dy00s2nh-wsjtx-2.2.2.drv
>>    /gnu/store/77g250mf14rskilpsggn070y4fjrbngx-keepassxc-2.6.0.drv
>>    /gnu/store/5k393vfm5qw442ya7v061q5fmjvhhcs5-warzone2100-3.4.0.drv
>>    /gnu/store/5d4h76qsr0rmbkn2c0zilyjr7mpzk5pd-mailcatcher-0.7.1.drv
>>    /gnu/store/mxm64sm569fyhdmxh6jlvdl18fwdb6f6-ruby-fast-gettext-2.0.3.drv
>>    /gnu/store/wglga3r1j6x87hqksrh5d1ra70kl729l-ruby-protobuf-3.10.3.drv
>>    /gnu/store/73nw9dxmmp8jykhmzwdpc3wk7mn81yal-gnome-shell-extension-gsconnect-33.drv
>> guix build: error: all build users are currently in use; consider
>> creating additional users and adding them to the `guixbuild' group
>
> Presumably here it’s running one job at a time, so I don’t think it can
> end up using more than one build user.
>
> What does “guix processes” return when that happens?  Could it be that
> some other Guix clients are running?
>
> Thanks,
> Ludo’.

So, I'm afraid this isn't very useful, but:

for the most part of the process, I had something like:

--8<---------------cut here---------------start------------->8---
SessionPID: 12549
ClientPID: 12540
ClientCommand: /gnu/store/0w76khfspfy8qmcpjya41chj3bgfcy0k-guile-3.0.4/bin/guile --no-auto-compile /home/maxim/.config/guix/current/bin/guix environment --pure gcc-toolchain@10 --ad-hoc coreutils strace the-silver-searcher findutils

SessionPID: 1876
ClientPID: 1868
ClientCommand: /gnu/store/6ms9q743slbyx4zj7p97sqrwx8x3dgkm-profile/bin/guile \ /home/maxim/src/guix/scripts/guix build --no-grafts --max-jobs=1 --quiet --keep-going --check [email-masked] gnome-shell-extension-gsconnect@33 [email-masked] arc-theme@20190917 [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked] [email-masked]

SessionPID: 447
ClientPID: 441
ClientCommand: /gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2/bin/guile \ /gnu/store/3f4xln2mii6cmc4c6x9138wl0bsh0fs7-guix-1.1.0-7.d445c30/bin/.guix-real publish -u guix-publish -p 80 -C gzip:3 --nar-path=nar --listen=0.0.0.0

SessionPID: 7060
ClientPID: 7039
ClientCommand: /gnu/store/0w76khfspfy8qmcpjya41chj3bgfcy0k-guile-3.0.4/bin/guile --no-auto-compile /home/maxim/.config/guix/current/bin/guix environment guix
--8<---------------cut here---------------end--------------->8---

And after the same error was printed (guix build: error: all build users are
currently in use; consider creating additional users and adding them to
the `guixbuild' group), then I had:

--8<---------------cut here---------------start------------->8---

SessionPID: 12549
ClientPID: 12540
ClientCommand: /gnu/store/0w76khfspfy8qmcpjya41chj3bgfcy0k-guile-3.0.4/bin/guile --no-auto-compile /home/maxim/.config/guix/current/bin/guix environment --pure gcc-toolchain@10 --ad-hoc coreutils strace the-silver-searcher findutils

SessionPID: 447
ClientPID: 441
ClientCommand: /gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2/bin/guile \ /gnu/store/3f4xln2mii6cmc4c6x9138wl0bsh0fs7-guix-1.1.0-7.d445c30/bin/.guix-real publish -u guix-publish -p 80 -C gzip:3 --nar-path=nar --listen=0.0.0.0

SessionPID: 7060
ClientPID: 7039
ClientCommand: /gnu/store/0w76khfspfy8qmcpjya41chj3bgfcy0k-guile-3.0.4/bin/guile --no-auto-compile /home/maxim/.config/guix/current/bin/guix environment guix
--8<---------------cut here---------------end--------------->8---

I didn't see the amount of build process going higher than than,
monitoring it every second.

I've pushed the branch I'm using to test locally here [0], hoping it'll
help to reproduce the issue somewhere else.

The command to run on this branch is:

./pre-inst-env guix build --no-grafts --max-jobs=1 --quiet --keep-going
--check [email-masked] gnome-shell-extension-gsconnect@33
[email-masked] arc-theme@20190917 [email-masked] [email-masked]
[email-masked] [email-masked] [email-masked]
[email-masked] [email-masked] [email-masked] [email-masked]
[email-masked] [email-masked] [email-masked]
[email-masked] [email-masked]
[email-masked] [email-masked]
[email-masked]

The bug is only triggered when I also pass the "--check" option.  So
you'll probably have to build the stack once without "--check", then a
second time with "--check" passed to trigger the issue (if it's
reproducible).

Thank you!

Maxim

[0]  https://gitlab.com/Apteryks/guix/-/tree/add-ruby-asciidoctor-pdf