[racket] Bulding for Solaris 5.10 AMD64

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Wed Jul 21 18:00:58 EDT 2010

At Wed, 21 Jul 2010 12:58:48 +0100, Tim Brown wrote:
> On 21/07/10 02:20, Matthew Flatt wrote:
> > I've pushed a repair to the git repo, along with your patch to
> > "sconfig.h".
> >
> > The bug was in the code that patches a return address in the stack to
> > release cached stack-trace information. The JIT-generated code at the
> > patched-in address wasn't saving and restoring the return value
> > correctly. The only remaining mystery is why this bug hasn't caused
> > lots of trouble before.
> 
> Was it a Solaris/amd64 issue, or more general?

The bug affected all x86_64 platforms.

On further investigation, I found another bug that explains why the
main one had not caused more problems. In case anyone is interested:
The location in the stack to patch was determined by a calculation that
subtracted stack addresses in the wrong direction. Consequently, due to
arithmetic overflow, patching depended on whether the stack is very
high in the virtual address space; on 64-bit Linux and Mac OS X, the
stack tends to be in the middle of the virtual space, but it seems to
be toward the end for 64-bit Solaris.



Posted on the users mailing list.