Subject: bug#31740: closed (Re: bug#27476: libguile/memoize.c is not thread safe, so syntax parameter expansion is not thread-safe)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 17 Dec 2020 15:13:03 +0000

Your bug report

#27476: guix pull failed with syntax error.

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
27476: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=27476
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#27476: libguile/memoize.c is not thread safe, so syntax parameter expansion is not thread-safe
From: Ludovic Courtès <[email-masked]>
To: Andy Wingo <[email-masked]>
Cc: [email-masked]
Date: Thu, 17 Dec 2020 16:12:17 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi!

For the record, this was fixed in
61a8c9300daeb730fe5094f889bf13241942be84, which made it into 2.9/3.0,
and 2dccec9f553776656d9378e2315ad32d2e55286b, which made it into 2.2.5.

Closing!  :-)

Ludo’.

Subject: guix pull failed with syntax error.
From: Fis Trivial <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Wed, 6 Jun 2018 21:15:49 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

$guix --version

guix (GNU Guix) 909301591d21d3879276e4ede3cebdcc867184f2
Copyright (C) 2018 the Guix authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Actually this is the second time I bumped into this bug. It seems
non-deterministic, try it a few times might make it right. Here is the
the error message with downloading and substituting stripped out:

Updating from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Building from Git commit 116ca65b583ba4e404289f1481dc3a3ffef1c3dd...
substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
The following derivations will be built:
   /gnu/store/r195brsmnb3jgqicj7ma681yaschgyaj-compute-guix-derivation.drv
   /gnu/store/facfypp0m3g948fxzs9xg07fa45kckvk-module-import.drv
   /gnu/store/ghsnz9qn4ycg906a14glcxmxmmmh44vx-module-import-compiled.drv
;;; Failed to autoload make-session in (gnutls):
;;; missing interface for module (gnutls)
;;; Failed to autoload connection-end/client in (gnutls):
;;; missing interface for module (gnutls)
;;; ./gnu/packages.scm:92:33: warning: non-literal format string
;;; ./gnu/packages.scm:108:16: warning: non-literal format string
;;; Failed to autoload make-session in (gnutls):
;;; missing interface for module (gnutls)
;;; Failed to autoload connection-end/client in (gnutls):
;;; missing interface for module (gnutls)
;;; Failed to autoload make-session in (gnutls):
;;; missing interface for module (gnutls)
;;; Failed to autoload make-session in (gnutls):
;;; missing interface for module (gnutls)
;;; Failed to autoload connection-end/client in (gnutls):
;;; missing interface for module (gnutls)
;;; ./guix/build/download.scm:176:4: warning: possibly unbound variable `set-certificate-credentials-x509-trust-data!'
;;; ./guix/build/download.scm:182:15: warning: possibly unbound variable `make-certificate-credentials'
;;; ./guix/build/download.scm:191:20: warning: possibly unbound variable `x509-certificate-format/pem'
;;; ./guix/build/download.scm:199:2: warning: possibly unbound variable `session-peer-certificate-chain'
;;; ./guix/build/download.scm:201:5: warning: possibly unbound variable `import-x509-certificate'
;;; ./guix/build/download.scm:201:5: warning: possibly unbound variable `x509-certificate-format/der'
;;; ./guix/build/download.scm:210:10: warning: possibly unbound variable `x509-certificate-matches-hostname?'
;;; ./guix/build/download.scm:215:2: warning: possibly unbound variable `peer-certificate-status'
;;; ./guix/build/download.scm:234:13: warning: possibly unbound variable `certificate-status->string'
;;; ./guix/build/download.scm:229:20: warning: possibly unbound variable `x509-certificate-dn'
;;; ./guix/build/download.scm:246:18: warning: possibly unbound variable `make-session'
;;; ./guix/build/download.scm:246:18: warning: possibly unbound variable `connection-end/client'
;;; ./guix/build/download.scm:255:8: warning: possibly unbound variable `set-session-server-name!'
;;; ./guix/build/download.scm:255:8: warning: possibly unbound variable `server-name-type/dns'
;;; ./guix/build/download.scm:259:4: warning: possibly unbound variable `set-session-transport-fd!'
;;; ./guix/build/download.scm:260:4: warning: possibly unbound variable `set-session-default-priority!'
;;; ./guix/build/download.scm:266:4: warning: possibly unbound variable `set-session-priorities!'
;;; ./guix/build/download.scm:268:4: warning: possibly unbound variable `set-session-credentials!'
;;; ./guix/build/download.scm:272:34: warning: possibly unbound variable `make-certificate-credentials'
;;; ./guix/build/download.scm:280:8: warning: possibly unbound variable `handshake'
;;; ./guix/build/download.scm:282:15: warning: possibly unbound variable `error/warning-alert-received'
;;; ./guix/build/download.scm:287:23: warning: possibly unbound variable `alert-description->string'
;;; ./guix/build/download.scm:287:50: warning: possibly unbound variable `alert-get'
;;; ./guix/build/download.scm:288:15: warning: possibly unbound variable `handshake'
;;; ./guix/build/download.scm:303:18: warning: possibly unbound variable `session-record-port'
;;; Failed to autoload make-session in (gnutls):
;;; missing interface for module (gnutls)
;;; Failed to autoload make-session in (gnutls):
;;; missing interface for module (gnutls)
;;; Failed to autoload connection-end/client in (gnutls):
;;; missing interface for module (gnutls)
;;; ./guix/discovery.scm:89:22: warning: non-literal format string
;;; ./guix/ui.scm:168:5: warning: non-literal format string
;;; ./guix/ui.scm:313:2: warning: non-literal format string
;;; ./guix/ui.scm:331:22: warning: non-literal format string
;;; ./guix/ui.scm:359:13: warning: non-literal format string
;;; ./guix/ui.scm:352:7: warning: non-literal format string
;;; ./guix/ui.scm:347:11: warning: non-literal format string
;;; ./guix/ui.scm:383:7: warning: non-literal format string
;;; ./guix/ui.scm:467:2: warning: non-literal format string
;;; ./guix/ui.scm:469:2: warning: non-literal format string
;;; ./guix/ui.scm:577:22: warning: non-literal format string
;;; ./guix/ui.scm:580:22: warning: non-literal format string
;;; ./guix/ui.scm:690:13: warning: non-literal format string
;;; ./guix/ui.scm:865:14: warning: non-literal format string
;;; ./guix/ui.scm:885:14: warning: non-literal format string
;;; ./guix/ui.scm:1389:18: warning: non-literal format string
;;; ./guix/ui.scm:1399:10: warning: non-literal format string
;;; ./guix/ui.scm:1442:2: warning: non-literal format string
;;; ./guix/ui.scm:1458:2: warning: non-literal format string
;;; ./guix/ui.scm:1488:2: warning: non-literal format string
;;; ./guix/ui.scm:1517:2: warning: non-literal format string
;;; ./guix/ui.scm:1520:2: warning: non-literal format string
;;; ./guix/ui.scm:1539:8: warning: non-literal format string
;;; ./guix/ui.scm:1577:5: warning: non-literal format string
;;; ./guix/ui.scm:1569:5: warning: non-literal format string
substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%%
substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%%

........ (stripped out) ...........

[ 1/ 6] Compiling './guix/build/compile.scm'...
[ 2/ 6] Compiling './guix/build/utils.scm'...
[ 3/ 6] Compiling './guix/memoization.scm'...
[ 4/ 6] Compiling './guix/modules.scm'...
[ 5/ 6] Compiling './guix/profiling.scm'...
[ 6/ 6] Compiling './guix/sets.scm'...
compiling...	100.0% of 1 files
compiling...	 10.0% of 40 filesIn ice-9/psyntax.scm:
  1679:45 19 (parse _ _ _ _ _ _ _)
In ice-9/boot-9.scm:
   222:17 18 (map1 (((("l-10a3c941d34314a1-35bb" macro . #<procedure 197b840 at ice-9/eval.scm:333:13 (a)>) ("placeholder" placeholder) ("l-10a3c941d34314a1-35b7" lexical . #) ("l-10?" . #) ?) . #)))
In ice-9/psyntax.scm:
  2338:44 17 (expand-let _ _ _ ((line . 1347) (column . 0) (filename . "guix/store.scm")) (hygiene guix store) #<procedure build-let (src ids vars val-exps body-exp)> _ _ ((#<syntax match-drop?> ?)))
  1679:45 16 (parse _ _ _ _ _ _ _)
In ice-9/boot-9.scm:
   222:17 15 (map1 (((("placeholder" placeholder) ("l-10a3c941d34314a1-35d3" lexical . tail-10a3c941d34314a1-35d4) ("l-10a3c941d34314a1-35bb" macro . #<procedure 197b840 at ice-9/eval.scm:?>) ?) ?)))
In ice-9/psyntax.scm:
  1484:23 14 (_ _ _)
In ice-9/boot-9.scm:
   222:29 13 (map1 (#<syntax (#<syntax mproc> #<syntax head>)> #<syntax (#<syntax lambda> (#<syntax result>) (#<syntax if> #<syntax result> (#<syntax return> #<syntax result>) (#<syntax loop> #<?>))
   222:17 12 (map1 (#<syntax (#<syntax lambda> (#<syntax result>) (#<syntax if> #<syntax result> (#<syntax return> #<syntax result>) (#<syntax loop> #<syntax tail>)))>))
In ice-9/psyntax.scm:
  1789:11 11 (lp ((#<syntax if> #<syntax result> (#<syntax return> #<syntax result>) (#<syntax loop> #<syntax tail>))) ())
  1679:45 10 (parse _ _ _ _ _ _ _)
In ice-9/boot-9.scm:
   222:17  9 (map1 (((("placeholder" placeholder) ("l-10a3c941d34314a1-35f3" lexical . result-10a3c941d34314a1-35f2) ("placeholder" placeholder) ("l-10a3c941d34314a1-35d3" lexical . #) # # ?) . #)))
In ice-9/psyntax.scm:
  1407:23  8 (_ _ (#<syntax return> #<syntax result>) (#<syntax loop> #<syntax tail>))
  1348:32  7 (syntax-type (#<syntax return> #<syntax result>) (("placeholder" placeholder) ("l-10a3c941d34314a1-35f3" lexical . result-10a3c941d34314a1-35f2) ("placeholder" placeholder) (# . #) ?) ?)
compiling...	 12.5% of 40 files  1559:32  6 (expand-macro #<procedure 1a53c00 at ice-9/eval.scm:333:13 (a)> _ _ _ _ _ _)
In ice-9/boot-9.scm:
   752:25  5 (dispatch-exception _ _ _)
   751:25  4 (dispatch-exception 1 syntax-error (return "return used outside of 'with-monad'" ((line . 1347) (column . 0) (filename . "guix/store.scm")) (return result) #f))
In ./guix/build/compile.scm:
    129:6  3 (_ _ . _)
In ice-9/boot-9.scm:
    829:9  2 (catch #t #<procedure 1ae6e80 at ./guix/build/compile.scm:129:6 ()> #<procedure 7ffff2315810 at ./guix/build/compile.scm:129:6 args> _)
In ./guix/build/compile.scm:
   132:21  1 (_)
In unknown file:
           0 (make-stack #t)
./guix/build/compile.scm:132:21: Syntax error:
guix/store.scm:1348:0: return: return used outside of 'with-monad' in form (return result)
builder for `/gnu/store/9qm694macj2s9a528nshbzgqca19njdx-guix-core.drv' failed with exit code 1
cannot build derivation `/gnu/store/fjvfl5d1v6jwlf9r8ajaifxp3zn7a4w1-guix-116ca65b5.drv': 1 dependencies couldn't be built
guix pull: error: build failed: build of `/gnu/store/fjvfl5d1v6jwlf9r8ajaifxp3zn7a4w1-guix-116ca65b5.drv' failed

----------------------------------------------------------------------

A second pull succeeded:

$ guix pull
Updating from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Building from Git commit 116ca65b583ba4e404289f1481dc3a3ffef1c3dd...
Computing Guix derivation for 'x86_64-linux'... |
The following derivations will be built:
   /gnu/store/fjvfl5d1v6jwlf9r8ajaifxp3zn7a4w1-guix-116ca65b5.drv
   /gnu/store/9qm694macj2s9a528nshbzgqca19njdx-guix-core.drv
   /gnu/store/g04imaadhllvb0qp7s0h68nzy47h62pn-guix-system.drv
   /gnu/store/ggc1i9irm2qqkkqnari31hah0i3x2syy-guix-extra.drv
   /gnu/store/hgp4i9sq96j94hlblqiamdsg5h4dhxdc-guix-packages-base.drv
   /gnu/store/jacwncra81r180xmvxhda8hlaifnga1p-guix-packages.drv
   /gnu/store/x6wd9ny8r4pg73hmbv2p2m1m1qp711rq-guix-cli.drv
compiling...	100.0% of 40 files
loading...	 97.2% of 109 filesrandom seed for tests: 1528319365
compiling...	100.0% of 109 files
compiling...	100.0% of 229 files
compiling...	100.0% of 179 files
compiling...	100.0% of 66 files
compiling...	100.0% of 37 files
updated GNU Guix successfully deployed under `/home/fis/.config/guix/latest'