diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-10-12 15:38:56 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-10-12 15:38:56 +0000 |
commit | 543f217b7aea9a8cdc3b669c5ce7d56a1e944257 (patch) | |
tree | e893441fcdcea3e67f857c489e3e5cb2851da59e /libgo/runtime/proc.c | |
parent | 859e95abb84b67a2cb42d6e6013c16160d9c802d (diff) | |
download | gcc-543f217b7aea9a8cdc3b669c5ce7d56a1e944257.zip gcc-543f217b7aea9a8cdc3b669c5ce7d56a1e944257.tar.gz gcc-543f217b7aea9a8cdc3b669c5ce7d56a1e944257.tar.bz2 |
runtime: copy Go 1.7 runtime semaphore code
This triggered a check in releaseSudog that g.param not nil, because
libgo uses the param field when starting a goroutine. Fixed by clearing
g->param in kickoff in proc.c.
Reviewed-on: https://go-review.googlesource.com/30951
From-SVN: r241067
Diffstat (limited to 'libgo/runtime/proc.c')
-rw-r--r-- | libgo/runtime/proc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c index 98c18a7..eb9e6c2 100644 --- a/libgo/runtime/proc.c +++ b/libgo/runtime/proc.c @@ -246,12 +246,15 @@ static void kickoff(void) { void (*fn)(void*); + void *param; if(g->traceback != nil) gtraceback(g); fn = (void (*)(void*))(g->entry); - fn(g->param); + param = g->param; + g->param = nil; + fn(param); runtime_goexit(); } |