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 |
---|---|---|
.. | ||
arch.h | Loading commit data... | |
array.h | Loading commit data... | |
defs.h | Loading commit data... | |
env_posix.c | Loading commit data... | |
getncpu-bsd.c | Loading commit data... | |
getncpu-irix.c | Loading commit data... | |
getncpu-linux.c | Loading commit data... | |
getncpu-none.c | Loading commit data... | |
getncpu-solaris.c | Loading commit data... | |
go-alloc.h | Loading commit data... | |
go-assert.c | Loading commit data... | |
go-assert.h | Loading commit data... | |
go-breakpoint.c | Loading commit data... | |
go-caller.c | Loading commit data... | |
go-callers.c | Loading commit data... | |
go-cdiv.c | Loading commit data... | |
go-cgo.c | Loading commit data... | |
go-construct-map.c | Loading commit data... | |
go-ffi.c | Loading commit data... | |
go-fieldtrack.c | Loading commit data... | |
go-libmain.c | Loading commit data... | |
go-main.c | Loading commit data... | |
go-matherr.c | Loading commit data... | |
go-memclr.c | Loading commit data... | |
go-memcmp.c | Loading commit data... | |
go-memequal.c | Loading commit data... | |
go-memmove.c | Loading commit data... | |
go-nanotime.c | Loading commit data... | |
go-new.c | Loading commit data... | |
go-nosys.c | Loading commit data... | |
go-now.c | Loading commit data... | |
go-reflect-call.c | Loading commit data... | |
go-runtime-error.c | Loading commit data... | |
go-setenv.c | Loading commit data... | |
go-signal.c | Loading commit data... | |
go-string.h | Loading commit data... | |
go-strslice.c | Loading commit data... | |
go-type-complex.c | Loading commit data... | |
go-type-float.c | Loading commit data... | |
go-type-identity.c | Loading commit data... | |
go-type-string.c | Loading commit data... | |
go-type.h | Loading commit data... | |
go-typedesc-equal.c | Loading commit data... | |
go-unsafe-new.c | Loading commit data... | |
go-unsafe-newarray.c | Loading commit data... | |
go-unsafe-pointer.c | Loading commit data... | |
go-unsetenv.c | Loading commit data... | |
go-unwind.c | Loading commit data... | |
go-varargs.c | Loading commit data... | |
goc2c.c | Loading commit data... | |
heapdump.c | Loading commit data... | |
malloc.goc | Loading commit data... | |
malloc.h | Loading commit data... | |
mcache.c | Loading commit data... | |
mcentral.c | Loading commit data... | |
mem.c | Loading commit data... | |
mem_posix_memalign.c | Loading commit data... | |
mfixalloc.c | Loading commit data... | |
mgc0.c | Loading commit data... | |
mgc0.h | Loading commit data... | |
mheap.c | Loading commit data... | |
msize.c | Loading commit data... | |
panic.c | Loading commit data... | |
parfor.c | Loading commit data... | |
print.c | Loading commit data... | |
proc.c | Loading commit data... | |
rtems-task-variable-add.c | Loading commit data... | |
runtime.h | Loading commit data... | |
runtime_c.c | Loading commit data... | |
thread-linux.c | Loading commit data... | |
thread-sema.c | Loading commit data... | |
thread.c | Loading commit data... | |
yield.c | Loading commit data... |