From: Austin Clements Date: Wed, 22 Oct 2014 20:39:31 +0000 (-0400) Subject: [dev.power64] runtime: fix early GC of Defer objects X-Git-Tag: go1.5beta1~2684^2~25^2~14 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a9b9ecc9ef3a73ac0ab74b57ca7ef864f1bd9ac8;p=gostls13.git [dev.power64] runtime: fix early GC of Defer objects go_bootstrap was panicking during runtime initialization (under runtime.main) because Defer objects were being prematurely GC'd. This happened because of an incorrect change to runtime·unrollgcprog_m to make it endian-agnostic during the conversion of runtime bitmaps to byte arrays. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/161960044 --- diff --git a/src/runtime/mgc0.c b/src/runtime/mgc0.c index d376c1cf69..02f7eba120 100644 --- a/src/runtime/mgc0.c +++ b/src/runtime/mgc0.c @@ -1799,7 +1799,7 @@ runtime·unrollgcprog_m(void) } // atomic way to say mask[0] = 1 - x = typ->gc[0]; + x = *(uintptr*)mask; ((byte*)&x)[0] = 1; runtime·atomicstorep((void**)mask, (void*)x); }