Thanks for your help!

I now have a build that works on my Qemu installation. The problem was
that the signal-handling stack installed via sigaltstack() was too
small. Making the stack 10*SIGSTKSZ bytes instead of SIGSTKSZ bytes
solves the problem.

In retrospect, it's clear how this is related to generational GC: no
write barrier means one less signal handler. But it wasn't simply that
the write-barrier signal handler was running out of space; overflow
required the combination of that one plus a nested SIGPROF handler
(so, not so easy to track down).

I expect that 64-bit platforms other than x86_64 have larger stack
frames, which explains why we only see the problem on other
architectures.

Here's the commit to increase the stack size:

 https://github.com/plt/racket/commit/d6fa581a4c487cd55ca62b853a36842e2fd381a3


At Fri, 03 Jul 2015 05:29:39 +0200, David Bremner wrote:
> Matthew Flatt <[email protected]> writes:
> 
> > I was able to get an AArch64 installation running with Qemu, and I
> > think I've found the main problem with these failing builds.
> >
> > The end of "gc2.h" has a preprocessor test for `__x86_64__` or `WIN64`,
> > but it should have been a more general test for
> > `SIXTY_FOUR_BIT_INTEGERS`.
> >
> > With that repair, the AArch64 build still fails for me due to a GC
> > problem. If I disable generational GC, then the build seems ok. I think
> > I've had trouble in the past, where the signal handlers that implement
> > the write barrier didn't work correctly inside Qemu. The problem might
> > not be Qemu-specific, though, and I'm interested to hear whether the
> > "gc2.h" change to use `SIXTY_FOUR_BIT_INTEGERS` fixes the problem on
> > real machines.
> 
> looks like not qemu specific ?  This is on a real (AMD X-Gene Mustang) amd64
> machine:
> 
> racket/racket3m -X 
> "/home/bremner/racket-6.2/debian/tmp/usr/share/racket/collects" -G 
> "/home/bremner/racket-6.2/debian/tmp/etc/racket"  -N "raco" -l- setup  
> --no-user -j  --no-launcher --no-install --no-post-install 
> raco setup: bootstrapping from source...
> SIGSEGV MAPERR si_code 1 fault on addr 0x4000
> Aborted
> Makefile:160: recipe for target 'install-3m' failed
> make[2]: *** [install-3m] Error 134
> make[2]: Leaving directory '/home/bremner/racket-6.2/build'
> 
> d

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/20150703184858.138766501C5%40mail-svr1.cs.utah.edu.
For more options, visit https://groups.google.com/d/optout.

Reply via email to