diff --git a/scheme48vm.c b/scheme48vm.c index 5332b97..8dfac72 100644 --- a/scheme48vm.c +++ b/scheme48vm.c @@ -3480,7 +3480,14 @@ long Tinterpret() RSstackS = SstackS; RScode_pointerS = Scode_pointerS; RSenvS = SenvS; - post_gc_fdports(); /* Hack for scsh's i/o system. Olin. */ + /* Do NOT put a call to the scsh I/O gc hook post_gc_fdports() here. + ** This GC is not for real -- it's for writing images, and will be + ** aborted. But the part of post_gc_fdports that updates the fdports[] + ** elements to point into new-space *won't* be aborted, and oops, we're + ** pointing into hyperspace. This whole thing is a mess; we need to port + ** to a newer Scheme 48 release that gives us structured GC hooks. + ** -Olin + */ close_untraced_portsB_return_tag = 0; goto close_untraced_portsB; close_untraced_portsB_return_0: diff --git a/scsh/fdports1.c b/scsh/fdports1.c index 3a44cd5..95e4a28 100644 --- a/scsh/fdports1.c +++ b/scsh/fdports1.c @@ -301,17 +301,16 @@ void post_gc_fdports(void) { int fd; -#if 0 +#ifdef NOISY_FDGC fputs("{GC", stderr); fflush(stderr); #endif for(fd=0; fd