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.
