GNU bug report logs - #71891
Compiler error building 3.0.10 on 32-bit platforms

Previous Next

Package: guile;

Reported by: Rob Browning <rlb <at> defaultvalue.org>

Date: Tue, 2 Jul 2024 02:10:02 UTC

Severity: important

Merged with 72215, 72913

Found in version 3.0.10

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Rob Browning <rlb <at> defaultvalue.org>
To: 71891 <at> debbugs.gnu.org
Subject: bug#71891: 3.0.10 may be broken on 32-bit architectures
Date: Mon, 01 Jul 2024 21:09:12 -0500
First noticed via https://buildd.debian.org/guile-3.0 on armel, armhf
and i386:

  https://buildd.debian.org/status/fetch.php?pkg=guile-3.0&arch=armel&ver=3.0.10-1&stamp=1719706962&raw=0
  https://buildd.debian.org/status/fetch.php?pkg=guile-3.0&arch=armhf&ver=3.0.10-1&stamp=1719706478&raw=0
  https://buildd.debian.org/status/fetch.php?pkg=guile-3.0&arch=i386&ver=3.0.10-1&stamp=1719703034&raw=0

They all failed to build like this:

  GUILE_BOOTSTRAP_STAGE=stage1 ../meta/build-env guild compile --target="i686-pc-linux-gnu" -W1 -O2 -Ono-cross-module-inlining -L "/<<PKGBUILDDIR>>/module" -o "ice-9/calling.go" "../module/ice-9/calling.scm"
  Backtrace:
  In ice-9/boot-9.scm:
    1755:12 19 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
  In system/base/compile.scm:
      69:11 18 (_)
     190:11 17 (_ #<closed: file 42e38>)
      309:6 16 (read-and-compile #<closed: file 42e70> #:from _ #:to _ #:env _ #:optimization-level _ #:warning-level _ #:opts _)
     352:28 15 (compile #<tree-il (seq (let (m) (m-182b3cf1-2) ((call (@@ (guile) define-module*) (const (language cps guile-vm reify-primitives)) (const #:filename) (const "language/cps/guile-vm/reify-primitives.scm") (const #:imports) (const (((ice-9 match)) ((language tree-il primitives) #:select ((primitive-module . tree-il:primitive-module))) ((language cps)) ((language cps utils)) ((language cps with-cps)) ((language cps intmap)) ((language bytecode)) ((system base target)) ((system bas?> ?)
     265:44 14 (_ #<tree-il (seq (let (m) (m-182b3cf1-2) ((call (@@ (guile) define-module*) (const (language cps guile-vm reify-primitives)) (const #:filename) (const "language/cps/guile-vm/reify-primitives.scm") (const #:imports) (const (((ice-9 match)) ((language tree-il primitives) #:select ((primitive-module . tree-il:primitive-module))) ((language cps)) ((language cps utils)) ((language cps with-cps)) ((language cps intmap)) ((language bytecode)) ((system base target)) ((system base type?> ?)
     261:33 13 (_ #<intmap 0-11706> #<directory (language cps guile-vm reify-primitives) 282640>)
  In language/cps/optimize.scm:
      136:2 12 (_ _ #<directory (language cps guile-vm reify-primitives) 282640>)
      111:3 11 (optimize-first-order-cps _ _)
  In language/cps/switch.scm:
      414:6 10 (optimize-branch-chains _)
  In language/cps/intmap.scm:
      519:6  9 (visit-branch #(#(#(#<intset 0-273> (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) #f) (absent) (absent) (absent) (absent) (absent) (absent) (absent) #((absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) # ?) ?) ?) ?)
      519:6  8 (visit-branch #((absent) (absent) #((absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) #<intset 3160-3259> (absent) (absent) (absent) (absent) (absent) (absent) (absent) #f) (absent) (absent) #((absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) # ?) ?) ?)
      519:6  7 (visit-branch #((absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) #<intset 3689-7729,7913-8003> (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) #f) _ 3680 _)
  In language/cps/switch.scm:
      99:36  6 (fold-branch-chains #<intmap 0-8003> _ _ #<procedure optimize-branch-chain (var exit tests cps)> _)
      343:8  5 (optimize-branch-chain 3346 7427 (6771 6772 6773 6901 7029 7157 7285) _)
  In ice-9/boot-9.scm:
     260:13  4 (for-each #<procedure 429618 at language/cps/switch.scm:343:18 (expr)> _)
  In language/cps/switch.scm:
     340:32  3 (_ (u64-imm-< . 7428))
  In language/cps/guile-vm.scm:
      89:31  2 (target-symbol-hash _)
      41:18  1 (jenkins-lookup3-hashword2 "u64-imm-<")
  In ice-9/boot-9.scm:
    1676:22  0 (raise-exception _ #:continuable? _)

  ice-9/boot-9.scm:1676:22: In procedure raise-exception:
  Value out of range 0 to< 18446744073709551615: -505802029
  make[4]: *** [Makefile:2515: language/cps/guile-vm/reify-primitives.go] Error 1

Investigation on an i386 host, and then a git bisect suggested that this
might be relevant (i.e. the "bad" commit bisect landed on):

  commit d579848cb5d65440af5afd9c8968628665554c22

    Fix bug lowering logand/immediate to ulogand/immediate
    
    * module/language/cps/specialize-numbers.scm (logand/immediate): Define
    a sigbits handler.
    (specialize-operations): Require logand/immediate operand to be u64 to
    lower to ulogand/immediate.  Shouldn't be necessary but even if only u64
    bits are used, negative fixnums will have the sign bit set, which trips
    up further unboxed uses which error if the operand to `scm->u64` is
    negative.
    * module/language/cps/type-fold.scm (rem): Emit logand/immediate.

I also found some other issues I have patches for that I'll propose
separately, e.g. test-hashing needs a 32-bit "expected", etc.

Hope this helps, and happy to assist if I can.

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4




This bug report was last modified 231 days ago.

Previous Next


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