[Top][All Lists]

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

Re: [MIT-Scheme-devel] Looking for troubleshooting help on windows 10.

From: Matt Birkholz
Subject: Re: [MIT-Scheme-devel] Looking for troubleshooting help on windows 10.
Date: Tue, 23 Jan 2018 20:54:32 -0700

On Fri, 2017-12-01 at 14:04 -0500, The Chamberlins wrote:
> I'm trying to get mit-scheme up and running on a new system running
> windows 10, but get the heap-size  problem (heap is either too high
> or too small depending on what I set it with --heap).
> Any ideas?

The Ubuntu app?  If the "new" machine is 64 bit capable, perhaps the
app is a 64 bit Ubuntu.  Or a VirtualBox virtual machine?  The
following article recommends one instead of the app.

Or port Scheme to 64 bit Windows?

I've tried to describe the difficulties of using a 32 bit Scheme on
Windows to others recently.  I suppose I should have done that here.
I'll repeat myself as much to answer you as to double-check with the
net gods that I did not mis-hear all of this so many years ago.

And the fastest way to get an answer on this list is to posit the
wrong answer. :-)

Scheme compiles to machine code that finds words in the heap by
masking (clearing) 6 type bits at the top of 32 bit pointers.  That
leaves 26 bits, which address the first 64MiB of the address space.

This works great when the operating system is loading the program as
well as shared libraries and whatnot into the high end of the virtual
address space, leaving the low addresses to the program's data.

It works lousy when the system itself shares the low addresses, and
loads the program into low addresses, and leaves only high addresses
for program data.  I'm just guessing but expect there are enough
shenanigans going on from the very bootstrap these days that Scheme
has almost no shot at allocating any of the bottom 64MiB even if
you run it first thing.

Searching for unallocated space below the 64MiB limit is what causes
the seemingly random failures.  It is a crap shoot dependent on what
the system has allocated down there at the moment.

There is some bit-rotted support for a dynamic base/offset that would
allow Scheme to use addresses above the 2^26 limit, but it really
hurts performance, replacing a simple masking with an indirection or a
dedicated register or sump'n.  I think there is an idle segment
register, but that would be a new idea for the compiler.

A 64 bit Scheme (on 64 bit Windows) should not have a problem with a
2^58 (258PiB) heap address limit for a few decades.  If you have a 64
bit Windows C compiler, you might give it a whirl, but be forewarned
that it probably thinks a long is 32 bits, just to make the port extra

reply via email to

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