Subject: Re: bug#31023: --verbosity=4 breaks build?

From: [email-masked] (Ludovic Courtès)
Date: Fri, 06 Apr 2018 15:12:58 +0200

Hello,

Martin Castillo <[email-masked]> skribis:

> guix build grep --no-substitutes -M 1 --verbosity=4 2>builderr
> # I aborted the first after a few seconds

You’re right about --verbosity=4 interrupting builds, I get:

--8<---------------cut here---------------start------------->8---
$ guix build --verbosity=4 vim --no-substitutes
[…]
|   |   building path(s) `/gnu/store/i9smsibsawg6y7bby25iha3q1dkaq7w7-vim-8.0.1428'
|   |   |   found build user `guixbuilder01'
|   |   |   found build user `guixbuilder02'
|   |   |   found build user `guixbuilder03'
|   |   |   found build user `guixbuilder04'
|   |   |   found build user `guixbuilder05'
|   |   |   found build user `guixbuilder06'
|   |   |   found build user `guixbuilder07'
|   |   |   found build user `guixbuilder08'
|   |   |   found build user `guixbuilder09'
|   |   |   found build user `guixbuilder10'
|   |   |   trying user `guixbuilder01'
|   |   |   killing all processes running under uid `30001'
|   |   |   setting up chroot environment in `/gnu/store/ld1kzfb1jyh0jw6yxhprcd3zvj57c986-vim-8.0.1428.drv.chroot'
|   |   |   executing builder `/gnu/store/z2i9srf64afxina1g2bd7k7y8cjqsxrr-guile-2.2.3/bin/guile'
|   killing all processes running under uid `30001'
|   recursively deleting path `/tmp/guix-build-vim-8.0.1428.drv-0'
|   recursively deleting path `/gnu/store/ld1kzfb1jyh0jw6yxhprcd3zvj57c986-vim-8.0.1428.drv.chroot'
|   lock released on `/gnu/store/i9smsibsawg6y7bby25iha3q1dkaq7w7-vim-8.0.1428.lock'
|   building of `/gnu/store/ld1kzfb1jyh0jw6yxhprcd3zvj57c986-vim-8.0.1428.drv': goal destroyed
guix build: error: build failed: |   |   |   bind mounting `/dev/full' to `/gnu/store/ld1kzfb1jyh0jw6yxhprcd3zvj57c986-vim-8.0.1428.drv.chroot/dev/full'
--8<---------------cut here---------------end--------------->8---

IOW, the debugging message is interpreted as an error message.

Indeed, if we strace it, we see:

--8<---------------cut here---------------start------------->8---
read(13, "gmlo\0\0\0\0", 8)             = 8
read(13, "_\0\0\0\0\0\0\0", 8)          = 8
read(13, "|   building of `/gnu/store/ld1kzfb1jyh0jw6yxhprcd3zvj57c986-vim-8.0.1428.drv': goal destroyed\n", 95) = 95
read(13, "\0", 1)                       = 1
write(2, "|   building of `/gnu/store/ld1kzfb1jyh0jw6yxhprcd3zvj57c986-vim-8.0.1428.drv': goal destroyed\n", 95) = 95
read(13, "ptxc\0\0\0\0", 8)             = 8
read(13, "w\0\0\0\0\0\0\0", 8)          = 8
read(13, "|   |   |   bind mounting `/dev/full' to `/gnu/store/ld1kzfb1jyh0jw6yxhprcd3zvj57c986-vim-8.0.1428.drv.chr--8<---------------cut here---------------end--------------->8---

Normal messages arrive with the “gmlo” prefix, but the “bind mounting”
message arrives with the “ptxc” prefix, which (guix store) interprets as
‘%stderr-error’ and raises an exception right away.

Not sure why we get that “ptxc” prefix.

Ludo’.