mit-scheme-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MIT-Scheme-devel] disk-restore


From: Taylor R Campbell
Subject: [MIT-Scheme-devel] disk-restore
Date: Tue, 10 May 2011 15:31:50 +0000
User-agent: IMAIL/1.21; Edwin/3.116; MIT-Scheme/9.1

Lots of things are broken about DISK-RESTORE.  For example, the system
fails to free external strings.  This may apply to lots of other
things that are GC-finalized, which will probably increase if the
FFI's use increases.  If anything goes wrong in the LOAD-BAND
primitive, the system is probably in a wrecked state because it will
already have triggered the BEFORE-EXIT event, even though LOAD-BAND
itself is careful to be ready to back out until it is ready to commit.
And of course Edwin can't be saved and restored.

I think the easiest way to deal with most of this (other than saving
and restoring Edwin) would probably be to add a band load daemon which
would be run in its own little interpreter loop like edwin_auto_save
and delete_temp_files, between the lines

   ENTER_CRITICAL_SECTION ("band load");
   (state->no_return_p) = true;

in read_band_file in fasload.c, or possibly after claiming the point
of no return.  This band load daemon would trigger the BEFORE-EXIT
event, which could then safely run all GC finalizers.

Another approach would be just to use exec.

Does anyone care much about DISK-RESTORE?  Is it worth putting effort
into fixing?



reply via email to

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