Runtime bug? and other questions

Stephen Weeks sweeks@intertrust.com
Tue, 25 Jan 2000 21:49:38 -0800 (PST)


> > I've run into a bug with the runtime, and I'm not sure if it's because I'm
> > generating bogus code, or if its just a boundary case you haven't caught
> > yet.

I never saw this mail.  When was it sent?

> I'm still running into a bug, where my code is dieing. I'm convinced that
> I'm generating valid code for the backend. This is code that doesn't even
> use any of my extensions to MLTON.

It is definitely the goal of using a typed IL that if you are feeding
MLton Cps code that type checks, then you are guaranteed no seg
faults.  So if this is the case, then you are correct and it is either
a bug the backend or runtime system.

> I think there stacklimit check is being
> done incorrectly. As if I increase the slop space allocated at the end of
> every stack, I can get my code to work a bit more reliably.

There were definitely some major bugs in the runtime snapshot I sent
you.  I have since fixed all of the ones I know of.  I've appended a
snapshot of the latest runtime system to the end of this mail.  It
should work with the compiler version you have (except for possibly
the signals and threads stuff, which is still undergoing development).

If this doesn't fix your problem, send me the SML code and I'll play
around with it in my current world.  I can't make a snapshot of the
whole compiler to give you yet because its so unstable in many other
places.  Hopefully within a month I'll have a new stable version of
the whole compiler, and this runtime will tide you over until then.

> Also is there a way to set the initial stacksize from the command line?

There was long ago when the stack wasn't allocated as part of the heap
and wasn't automatically resized.  In the new runtime (i.e. since
1999-12-24), the stack is allocated in the heap and is initially
created as small as possible and resized (doubled) automatically.  I
don't think it would be too hard to add a command line flag to set it,
but I don't think it's worth the trouble since the automatic stack
resizing should be fast enough (provided it's bug-free :-().

Anyways, let me know if this new runtime fixes the bug.

--------------------------------------------------------------------------------

begin 644 patch.tar.gz
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
D&KGY\KCO_OK\]?GK\]?GK\]?G[\^?WW^__G\'VDFP"``R```
`
end