With -buildmode=c-archive, initsig is called before the memory allocator has been initialized. The code was doing a memory allocation because of the call to funcPC(sigtramp). When escape analysis is fully implemented, that call should not allocate. For now, finesse the issue by calling a C function to get the C function pointer value of sigtramp. When returning from a call from C to a Go function, a deferred function is run to go back to syscall mode. When the call occurs on a non-Go thread, that call sets g to nil, making it impossible to add the _defer struct back to the pool. Just drop it and let the garbage collector clean it up. Reviewed-on: https://go-review.googlesource.com/33675 From-SVN: r242992
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
config | Loading commit data... | |
go | Loading commit data... | |
runtime | Loading commit data... | |
testsuite | Loading commit data... | |
LICENSE | Loading commit data... | |
MERGE | Loading commit data... | |
Makefile.am | Loading commit data... | |
Makefile.in | Loading commit data... | |
PATENTS | Loading commit data... | |
README | Loading commit data... | |
README.gcc | Loading commit data... | |
VERSION | Loading commit data... | |
aclocal.m4 | Loading commit data... | |
config.h.in | Loading commit data... | |
configure | Loading commit data... | |
configure.ac | Loading commit data... | |
godeps.sh | Loading commit data... | |
match.sh | Loading commit data... | |
merge.sh | Loading commit data... | |
mkrsysinfo.sh | Loading commit data... | |
mksigtab.sh | Loading commit data... | |
mksysinfo.sh | Loading commit data... | |
mvifdiff.sh | Loading commit data... | |
sysinfo.c | Loading commit data... |