...
Run Format

Source file test/fixedbugs/issue5963.go

Documentation: test/fixedbugs

  // 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
  */
  

View as plain text