...
Run Format

Source file src/runtime/testdata/testprog/crash.go

Documentation: runtime/testdata/testprog

  // Copyright 2015 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.
  
  package main
  
  import (
  	"fmt"
  	"runtime"
  )
  
  func init() {
  	register("Crash", Crash)
  }
  
  func test(name string) {
  	defer func() {
  		if x := recover(); x != nil {
  			fmt.Printf(" recovered")
  		}
  		fmt.Printf(" done\n")
  	}()
  	fmt.Printf("%s:", name)
  	var s *string
  	_ = *s
  	fmt.Print("SHOULD NOT BE HERE")
  }
  
  func testInNewThread(name string) {
  	c := make(chan bool)
  	go func() {
  		runtime.LockOSThread()
  		test(name)
  		c <- true
  	}()
  	<-c
  }
  
  func Crash() {
  	runtime.LockOSThread()
  	test("main")
  	testInNewThread("new-thread")
  	testInNewThread("second-new-thread")
  	test("main-again")
  }
  

View as plain text