[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #1173: Symbols held in GC-roots are sometimes col
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #1173: Symbols held in GC-roots are sometimes collected in "symbol-gc" mode |
Date: |
Wed, 29 Jun 2016 13:46:48 -0000 |
#1173: Symbols held in GC-roots are sometimes collected in "symbol-gc" mode
-----------------------------+-------------------
Reporter: felix | Owner:
Type: defect | Status: new
Priority: major | Milestone: 5.0
Component: core libraries | Version: 4.9.x
Resolution: | Keywords:
-----------------------------+-------------------
Comment (by LemonBoy):
After some brief experimentation I think that the root cause is the fact
that the symbol-gc greedily wipes '''all''' the symbols from the table,
including the static ones that hold the names for the exported symbols.
Back to this specific case, {{{##sys#load-extension}}} is failing because
an eq? comparison doesn't hold anymore (I think it was one of the memq,
sadly I didn't write any note) and end up printing the error above.
As a possible fix I could devise two possible scenarios:
* Make the static symbols have a ∞ reference count (so that now the
counter has 4 possible states: 0, 1, 1+, ∞)
* Avoid static symbols when evicting the symbols, you can recognize that a
symbol's static if the slot-1 string resides outside the chicken heap.
I did implement the latter since it was easier and fixed this particular
crash, I didn't test it much though.
--
Ticket URL: <http://bugs.call-cc.org/ticket/1173#comment:4>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.
- Re: [Chicken-janitors] #1173: Symbols held in GC-roots are sometimes collected in "symbol-gc" mode,
Chicken Trac <=