Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
golang
/
1.22.0
/
test
/
fixedbugs
/
Filename :
issue8158.go
back
Copy
// run // Copyright 2014 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 main import ( "runtime" "time" ) func main() { c := make(chan bool, 1) go f1(c) <-c time.Sleep(10 * time.Millisecond) go f2(c) <-c } func f1(done chan bool) { defer func() { recover() done <- true runtime.Goexit() // left stack-allocated Panic struct on gp->panic stack }() panic("p") } func f2(done chan bool) { defer func() { recover() done <- true runtime.Goexit() }() time.Sleep(10 * time.Millisecond) // overwrote Panic struct with Timer struct runtime.GC() // walked gp->panic list, found mangled Panic struct, crashed panic("p") }