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. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users