GNU bug report logs - #28265
guix system build fails

Previous Next

Package: guix;

Reported by: Efraim Flashner <efraim <at> flashner.co.il>

Date: Mon, 28 Aug 2017 18:53:01 UTC

Severity: normal

Done: Efraim Flashner <efraim <at> flashner.co.il>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: ludo <at> gnu.org (Ludovic Courtès)
To: Christopher Baines <mail <at> cbaines.net>
Cc: 28265 <at> debbugs.gnu.org, Efraim Flashner <efraim <at> flashner.co.il>
Subject: bug#28265: guix system build fails
Date: Wed, 30 Aug 2017 11:07:21 +0200
Hello!

Christopher Baines <mail <at> cbaines.net> skribis:

> On Mon, 28 Aug 2017 21:52:32 +0300
> Efraim Flashner <efraim <at> flashner.co.il> wrote:
>
>> efraim <at> macbook42:~/workspace/guix$ time nice ./pre-inst-env guix
>> system build ~/lightweight-desktop.scm Backtrace:
>>           11 (primitive-load
>> "/home/efraim/workspace/guix/scripts/gu…") In guix/ui.scm:
>>   1331:12 10 (run-guix-command _ . _)
>> In ice-9/boot-9.scm:
>>     837:9  9 (catch _ _ #<procedure 7f4e83aea8c0 at guix/ui.scm:448…>
>> …) 837:9  8 (catch _ _ #<procedure 7f4e83aea8d8 at guix/ui.scm:536…>
>> …) In guix/scripts/system.scm:
>>    1022:8  7 (_)
>>     905:6  6 (process-action _ _ _)
>> In guix/store.scm:
>>   1441:24  5 (run-with-store _ _ #:guile-for-build _ #:system _)
>> In guix/scripts/system.scm:
>>     637:2  4 (_ _)
>> In gnu/system.scm:
>>     884:4  3 (_ _)
>> In gnu/bootloader/grub.scm:
>>    343:29  2 (grub-configuration-file #<<bootloader-configuration> …>
>> …) 207:30  1 (eye-candy #<<bootloader-configuration> bootloader: #<…>
>> …) 149:22  0 (grub-background-image #<<bootloader-configuration> bo…>
>> …)
>> 
>> gnu/bootloader/grub.scm:149:22: In procedure grub-background-image:
>> gnu/bootloader/grub.scm:149:22: In procedure struct_vtable: Wrong
>> type argument in position 1 (expecting struct): 5
>> 
>
> I tried this, and got the same error, but then I deleted all the .go
> files, re-ran make, and then tried again, and then it worked.

Yeah, this kind of error is typical of an ABI mismatch.  The reason is
that in Guile, record field accessors of SRFI-9 record types are
inlined:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,use(srfi srfi-9)
scheme@(guile-user)> (define-record-type <foo>
		       (make-foo x)
		       foo?
		       (x foo-x))
scheme@(guile-user)> ,expand (foo-x bar)
$2 = (let ((s bar))
  (if ((@@ (srfi srfi-9) eq?)
       ((@@ (srfi srfi-9) struct-vtable) s)
       <foo>)
    ((@@ (srfi srfi-9) struct-ref) s 0)
    (let ((s* s))
      ((@@ (srfi srfi-9) throw)
       'wrong-type-arg
       'foo-x
       "Wrong type argument: ~S"
       ((@@ (srfi srfi-9) list) s*)
       ((@@ (srfi srfi-9) list) s*)))))
--8<---------------cut here---------------end--------------->8---

The (struct-ref s 0) above becomes incorrect if, say, we add a field
right before ‘x’, because ‘x’ would now be at offset 1.

The safe solution here is to “make clean-go && make”.

Ludo’.




This bug report was last modified 7 years and 350 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.