guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Mysterious bug in master


From: Stefan Israelsson Tampe
Subject: Mysterious bug in master
Date: Sat, 10 Jan 2015 17:30:34 +0100

Hi, esp. wingo

Here 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 get
this mysterious error. This is a clue that there might be a bug in 2.1, guile-log is a bit naughty
so I don't want to put the blame on guile, just hint that there might be a fundamental bug in there

I tracked it down to the clear-tokens function, that ,x clear-tokens assembly is
  0    (assert-nargs-ee/locals 1 3)    ;; 0 args, 3 locals   at logic/guile-log/parser.scm:64:0
   1    (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:27
  15    (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:2
  23    (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.

Regards
Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]