modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/fixedbugs/issue13169.go (about)

     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  
     7  package main
     8  
     9  type T struct {
    10  	a, b, c int
    11  }
    12  
    13  func usestack() {
    14  	usestack1(32)
    15  }
    16  func 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  
    25  const n = 100000
    26  
    27  func 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  }