chicken-janitors
[Top][All Lists]
Advanced

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

Re: [Chicken-janitors] #905: Unreliable behavior of hash tables with sym


From: Chicken Trac
Subject: Re: [Chicken-janitors] #905: Unreliable behavior of hash tables with symbols as keys (regression wrt 4.7.4)
Date: Thu, 23 Aug 2012 01:04:57 -0000

#905: Unreliable behavior of hash tables with symbols as keys (regression wrt
4.7.4)
-----------------------------+----------------------------------------------
  Reporter:  iraikov         |       Owner:       
      Type:  defect          |      Status:  new  
  Priority:  critical        |   Milestone:  4.8.0
 Component:  core libraries  |     Version:  4.8.x
Resolution:                  |    Keywords:       
-----------------------------+----------------------------------------------
Description changed by iraikov:

Old description:

> The nemo program relies heavily on performing transformations over hash
> tables with symbols as keys. It works fine with Chicken 4.7.4, but
> unfortunately there seems to have been a regression in 4.8.0rc1, which
> results in hash-table-exists? and hash-table-ref failing to find any of
> the existing keys in the table after a number of transformations have
> been performed. I have not been able to create a small test case yet, but
> I suspect the hash tables stop working after some garbage collections
> have been performed. This issue is not entirely new; nemo previously used
> the environments egg, which was also exhibiting similar unreliable
> behavior, so I had resorted to using strings instead of symbols as keys.
> Any advice on how to debug this would be appreciated.

New description:

 The nemo program relies heavily on performing transformations over hash
 tables with symbols as keys. It works fine with Chicken 4.7.4, but
 unfortunately there seems to have been a regression in 4.8.0rc1, which
 results in hash-table-exists? and hash-table-ref failing to find any of
 the existing keys in the table after a number of transformations have been
 performed.
 The following code reproduces the issue:

 {{{

 (use srfi-1 srfi-69)

 (define t (make-hash-table hash: symbol-hash))

 (hash-table-set! t 'k1 1)
 (hash-table-ref t 'k1)

 (for-each
   (lambda (k v)
     (printf "hash-table-set! ~A ~A~%" k v)
     (hash-table-set! t k v))
   (list-tabulate 10 (lambda (i) (gensym 'k)))
   (list-tabulate 10 (lambda (i) i))
   )

 (print (hash-table-ref t 'k15))
 }}}

 Perhaps the hash tables stop working after some garbage collections have
 been performed. This issue is not entirely new; nemo previously used the
 environments egg, which was also exhibiting similar unreliable behavior,
 so I had resorted to using strings instead of symbols as keys. Any advice
 on how to debug this would be appreciated.

--

-- 
Ticket URL: <http://bugs.call-cc.org/ticket/905#comment:1>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.

reply via email to

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