Hi, Ludovic Courtès skribis: >> chino@asus-laptop:~$ guix build opencv --substitute-urls="https://mirror.sjtu.edu.cn/guix https://mirror.guix.org.cn https://mirror.c1r3u.xyz https://ci.guix.gnu.org" >> substitute: updating substitutes from 'https://mirror.sjtu.edu.cn/guix'... 100.0% >> substitute: >> guix build: error: got unexpected path `Backtrace:' from substituter >> ``` > > Commit ee3226e9d54891c7e696912245e4904435be191c addresses the > error-reporting issue: now the backtrace will be properly displayed (we > still need to update the ‘guix’ package before you can deploy the fix.) This commit did the job, but there would still be cases where error messages would end up on file descriptor 2 (not surprisingly) and which the daemon would wrongfully interpret as a status message from ‘guix substitute’, leading to obscure crashes. Sébastien gives an example at : guix install: error: got unexpected path `/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)' from substituter The attached patch swaps use of file descriptors 2 and 4 of ‘guix substitute’: FD 2 is now used for regular error reporting, while FD 4 is used to communicate responses to the daemon. This is more natural and avoids the kind of problem discussed above. I’ll push this change if there are no objections. Thanks, Ludo’.