|
From: | Stefan Israelsson Tampe |
Subject: | Re: Mysterious bug in master |
Date: | Sun, 11 Jan 2015 13:30:03 +0100 |
Hi, esp. wingoHere is the defenition and uses of *freeze-map* in my file parse.scm,(define *freeze-map* (make-fluid (make-hash-table)))(define (clear-tokens)(fluid-set! *freeze-map* (make-hash-table)))(clear-tokens)(let ((val (hash-ref (pk 'freeze (fluid-ref *freeze-map*))(cons* N M tok) #f))...)(hash-set! (fluid-ref *freeze-map*)(cons* n m tok) (list X XL N M XX ... val2)))(hash-set! (fluid-ref *freeze-map*)(cons* n m tok) val2))(with-fluids ((*freeze-map* (pk 22 (fluid-ref *freeze-map*))))(clear-tokens)sometimes this fails sometimes not when using the code e.g.;;; (freeze (#f . #(() () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ())))ERROR: In procedure hash-ref:Sometimes when I comile with a change of whitespaces I can make the code run else I getthis mysterious error. This is a clue that there might be a bug in 2.1, guile-log is a bit naughtyso I don't want to put the blame on guile, just hint that there might be a fundamental bug in thereI tracked it down to the clear-tokens function, that ,x clear-tokens assembly is0 (assert-nargs-ee/locals 1 3) ;; 0 args, 3 locals at logic/guile-log/parser.scm:64:01 (toplevel-box 0 57143 36139 36137 #t);; `*freeze-map*'6 (box-ref 0 0)7 (toplevel-box 1 57139 36133 36121 #t);; `make-hash-table'12 (box-ref 3 1)13 (call 3 1) at logic/guile-log/parser.scm:65:2715 (receive 1 3 4)17 (module-box 2 41407 34463 41405 #t);; `(@@ (guile) fluid-set!)'22 (box-ref 2 2) at logic/guile-log/parser.scm:65:223 (mov 3 2)24 (mov 2 1)25 (mov 1 0)26 (mov 0 3)27 (tail-call 3)I'm wondering if the receive value 4 is protected by the frame that is the return of make-hash-table.RegardsStefan
[Prev in Thread] | Current Thread | [Next in Thread] |