Stumbled upon some SIGSEGV problems when trying to run UMB Scheme 3.2 here at work. UMB Scheme is the interpreter I've been using at home, on my hopelessly obsolete Linux distribution. Had a look at the source code. The bug was a bit puzzling at first - the code seemed to work perfectly under valgrind! Turned out the author was using the sign of a pointer as a sort of flag; when it's negative, flip the sign and follow the resulting pointer somewhere else. Evil! At least on the system where I'm at, addresses of stack allocated and heap allocated objects have different signs. I did the obvious thing; here's a patch that fixes the problem.
Why even bother with UMB Scheme? Well, newer Scheme interpreters are a bit picky about the argument for force being a promise. This prevented me from running, on newer interpreters, this breathtakingly beautiful piece of code. Well, yes, I only found out about lazy streams yesterday; this stuff still looks to me a bit like magic.
Edit: redi, yes, that's it. Thanks.