Hi Chris, Thanks for your support. :-) Christopher Allan Webber skribis: > + else > + { > + /* The move to BDW-GC with Guile 2.0 introduced some bugs > + related to weak hash tables, threads, memory usage, and the > + alloc lock. We were unable to fix these issues > + satisfactorily in 2.0 but have addressed them via a rewrite > + in 2.2. If you see this message often, you probably want > + to upgrade to 2.2. */ > + fprintf (stderr, "guile: warning: weak hash table corruption " > + "(https://bugs.gnu.org/19180)"); > + len = 0; > + } > > Guess reverting this patch means this comment also should be amended! Indeed. :-) The attached patch fixes the bug for me. Having spend days on weak-table stuff, the bug looked (described in the commit log below) almost obvious to me. This tight loop used to trigger the bug after a few seconds; it no longer does after several minutes: (define table (make-weak-key-hash-table)) (let loop ((i 0)) (unless #f (hashq-set! table (make-list 1000) i) (loop (1+ i)))) Also, it no longer displays the pathological behavior shown in . Of course, even better if people could test the two patches and confirm that it works for them. Then if there are no objections I’d like to merge them in ‘stable-2.2’. Ludo’.