Bug 2294649

Summary: guile30-3.0.10 is available
Product: [Fedora] Fedora Reporter: Upstream Release Monitoring <upstream-release-monitoring>
Component: guile30Assignee: Tomas Korbar <tkorbar>
Status: NEW --- QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: pebolle, tkorbar, v.pupillo
Target Milestone: ---Keywords: FutureFeature, Triaged
Target Release: ---Flags: pebolle: needinfo? (tkorbar)
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Upstream Release Monitoring 2024-06-27 20:58:11 UTC
Releases retrieved: 3.0.10
Upstream release that is considered latest: 3.0.10
Current version/release in rawhide: 3.0.9-1.fc41
URL: https://www.gnu.org/software/guile/

Please consult the package updates policy before you issue an update to a stable branch: https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/


More information about the service that created this bug can be found at: https://docs.fedoraproject.org/en-US/package-maintainers/Upstream_Release_Monitoring


Please keep in mind that with any upstream change, there may also be packaging changes that need to be made. Specifically, please remember that it is your responsibility to review the new version to ensure that the licensing is still correct and that no non-free or legally problematic items have been added upstream.


Based on the information from Anitya: https://release-monitoring.org/project/1277/


To change the monitoring settings for the project, please visit:
https://src.fedoraproject.org/rpms/guile30

Comment 1 v.pupillo 2024-12-16 21:02:59 UTC
Please update to the new release.
Thanks.

Comment 2 Paul Bolle 2025-07-11 16:58:28 UTC
Apparently we're still stuck on 3.0.9 because 3.0.10 doesn't build on i686: commit c28588 ("Fix FTBFS and rebase to version 3.0.10") on https://src.fedoraproject.org/rpms/guile30. But I was unable to find the logs regarding those failed builds. Are they still available?

In the mean time: would it be feasible to (temporarily) drop the i686 builds (say, with "ExcludeArch: %{ix86}")?

Please note that both PHP and Java stopped shipping i686 builds altogether: https://fedoraproject.org/wiki/Changes/php_no_32_bit and https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs. So there's precedent here.

Comment 3 v.pupillo 2025-07-11 18:15:07 UTC
It seems strange to me, in Guile's sources I see that support for i686 is there, and in the NEWS file it doesn't say anything about the end of support for i686. Also I see that Gentoo has the build for i686.
Thanks.

Comment 4 Paul Bolle 2025-08-08 21:25:13 UTC
It's been four weeks since my comment #2 and, more importantly, over year since 3.0.10 was released. @v.pupillo: should we start the procedure described in the "Non-responsive maintainer policy" (https://docs.fedoraproject.org/en-US/fesco/Policy_for_nonresponsive_package_maintainers)?

Comment 5 v.pupillo 2025-08-08 21:53:44 UTC
Ok, start the procedure "Non-responsive maintainer policy".
Thank you.

Comment 6 Paul Bolle 2025-09-08 16:41:03 UTC
I've tried to rebuild the i686 package for 3.0.10 locally. (x86_64 built just fine.) I _hope_ I installed all the needed i686 packages - that required a lot of trial and error. The build failed with three Backtraces.

@tkorbar: does this wall of text - edited down to the relevant parts, but still impressive - look familiar?

[...]
make[2]: Entering directory '/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/stage1'
GUILE_BOOTSTRAP_STAGE=stage1 ../meta/build-env guild compile --target="x86_64-redhat-linux-gnu" -W1 -O2 -Ono-cross-module-inlining -L "/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/module" -o "ice-9/common-list.go" "../module/ice-9/common-list.scm"
Backtrace:
In ice-9/boot-9.scm:
  1755:12 19 (with-exception-handler #<procedure 146988 at ice-9/boot-9.scm:1797:7 (exn)> #<procedure 171d60 at system/base/compile.scm:68:9 ()> #:unwind? _ #:unwind-for-type _)
In system/base/compile.scm:
    69:11 18 (_)
   190:11 17 (_ #<closed: file d2e38>)
    309:6 16 (read-and-compile #<closed: file d2e70> #: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 (ice-9 common-list)) (const #:filename) (const "ice-9/common-list.scm") (const #:exports) (const (adjoin union intersection set-difference reduce-init reduce some every notany notevery count-if find-if member-if remove-if remove-if-not delete-if! delete-if-not! butlast and? or? has-duplicates? pick pick-mappings uniq)) (const #:declarative?) (const #t))) (seq (call (@@ (guile) set-current-?> ?)
   265:44 14 (_ #<tree-il (seq (let (m) (m-182b3cf1-2) ((call (@@ (guile) define-module*) (const (ice-9 common-list)) (const #:filename) (const "ice-9/common-list.scm") (const #:exports) (const (adjoin union intersection set-difference reduce-init reduce some every notany notevery count-if find-if member-if remove-if remove-if-not delete-if! delete-if-not! butlast and? or? has-duplicates? pick pick-mappings uniq)) (const #:declarative?) (const #t))) (seq (call (@@ (guile) set-current-module?> ?)
   261:33 13 (_ #<intmap 0-1960> #<directory (ice-9 common-list) 169000>)
In language/cps/optimize.scm:
    136:2 12 (_ _ #<directory (ice-9 common-list) 169000>)
    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-155> (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 #(#(#<intset 0-155> (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  7 (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) (absent) (absent) #<intset 156-199> (absent) (absent) (absent) #f) _ 128 _)
In language/cps/switch.scm:
    99:36  6 (fold-branch-chains #<intmap 0-1831> _ _ #<procedure optimize-branch-chain (var exit tests cps)> _)
    343:8  5 (optimize-branch-chain 122 181 (158 159 160 161 162 163 164 165 167 169 171 173 175 177 179) _)
In ice-9/boot-9.scm:
   260:13  4 (for-each1 ((count-if . 170) (delete-if! . 183) (delete-if-not! . 184) (intersection . 178) (notany . 174) (notevery . 172) (or? . 186) (pick . 187) (pick-mappings . 188) (remove-if . 168) (remove-if-not . 166) (set-difference . 176) (uniq . 189)))
In language/cps/switch.scm:
   340:32  3 (_ (count-if . 170))
In language/cps/guile-vm.scm:
    89:31  2 (target-symbol-hash _)
    41:18  1 (jenkins-lookup3-hashword2 "count-if")
In ice-9/boot-9.scm:
  1676:22  0 (lp 0)

ice-9/boot-9.scm:1676:22: In procedure lp:
Value out of range 0 to< 18446744073709551615: -432225964
make[2]: *** [Makefile:2519: ice-9/common-list.go] Error 1
make[2]: Leaving directory '/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/stage1'
make[2]: *** Waiting for unfinished jobs....
make[2]: Entering directory '/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/stage1'
GUILE_BOOTSTRAP_STAGE=stage1 ../meta/build-env guild compile --target="x86_64-redhat-linux-gnu" -W1 -O2 -Ono-cross-module-inlining -L "/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/module" -o "ice-9/control.go" "../module/ice-9/control.scm"
Backtrace:
In ice-9/boot-9.scm:
  1755:12 19 (with-exception-handler #<procedure 146988 at ice-9/boot-9.scm:1797:7 (exn)> #<procedure 171d60 at system/base/compile.scm:68:9 ()> #:unwind? _ #:unwind-for-type _)
In system/base/compile.scm:
    69:11 18 (_)
   190:11 17 (_ #<closed: file d2e38>)
    309:6 16 (read-and-compile #<closed: file d2e70> #: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 (ice-9 control)) (const #:filename) (const "ice-9/control.scm") (const #:exports) (const (% abort shift reset shift* reset* call-with-escape-continuation call/ec let-escape-continuation let/ec suspendable-continuation?)) (const #:re-exports) (const (call-with-prompt abort-to-prompt default-prompt-tag make-prompt-tag)) (const #:declarative?) (const #t))) (seq (call (@@ (guile) set-current-m?> ?)
   265:44 14 (_ #<tree-il (seq (let (m) (m-182b3cf1-2) ((call (@@ (guile) define-module*) (const (ice-9 control)) (const #:filename) (const "ice-9/control.scm") (const #:exports) (const (% abort shift reset shift* reset* call-with-escape-continuation call/ec let-escape-continuation let/ec suspendable-continuation?)) (const #:re-exports) (const (call-with-prompt abort-to-prompt default-prompt-tag make-prompt-tag)) (const #:declarative?) (const #t))) (seq (call (@@ (guile) set-current-module)?> ?)
   261:33 13 (_ #<intmap 0-1142> #<directory (ice-9 control) 169c30>)
In language/cps/optimize.scm:
    136:2 12 (_ _ #<directory (ice-9 control) 169c30>)
    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-129> (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) #<intset 130-153> (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) # ?) ?) ?) ?)
    519:6  8 (visit-branch #(#(#<intset 0-129> (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) #<intset 130-153> (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (#) # ?) ?) ?)
    519:6  7 (visit-branch #((absent) (absent) #<intset 130-153> (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) (absent) #<intset 154-734,1124-1129> (absent) (absent) (absent) (absent) (absent) #f) _ 128 _)
In language/cps/switch.scm:
    99:36  6 (fold-branch-chains #<intmap 0-1129> _ _ #<procedure optimize-branch-chain (var exit tests cps)> _)
    343:8  5 (optimize-branch-chain 100 151 (132 134 136 138 140) _)
In ice-9/boot-9.scm:
   260:13  4 (for-each1 ((call-with-escape-continuation . 135) (call/ec . 133) (reset* . 139) (shift* . 137)))
In language/cps/switch.scm:
   340:32  3 (_ (call-with-escape-continuation . 135))
In language/cps/guile-vm.scm:
    89:31  2 (target-symbol-hash _)
    41:18  1 (jenkins-lookup3-hashword2 "call-with-escape-continuation")
In ice-9/boot-9.scm:
  1676:22  0 (lp 0)

ice-9/boot-9.scm:1676:22: In procedure lp:
Value out of range 0 to< 18446744073709551615: -512332661
make[2]: *** [Makefile:2519: ice-9/control.go] Error 1
make[2]: Leaving directory '/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/stage1'
[...]
make[2]: Entering directory '/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/stage1'
GUILE_BOOTSTRAP_STAGE=stage1 ../meta/build-env guild compile --target="x86_64-redhat-linux-gnu" -W1 -O2 -Ono-cross-module-inlining -L "/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/module" -o "ice-9/custom-ports.go" "../module/ice-9/custom-ports.scm"
Backtrace:
In ice-9/boot-9.scm:
  1755:12 19 (with-exception-handler #<procedure 146988 at ice-9/boot-9.scm:1797:7 (exn)> #<procedure 171d60 at system/base/compile.scm:68:9 ()> #:unwind? _ #:unwind-for-type _)
In system/base/compile.scm:
    69:11 18 (_)
   190:11 17 (_ #<closed: file d2e38>)
    309:6 16 (read-and-compile #<closed: file d2e70> #: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 (ice-9 custom-ports)) (const #:filename) (const "ice-9/custom-ports.scm") (const #:declarative?) (const #f) (const #:imports) (const (((ice-9 match)) ((ice-9 textual-ports)) ((srfi srfi-9)))) (const #:exports) (const (make-custom-port)))) (seq (call (@@ (guile) set-current-module) (lexical m m-182b3cf1-2)) (lexical m m-182b3cf1-2))) (seq (define %make-custom-port (toplevel error)) (seq (de?> ?)
   265:44 14 (_ #<tree-il (seq (let (m) (m-182b3cf1-2) ((call (@@ (guile) define-module*) (const (ice-9 custom-ports)) (const #:filename) (const "ice-9/custom-ports.scm") (const #:declarative?) (const #f) (const #:imports) (const (((ice-9 match)) ((ice-9 textual-ports)) ((srfi srfi-9)))) (const #:exports) (const (make-custom-port)))) (seq (call (@@ (guile) set-current-module) (lexical m m-182b3cf1-2)) (lexical m m-182b3cf1-2))) (seq (define %make-custom-port (toplevel error)) (seq (define %?> ?)
   261:33 13 (_ #<intmap 0-3155> #<directory (ice-9 custom-ports) 1b8000>)
In language/cps/optimize.scm:
    136:2 12 (_ _ #<directory (ice-9 custom-ports) 1b8000>)
    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-401> (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) #<intset 2081-2086> (absent) (absent) (absent) (absent) (absent) #<intset 2087-2091> (absent) (absent) (absent) (absent) #<intset 2092-2099> (absent) (absent) (absent) (absent) (absent) (absent) (absent) #<intset 2100-2107> (absent) (absent) (absent) (absent) (absent) (absent) (absent) #<intset 2108-2115> (absent) (absent) (absent) #f) #((absent) (absent) (absent) (absent) #<intset 2116-2123> (absent) (absent) (absent) (absent) (absent) # ?) ?) ?)
    519:6  7 (visit-branch #((absent) (absent) #<intset 2594-2759> (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) _ 2592 _)
In language/cps/switch.scm:
    99:36  6 (fold-branch-chains #<intmap 0-2769> _ _ #<procedure optimize-branch-chain (var exit tests cps)> _)
    343:8  5 (optimize-branch-chain 1858 2721 (2712 2713 2714 2715 2716 2717 2718 2719 2720) _)
In ice-9/boot-9.scm:
   260:13  4 (for-each1 ((ISO-8859-1 . 2744) (UTF-16 . 2742) (UTF-16BE . 2740) (UTF-16LE . 2741) (UTF-32 . 2739) (UTF-32BE . 2737) (UTF-32LE . 2738) (UTF-8 . 2743)))
In language/cps/switch.scm:
   340:32  3 (_ (ISO-8859-1 . 2744))
In language/cps/guile-vm.scm:
    89:31  2 (target-symbol-hash _)
    41:18  1 (jenkins-lookup3-hashword2 "ISO-8859-1")
In ice-9/boot-9.scm:
  1676:22  0 (lp 0)

ice-9/boot-9.scm:1676:22: In procedure lp:
Value out of range 0 to< 18446744073709551615: -458631452
make[2]: *** [Makefile:2519: ice-9/custom-ports.go] Error 1
make[2]: Leaving directory '/home/[...]/Rpmbuild/BUILD/guile30-3.0.10-build/guile-3.0.10/stage1'
[...]

Comment 7 Paul Bolle 2025-09-08 21:13:40 UTC
(This is a note to self.)

The three backtraces contain a similar line:
Value out of range 0 to< 18446744073709551615: -512332661
Value out of range 0 to< 18446744073709551615: -432225964
Value out of range 0 to< 18446744073709551615: -505802029

18446744073709551615 is 64 bit ULONG_MAX.

Is the 32 bit build juggling a number > LONG_MAX (equivalent to > INT_MAX) somehow, somewhere?

v3.0.9..v3.0.10 is only a few hundred commits. Bisecting that should take less than a day. Yay!

Comment 8 Paul Bolle 2025-09-09 14:59:54 UTC
Bisecting is still a chore but it took indeed less than a day. Verbose details below the line. Would really appreciate if someone could confirm, ie build commits d579848cb5d65440af5afd9c8968628665554c22 (should fail) and commit 89501a83ceec5ac4d3449e92ba2109fb77448b31 (should succeed).

While working through all these builds I realized this might as well be cross-compiling specific. Is Fedora special in building i686 on x86_64?

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

d579848cb5d65440af5afd9c8968628665554c22 is the first bad commit
commit d579848cb5d65440af5afd9c8968628665554c22 (HEAD)
Author: Andy Wingo <wingo>
Date:   Mon Nov 20 16:45:35 2023 +0100

    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.

 module/language/cps/specialize-numbers.scm | 13 +++++++++----
 module/language/cps/type-fold.scm          | 16 ++++------------
 2 files changed, 13 insertions(+), 16 deletions(-)

git bisect log
git bisect start
# status: waiting for both good and bad commits
# bad: [b2cc237a02dcb13625885e76df28bc254a522100] Fix distcheck problems with parallel tests
git bisect bad b2cc237a02dcb13625885e76df28bc254a522100
# good: [9b20ca275dba758a194073936cde7c95311bd51e] Verify 'W_EXITCODE' only when we provide our own definition.
git bisect good 9b20ca275dba758a194073936cde7c95311bd51e
# good: [624dd8a17a377a7ab38ca5068006fbdb14af6731] Improve handling of push/pop/drop in jit
git bisect good 624dd8a17a377a7ab38ca5068006fbdb14af6731
# bad: [48548df91e9eb5d4a46391da0ad0a8cdd3387857] Fix effects analysis: field writes clobber object reads
git bisect bad 48548df91e9eb5d4a46391da0ad0a8cdd3387857
# bad: [a702097f1cec322110d307710bd78244548cacd2] Fix cross-compilation to MinGW.
git bisect bad a702097f1cec322110d307710bd78244548cacd2
# bad: [4118f090304739c01b9204323a17ba30d3f00403] CPS conversion does not introduce "throw"
git bisect bad 4118f090304739c01b9204323a17ba30d3f00403
# good: [c2a9380a42ed2b2fdcfe641dc912b389f65f8db5] peval: better primcall folding in effect contexts
git bisect good c2a9380a42ed2b2fdcfe641dc912b389f65f8db5
# good: [4d834bdc12acef0f7353da8a22ef0480f818bdb8] Add logand/immediate, ulogand/immediate primcalls
git bisect good 4d834bdc12acef0f7353da8a22ef0480f818bdb8
# good: [89501a83ceec5ac4d3449e92ba2109fb77448b31] Fix mistype in specialize-numbers
git bisect good 89501a83ceec5ac4d3449e92ba2109fb77448b31
# bad: [d579848cb5d65440af5afd9c8968628665554c22] Fix bug lowering logand/immediate to ulogand/immediate
git bisect bad d579848cb5d65440af5afd9c8968628665554c22
# first bad commit: [d579848cb5d65440af5afd9c8968628665554c22] Fix bug lowering logand/immediate to ulogand/immediate

Comment 9 Paul Bolle 2025-09-09 15:42:11 UTC
(This is a note to self.)

git show b04071cc579e7b9d38d0c999e731bdd94b7f7a78
commit b04071cc579e7b9d38d0c999e731bdd94b7f7a78
Author: Andy Wingo <wingo>
Date:   Tue Sep 24 09:24:15 2024 +0200

    Partially revert d579848cb5d65440af5afd9c8968628665554c22
    
    * module/language/cps/specialize-numbers.scm (specialize-operations):
    Accept any operand to logand/immediate, provided the result is a u64 in
    the right range.

(v3.0.10+)

Comment 10 Paul Bolle 2025-09-09 16:36:15 UTC
It seems I'm on the right track (but wasted a lot of time bisecting). Anyhow, the title of the bug mentioned in this commit description is "Compiler error building 3.0.10 on 32-bit platforms"! Bisected - over a year ago! - to the same commit my busywork pointed to.

commit e45b70dcded37eb77e71ec30445b12040b6bb1b7
Author: Andy Wingo <wingo>
Date:   Wed Sep 25 17:24:51 2024 +0200

    Fix boxing of non-fixnum negative u64 values
    
    * module/language/cps/specialize-numbers.scm (u64->fixnum/truncate): New
    helper.
    (specialize-operations): Fix specialized boxing of u64 values to
    truncate possibly-negative values, to avoid confusing CSE.  Fixes
    https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71891.

Comment 11 Paul Bolle 2025-09-09 17:21:01 UTC
Apparently another fix is needed for the same issue is:

commit aff9ac968840e9c86719fb613bd2ed3c39b9905c
Author: Andy Wingo <wingo>
Date:   Thu Sep 26 11:14:52 2024 +0200

    Run sigbits fixpoint based on use/def graph, not cfg
    
    * module/language/cps/specialize-numbers.scm (sigbits-ref): New helper.
    (invert-graph*): New helper.
    (compute-significant-bits): When visiting a term changes computed
    needed-bits for one of its definitions, we need to revisit the variables
    that contributed to its result (the uses), because they might need more
    bits as well.  Previously we were doing this by enqueueing predecessors
    to the term, which worked if the uses were defined in predecessors, or
    if all defining terms were already in the worklist, which is the case
    without loops.  But with loops, when revisiting a term, you could see
    that it causes sigbits to change, enqueue its predecessors, but then the
    predecessors don't change anything and the fixpoint stops before
    reaching the definitions of the variables we need.  So instead we
    compute the use-def graph and enqueue defs directly.

Which requires non-trivial changes to apply on top of v3.0.10. Bummer.

My suggestions:
1) rebuild v3.0.10 excluding i686. This won't hurt those users (if any) currently running v3.0.9 for i686;
2) start a discussion (on devel?) on the purpose of i686 guile: why run a 32 bit guile on a 64 bit machine?