-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 31-Jan-07, at 4:33 AM, TJ wrote:
Running the following code in gambit's repl causes its memory usage to shoot up and end up making the whole pc unresponsive.
(define t (make-table min-load: 0.75 max-load: 0.95)) (table-set! t 0 0) (table-set! t 1 1) (table-set! t 2 2) (table-set! t 3 3) (table-set! t 4 4)
Fixed. This was an off-by-one error in the computation of the new table size (the code was truncating a float instead of computing the ceiling). Because of this the new table was the same size, so when the elements were transferred to the new table it caused a new attempt to resize the table, and so on forever.
You can correct the problem by replacing the head of procedure ##gc- hash-table-resize! in lib/_system.scm by:
(define-prim (##gc-hash-table-resize! gcht loads) (let* ((count (macro-gc-hash-table-count gcht)) (n (##fixnum.+ 1 (##flonum.->fixnum (##flonum./ (##flonum.<-fixnum count) (##f64vector-ref loads 1))))))
Marc