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



Reply via email to