func main() { stack := flag.Int("stack", 0, "maximum per goroutine stack size or 0 for the default") flag.Parse() if *stack > 0 { debug.SetMaxStack(*stack) } r(1) }
func StackOverflow() { var f func() byte f = func() byte { var buf [64 << 10]byte return buf[0] + f() } debug.SetMaxStack(1474560) f() }
func testImportCycle(pkg string, t *testing.T) { ctx := testContext(t) debug.SetMaxStack(1 << 18) _, err := ctx.ResolvePackage(pkg) if strings.Index(err.Error(), "cycle detected") == -1 { t.Errorf("ctx.ResolvePackage returned wrong error. Expected cycle detection, got: %v", err) } if err == nil { t.Errorf("ctx.ResolvePackage should have returned an error for cycle, returned nil") } }
func init() { // This test runs the risk of entering infinite recursion if it fails. // Limit the stack size to 10 megs to creash early in that case instead of // potentially taking down the box... rdebug.SetMaxStack(10 * 1 << 20) }
func TestUNC(t *testing.T) { // Test that this doesn't go into an infinite recursion. // See golang.org/issue/15879. defer debug.SetMaxStack(debug.SetMaxStack(1e6)) filepath.Glob(`\\?\c:\*`) }