From: Ian Lance Taylor Date: Sun, 19 Apr 2015 01:19:06 +0000 (-0700) Subject: runtime: no deadlock error if buildmode=c-archive or c-shared X-Git-Tag: go1.5beta1~1013 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=725aa3451a73498ed43cf2279f1609a4dffbe04a;p=gostls13.git runtime: no deadlock error if buildmode=c-archive or c-shared Change-Id: I4ee6dac32bd3759aabdfdc92b235282785fbcca9 Reviewed-on: https://go-review.googlesource.com/9083 Reviewed-by: David Crawshaw --- diff --git a/src/runtime/proc1.go b/src/runtime/proc1.go index 2786e7e441..a46ebc8cec 100644 --- a/src/runtime/proc1.go +++ b/src/runtime/proc1.go @@ -2711,6 +2711,13 @@ func incidlelocked(v int32) { // Check for deadlock situation. // The check is based on number of running M's, if 0 -> deadlock. func checkdead() { + // For -buildmode=c-shared or -buildmode=c-archive it's OK if + // there are no running goroutines. The calling program is + // assumed to be running. + if islibrary || isarchive { + return + } + // If we are dying because of a signal caught on an already idle thread, // freezetheworld will cause all running threads to block. // And runtime will essentially enter into deadlock state,