http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52583
--- Comment #21 from Ian Lance Taylor <ian at airs dot com> 2012-04-25 14:56:56 UTC --- I no longer see any failures on i386 Solaris. I see a few failures on x86_64 Solaris. They are all crashing in x86_64_fallback_frame_state when trying to unwind through a signal handler. The x86_64_fallback_frame_state function assumes, quite reasonably, that context->pc is a valid memory address. Unfortunately, many Go stacks begin with a stack passed to makecontext. The implementation of makecontext in the Solaris libc does not seem to have appropriate unwind information. Ideally it should specifically set the return address unwind column to be undefined, as described by DWARF. Right now, an attempt to unwind the stack frame up to the point of makecontext will sometimes produce an invalid value for the PC of the (nonexistent) frame that called makecontext. And that leads to the crash. I think the only fixes are for Solaris to correct makecontext so that it sets up proper unwind information, or for libgo to implement a version of makecontext specific for its purposes. The latter will not happen for 4.7.