[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#28590: Weak tables in 2.2.2 grow indefinitely
From: |
Ludovic Courtès |
Subject: |
bug#28590: Weak tables in 2.2.2 grow indefinitely |
Date: |
Mon, 25 Sep 2017 10:49:13 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Consider this program:
--8<---------------cut here---------------start------------->8---
(use-modules (ice-9 format))
(define loops 3000000)
(define table
(make-weak-key-hash-table))
(let loop ((i loops))
(unless #f ;(zero? i)
(when (zero? (modulo i 100000))
(format #t "heap-size: ~,2h MiB table: ~s~%"
(/ (assoc-ref (gc-stats) 'heap-size) (expt 2. 20))
table))
(hashq-set! table (cons 1 2) #t)
(loop (1- i))))
--8<---------------cut here---------------end--------------->8---
On 2.0.14, the heap size stays at around 24 MiB, and the table size is
stable at 224,717 buckets (?).
On 2.2.2, the heap grows indefinitely (though logarithmically). It’s
not deterministic though: sometimes the heap size stabilizes in the
140–300 MiB range, and sometimes it keeps growing endlessly even though
the table size reaches a maxium at 7,190,537 entries.
Ludo’.
- bug#28590: Weak tables in 2.2.2 grow indefinitely,
Ludovic Courtès <=