GC to assemble a compacted heap image in newspace which it then writes out
to disk. Then the VM calls ABORT-GC to cancel the GC operation, which scans
the current space, fixing up the "broken hearts" -- restoring word 1 of
each structure that got clobbered with a forwarding pointer.
Unfortunately, someone (possibly myself) had inserted a post_gc_fdports() call
into the VM between the gc and the abort. This procedure updates a C vector of
Scheme values (fdports[]) by following forwarding pointers -- BUT -- in this
instance we didn't really want to break hearts, and the abort-gc code didn't
know about the fdports[] vector, so it couldn't undo the effects. This caused
the fdports[] vec to point into hyperspace after the image dump, and *that*
meant on the next GC, all the live ports were considered dead. Oops.
The fix was to remove this bogus call. The post_gc_fdports() proc is now
called only after a *real* GC.
-Olin
-*- Mode: Text; -*-
Copyright (c) 1994 Brian D. Carlstrom
See file COPYING for copying information.
Please report bugs to scsh-bugs@martigny.ai.mit.edu, and include
the version number in your message.
Installation instructions in file INSTALL.
A scsh manual is in file doc/scsh-manual{/*.tex,.ps}.
A scsh paper is in file doc/scsh-paper.{tex,ps}.
A scsh quick reference is in file doc/cheat.txt.
Recent changes are listed in file NEWS.
Known bugs and things to do in the future are listed in TODO.
Send mail to scsh-request@martigny.ai.mit.edu to be put on a
mailing list for announcements, discussion, bug reports, and bug
fixes.
A road-map of the source tree is also in the doc directory.