1// run
2
3// Copyright 2015 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
9type T struct {
10	a, b, c int
11}
12
13func usestack() {
14	usestack1(32)
15}
16func usestack1(d int) byte {
17	if d == 0 {
18		return 0
19	}
20	var b [1024]byte
21	usestack1(d - 1)
22	return b[3]
23}
24
25const n = 100000
26
27func main() {
28	c := make(chan interface{})
29	done := make(chan bool)
30
31	for i := 0; i < 10; i++ {
32		go func() {
33			for j := 0; j < n; j++ {
34				c <- new(T)
35			}
36			done <- true
37		}()
38		go func() {
39			for j := 0; j < n; j++ {
40				_ = (<-c).(*T)
41				usestack()
42			}
43			done <- true
44		}()
45	}
46	for i := 0; i < 20; i++ {
47		<-done
48	}
49}
50