| // run | 
 |  | 
 | // Copyright 2013 The Go Authors.  All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | // Used to die in runtime due to init goroutine exiting while | 
 | // locked to main thread. | 
 |  | 
 | package main | 
 |  | 
 | import ( | 
 | 	"os" | 
 | 	"runtime" | 
 | ) | 
 |  | 
 | func init() { | 
 | 	c := make(chan int, 1) | 
 | 	defer func() { | 
 | 		c <- 0 | 
 | 	}() | 
 | 	go func() { | 
 | 		os.Exit(<-c) | 
 | 	}() | 
 | 	runtime.Goexit() | 
 | } | 
 |  | 
 | func main() { | 
 | } | 
 |  | 
 | /* Before fix: | 
 |  | 
 | invalid m->locked = 2 | 
 | fatal error: internal lockOSThread error | 
 |  | 
 | goroutine 2 [runnable]: | 
 | runtime.MHeap_Scavenger() | 
 | 	/Users/rsc/g/go/src/pkg/runtime/mheap.c:438 | 
 | runtime.goexit() | 
 | 	/Users/rsc/g/go/src/pkg/runtime/proc.c:1313 | 
 | created by runtime.main | 
 | 	/Users/rsc/g/go/src/pkg/runtime/proc.c:165 | 
 |  | 
 | goroutine 3 [runnable]: | 
 | main.funcĀ·002() | 
 | 	/Users/rsc/g/go/test/fixedbugs/issue5963.go:22 | 
 | created by main.initĀ·1 | 
 | 	/Users/rsc/g/go/test/fixedbugs/issue5963.go:24 +0xb9 | 
 | exit status 2 | 
 | */ |