[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#12182: guile 2.0.6: "Value out of range: 0" when compiling a procedu
From: |
Ian Price |
Subject: |
bug#12182: guile 2.0.6: "Value out of range: 0" when compiling a procedure |
Date: |
Sun, 12 Aug 2012 12:29:32 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) |
Feufochmar <address@hidden> writes:
>
> The backtrace I have with guild compile :
>
> $ guild compile test.scm
> Backtrace:
> In language/tree-il/optimize.scm:
> 44: 19 [optimize! #<tree-il (lambda () #)> #<module (#{ g40}#) 2097ab0> ...]
> In language/tree-il/cse.scm:
> 537: 18 [visit #<tree-il (lambda () (lambda-case #))> #<vlist ()> ...]
> 543: 17 [visit #<tree-il (lambda-case (# #))> #<vhash 22cf540 1 pairs> ...]
> 483: 16 [visit #<tree-il #> #<vhash 22cf540 1 pairs> #<vlist ()> ...]
> 537: 15 [visit #<tree-il (lambda (#) (lambda-case #))> #<vhash 22cf540 1
> pairs> ...]
> 543: 14 [visit #<tree-il (lambda-case (# #))> #<vhash 22cf4a0 2 pairs> ...]
> 429: 13 [visit #<tree-il (let # # # ...)> #<vhash 22cf4a0 2 pairs> #<vlist
> ()> ...]
> 370: 12 [lp (#<tree-il (lambda () #)>) () #<vlist ()>]
> 537: 11 [visit #<tree-il (lambda () (lambda-case #))> #<vhash 22cf4a0 2
> pairs> ...]
> 543: 10 [visit #<tree-il (lambda-case (# #))> #<vhash 22cf400 3 pairs> ...]
> 437: 9 [visit #<tree-il (letrec* # # ...)> #<vhash 22cf400 3 pairs> ...]
> 533: 8 [visit #<tree-il (apply # # ...)> #<vhash 23250e0 19 pairs> ...]
> 370: 7 [lp (#<tree-il #> #<tree-il #> #<tree-il #> #<tree-il #>) () #<vlist
> ()>]
> 533: 6 [visit #<tree-il (apply # #)> #<vhash 23250e0 19 pairs> ...]
> 370: 5 [lp (#<tree-il (if # # #)>) () #<vlist ()>]
> 403: 4 [return #<tree-il (if # # #)> #<vlist ()>]
> 333: 3 [find-dominating-lexical #<tree-il (if # # ...)> 0 ...]
> 315: 2 [unroll #<vhash 23250e0 19 pairs> 19 13]
> In ice-9/vlist.scm:
> 303: 1 [vlist-ref #<vhash 23250e0 19 pairs> 19]
> In ice-9/boot-9.scm:
> 106: 0 [#<procedure 204f280 at ice-9/boot-9.scm:97:6 (thrown-k . args)>
> out-of-range ...]
>
> ice-9/boot-9.scm:106:20: In procedure #<procedure 204f280 at
> ice-9/boot-9.scm:97:6 (thrown-k . args)>:
> ice-9/boot-9.scm:106:20: Value out of range: 0
I am not familiar with the cse module, but a quick perusal of the code
leads me to think that the unroll procedure in cse.scm expects the invariant
base + n <= (vlist-length db)
scheme@(guile−user) [1]> ,up
In language/tree−il/cse.scm:
315:10 1 (unroll #<vhash 96cca60 19 pairs> 19 13)
scheme@(guile−user) [1]> ,up
In language/tree−il/cse.scm:
333:28 2 (find−dominating−lexical #<tree−il (if (lexical steep? steep?−818)
(le…> …)
scheme@(guile−user) [1]> ,locals
Local variables:
$13 = exp = #<tree−il (if (lexical steep? steep?−818) (lexical y0 y0−814)
(lexical x…>
$14 = effects = 0
$15 = env = #<vhash 96cc7a0 11 pairs>
$16 = db = #<vhash 96cca60 19 pairs>
$17 = entry−matches? = #<procedure entry−matches? (v1 v2)>
$18 = unroll = #<procedure unroll (db base n)>
$19 = h = 72117960
$20 = env−len = 11
$21 = db−len = 19
$22 = n = 1
$23 = m = 16
$24 = v = (#(#<tree−il (if (apply (primitive <) (apply (primitive values)
(i…> …) . #)
$25 = w = #(#<tree−il (if (apply (primitive <) (apply (primitive values) (if
(lex…> …)
$26 = x = 72117960
$27 = len = 4
$28 = w = #<tree−il (if (apply (primitive <) (apply (primitive values) (if
(lexical …>
$29 = w = y−step
$30 = w = y−step−827
$31 = w = 3
scheme@(guile−user) [1]> ,use (ice-9 vlist)
scheme@(guile−user) [1]> (vlist-ref $15 $22)
$34 = (#(#<tree−il (if (apply (primitive <) (apply (primitive values) (if
(lexical steep? steep?−818) (lexical x0 x0−813) (lexical y0 y0−814))) (apply
(primitive values) (if (lexical steep? steep?−818) (lexical x1 x1−815) (lexical
y1 y1−816)))) (const 1) (const −1))> y−step y−step−827 3) . 72117960)
The only call to unroll, is (unroll db m (- db-len db-len*))
the missing db-len* is the fourth element of the vector in $34 or 3. So
the call works out at (unroll db 16 (- 19 3)) == (unroll db 16 16)
and obviously 16 + 16 > 19
Not sure if that's helped at all, but the bug intrigued me when he
brought it up on #guile yesterday
--
Ian Price -- shift-reset.com
"Programming is like pinball. The reward for doing it well is
the opportunity to do it again" - from "The Wizardy Compiled"