chicken-janitors
[Top][All Lists]
Advanced

[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.

reply via email to

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