*What version of Go are you using (go version)?* 1.9.3~latest version *What operating system and processor architecture are you using?* x86-64
*What did you do?* test runtime.Callers function in a panic process, test code as below: package main import ( "fmt" "runtime" ) func test() { var zero = 0 _ = 1/zero } func Stack() { var pc [16]uintptr n := runtime.Callers(0, pc[:]) fmt.Println(n,pc) callers := pc[:n] frames := runtime.CallersFrames(callers) //use CallersFrames for { frame, ok := frames.Next() if !ok { break } fmt.Printf("%s %s %d\n", frame.Func.Name(), frame.File, frame.Line) } fmt.Println("============================") var name, file string var line int for _, pc := range pc[:n] { fn := runtime.FuncForPC(pc) ////use FuncForPC if fn == nil { fmt.Println("fn = nil") continue } file, line = fn.FileLine(pc) name = fn.Name() fmt.Printf("%s %s %d\n", name, file, line) } } func main() { defer func(){ if err:=recover();err!=nil{ Stack() ///mt.Println() } }() test() } *What did you expect to see?* all stack dispalyed,like: *What did you see instead?* miss some function missing. 9 [163520 878784 880704 556224 329504 323712 880512 341920 564417 0 0 0 0 0 0 0] runtime.Callers /usr/local/go/src/runtime/extern.go 218 main.Stack /tmp/sandbox512058979/main.go 16 main.main.func1 /tmp/sandbox512058979/main.go 47 runtime.call16 /usr/local/go/src/runtime/asm_amd64p32.s 392 runtime.gopanic /usr/local/go/src/runtime/panic.go 513 runtime.panicdivide /usr/local/go/src/runtime/panic.go 61 /tmp/sandbox512058979/main.go 10 --------- use CallerFrames miss function name main.main /tmp/sandbox512058979/main.go 52 runtime.main /usr/local/go/src/runtime/proc.go 201 ============================ runtime.Callers /usr/local/go/src/runtime/extern.go 218 main.Stack /tmp/sandbox512058979/main.go 16 main.main.func1 /tmp/sandbox512058979/main.go 47 runtime.call16 /usr/local/go/src/runtime/asm_amd64p32.s 392 runtime.gopanic /usr/local/go/src/runtime/panic.go 514 runtime.panicdivide /usr/local/go/src/runtime/panic.go 61main.main /tmp/sandbox512058979/main.go 10 ---------- use FuncForPC miss stack main.test, and this line number is wrong runtime.main /usr/local/go/src/runtime/proc.go 210 runtime.goexit /usr/local/go/src/runtime/asm_amd64p32.s 524 *when i run program in debug mod, the result is OK.* 10 [4223048 4818604 4821394 4518130 4363057 4358245 4818349 4821271 4370786 4527169 0 0 0 0 0 0] runtime.Callers D:/Go/src/runtime/extern.go 212 main.Stack E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 16 main.main.func1 E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 47 runtime.call32 D:/Go/src/runtime/asm_amd64.s 509 runtime.gopanic D:/Go/src/runtime/panic.go 491 runtime.panicdivide D:/Go/src/runtime/panic.go 42 main.test E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 10 main.main E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 52 runtime.main D:/Go/src/runtime/proc.go 195 ============================ runtime.Callers D:/Go/src/runtime/extern.go 212 main.Stack E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 16 main.main.func1 E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 46 runtime.call32 D:/Go/src/runtime/asm_amd64.s 509 runtime.gopanic D:/Go/src/runtime/panic.go 492 runtime.panicdivide D:/Go/src/runtime/panic.go 42 main.test E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 10 main.main E:/Git/UDM/MicroServices/GoService/src/testactor/main.go 53 runtime.main D:/Go/src/runtime/proc.go 204 runtime.goexit D:/Go/src/runtime/asm_amd64.s 2338 -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.