unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* bug#71891: 3.0.10 may be broken on 32-bit architectures
@ 2024-07-02  2:09 Rob Browning
  2024-09-27 20:40 ` bug#71891: bug#72913: Guile 3.0.10 fails to build for powerpc-darwin (3.0.9 built earlier) Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Rob Browning @ 2024-07-02  2:09 UTC (permalink / raw)
  To: 71891


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





^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#71891: bug#72913: Guile 3.0.10 fails to build for powerpc-darwin (3.0.9 built earlier)
  2024-07-02  2:09 bug#71891: 3.0.10 may be broken on 32-bit architectures Rob Browning
@ 2024-09-27 20:40 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2024-09-27 20:40 UTC (permalink / raw)
  To: Rob Browning; +Cc: 71891-done, 72913-done

Hi,

Rob Browning <rlb@defaultvalue.org> skribis:

>   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 believe this was fixed by
<https://git.savannah.gnu.org/cgit/guile.git/commit/?id=aff9ac968840e9c86719fb613bd2ed3c39b9905c>
(see the neat explanation at
<https://wingolog.org/archives/2024/09/26/needed-bits-optimizations-in-guile>).

Confirmed by CI: <https://ci.guix.gnu.org/eval/1667191>.

Thanks,
Ludo’.





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-09-27 20:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-02  2:09 bug#71891: 3.0.10 may be broken on 32-bit architectures Rob Browning
2024-09-27 20:40 ` bug#71891: bug#72913: Guile 3.0.10 fails to build for powerpc-darwin (3.0.9 built earlier) Ludovic Courtès

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).