GNU bug report logs - #75504
Crash of type-fold when compiling procedure

Previous Next

Package: guile;

Reported by: "Ricardo G. Herdt" <r.herdt <at> posteo.de>

Date: Sat, 11 Jan 2025 23:44:02 UTC

Severity: normal

Full log


View this message in rfc822 format

From: "Ricardo G. Herdt" <r.herdt <at> posteo.de>
To: 75504 <at> debbugs.gnu.org
Subject: bug#75504: Crash of type-fold when compiling procedure
Date: Sat, 11 Jan 2025 23:43:11 +0000
Hi,

There is a weird bug when trying to evaluate/compile following 
procedure:

------------------------
$ cat example.scm
(define (test n)
    (make-vector n 1)
    (floor (sqrt n)))

$ guild compile example.scm
Backtrace:
In /home/rgherdt/.guix-profile/bin/guild:
    72:17 19 (main _)
In srfi/srfi-1.scm:
    634:9 18 (for-each #<procedure 7fc101fbc230 at scripts/compile.…> …)
In scripts/compile.scm:
   279:27 17 (_ _)
In system/base/target.scm:
     72:6 16 (with-target _ _)
In system/base/compile.scm:
    187:6 15 (compile-file "example.scm" #:output-file _ #:from _ # _ …)
     53:4 14 (call-with-output-file/atomic _ _ _)
In ice-9/boot-9.scm:
  1752:10 13 (with-exception-handler _ _ #:unwind? _ # _)
In system/base/compile.scm:
    69:11 12 (_)
   190:11 11 (_ #<closed: file 7fc101f95e00>)
   314:15 10 (read-and-compile _ #:from _ #:to _ #:env _ # _ # _ # _)
   352:28  9 (compile _ #:from _ #:to _ #:env _ #:optimization-level …)
   265:44  8 (_ _ _)
   261:33  7 (_ #<intmap 0-41> #<module (#{ g106}#) 7fc1020f2460>)
In language/cps/optimize.scm:
   130:12  6 (_ _ _)
    102:3  5 (optimize-higher-order-cps _ _)
In language/cps/type-fold.scm:
    778:7  4 (type-fold _)
   771:27  3 (fold-functions-in-renumbered-program #<procedure loca…> …)
   611:10  2 (local-type-fold _ 30 _)
     48:4  1 (materialize-constant _ _ _ _ _)
In ice-9/boot-9.scm:
  1685:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
In procedure =: Wrong type argument in position 1: #<unspecified>
------------------------

Somehow the type passed to materialize-constant is #<unspecified>, 
leading to the crash when checking "(zero? type)". Swapping the 
procedures like this doesn't lead to the same error:

(define (test n)
   (make-vector n 1)
   (sqrt (floor n)))

Thanks to gsdlb for discovering the bug and mwette for helping getting a 
better backtrace.
Tested with Guile 3.0.9.

Regards,

Ricardo G. Herdt




This bug report was last modified 164 days ago.

Previous Next


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