...
Run Format

Source file src/runtime/norace_linux_test.go

Documentation: runtime

  // 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.
  
  // The file contains tests that cannot run under race detector for some reason.
  // +build !race
  
  package runtime_test
  
  import (
  	"runtime"
  	"testing"
  	"time"
  	"unsafe"
  )
  
  var newOSProcDone bool
  
  //go:nosplit
  func newOSProcCreated() {
  	newOSProcDone = true
  }
  
  // Can't be run with -race because it inserts calls into newOSProcCreated()
  // that require a valid G/M.
  func TestNewOSProc0(t *testing.T) {
  	runtime.NewOSProc0(0x800000, unsafe.Pointer(runtime.FuncPC(newOSProcCreated)))
  	check := time.NewTicker(100 * time.Millisecond)
  	defer check.Stop()
  	end := time.After(5 * time.Second)
  	for {
  		select {
  		case <-check.C:
  			if newOSProcDone {
  				return
  			}
  		case <-end:
  			t.Fatalf("couldn't create new OS process")
  		}
  	}
  }
  

View as plain text