Files
elk/BUGS
T
sam d51c970c8d elk (3.0-9) unstable; urgency=low
* New maintainer.
  * Packaging updates:
    + Fixed spelling in the package description (Closes: #161056).
    + Updated standards version to 3.5.9.0.
    + Changed SCM_DIR from /usr/lib/elk/scm to /usr/share/elk/scm because
      scheme scripts are platform-independent.
  * Massive code cleanups:
    + Added -Wall to the build rules to make error spotting easier, and fixed
      all compilation warnings in the main program.
    + Replaced sys_errlist with strerror, bcopy with memcpy, bzero with memset.
    + Fixed many uninitialized variables.
  * Fixed some pointer/integer type confusions which caused elk to crash
    on alpha (Closes: #59893) and probably ia64.
  * Fixed a read overflow in heap-gen.c:AllocPage() that was corrupting the
    internal heap (Closes: #57621).
  * Fixed a missing memory area initialization in heap-gen.c:ExpandHeap() that
    was causing garbage collector crashes.
  * Fixed an integer sign issue in main.c:Max_Stack (Closes: #176190).
  * Made `quit' an alias for `exit' in toplevel.scm.
 -- Samuel Hocevar <sam@zoy.org>  Tue,  1 Apr 2003 11:33:23 +0200


git-svn-id: svn://svn.zoy.org/elk/trunk@3 55e467fa-43c5-0310-a8a2-de718669efc6
2003-08-19 19:24:23 +00:00

44 lines
1.6 KiB
Plaintext

Generational/Incremental Garbage Collector
The generational, incremental garbage collector still is considered
experimental, although it stands up well in some real applications.
Here is a list of known problems:
o On a Sun (Sun-4/SunOS4 or 5) when compiling Elk with gcc (2.6.3
or older), the generational garbage collector sometimes loops
(when working in non-incremental mode). This can be circumvented
by compiling src/proc.c (yes, proc.c, not heap.c) without the -O
option. We are not sure yet whether this is a bug in Elk or in gcc.
o Running out of memory when expanding the heap shouldn't be handled
as a fatal error. Instead, the garbage collector should clean up
and then invoke Uncatchable_Error() to return control to the Scheme
program.
o The return value of ExpandHeap() is sometimes ignored.
o When running the program
(garbage-collect-status 'generational 'incremental)
(define (f) (make-list 10000 'a) (f))
(f)
the pairs in the lists become stable quickly and aren't reclaimed,
as the current algorithm favors heap expansions over full collections.
o With the same test program, the GC sometimes crashes with SIGSEGV
after having expanded the heap to 9MB.
o Under HP-UX 9.0 and AIX 4.1, the GC doesn't work in incremental mode
(a broken-heart is passed to Memoize_Frame() after an ExpandHeap()).
o The percentage displayed at the end of a GC run is sometimes wrong.
o This simple test causes a valgrind error after the first GC run:
(define (fact x) (if (> x 1) (* x (fact (- x 1))) 1))
(fact 100)
(fact 1000)
(fact 1000)