diff options
Diffstat (limited to 'src/pkg/runtime/proc_test.go')
| -rw-r--r-- | src/pkg/runtime/proc_test.go | 43 | 
1 files changed, 43 insertions, 0 deletions
| diff --git a/src/pkg/runtime/proc_test.go b/src/pkg/runtime/proc_test.go new file mode 100644 index 000000000..a15b2d80a --- /dev/null +++ b/src/pkg/runtime/proc_test.go @@ -0,0 +1,43 @@ +// Copyright 2011 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 runtime_test + +import ( +	"runtime" +	"testing" +) + +var stop = make(chan bool, 1) + +func perpetuumMobile() { +	select { +	case <-stop: +	default: +		go perpetuumMobile() +	} +} + +func TestStopTheWorldDeadlock(t *testing.T) { +	if testing.Short() { +		t.Logf("skipping during short test") +		return +	} +	runtime.GOMAXPROCS(3) +	compl := make(chan int, 1) +	go func() { +		for i := 0; i != 1000; i += 1 { +			runtime.GC() +		} +		compl <- 0 +	}() +	go func() { +		for i := 0; i != 1000; i += 1 { +			runtime.GOMAXPROCS(3) +		} +	}() +	go perpetuumMobile() +	<-compl +	stop <- true +} | 
