[gambit-list] [ANN] Gambit-C v4.6.0 released

Marc Feeley feeley at iro.umontreal.ca
Fri Jan 15 09:45:57 EST 2010


On 2010-01-15, at 9:20 AM, Bradley Lucier wrote:

> Did you fix the problem on Intel 32?  I don't see any notes in the
> changelog.
> 
> Brad

Yes.  Check again!

This was a really difficult bug to track down.  It is a bug that has existed for a long long time in the compiler.  The frame descriptor generated for big continuation frames (>= 20 slots) which were in addition "internal" frames, was incorrect (due to an error in the computation of the "frame alignment", it did not generate a correct GC map, which is necessary for the garbage collector to know which slots in the frame are live).  Apparently the size of the frames was in general small enough that this went unnoticed for a long time.  In a recent change to Gambit, the format of continuation frames was changed to include 2 additional slots (for implementing delimited continuations).  Because of this, more frames are now over 20 slots (particularly in complex code, like the compiler itself), and the bug became more apparent (in particular in the selftest "test5" which runs the compiler).  Amusingly the bug did not cause problems on 64 bit architectures because the computation of the frame alignment yielded the correct result up to frames that were 52 slots.  Now that my development machines are all 64 bit architectures, it is only when I tried to build a release for the supported platforms that I noticed the problem.

If reliability is important for your application, upgrade to v4.6.0 pronto!

Marc




More information about the Gambit-list mailing list