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
Please update to the new release. Thanks.
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.
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.
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)?
Ok, start the procedure "Non-responsive maintainer policy". Thank you.
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' [...]
(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!
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
(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+)
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.
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?