• Russ Cox's avatar
    runtime: record goroutine creation pc and display in traceback · 324cc3d0
    Russ Cox authored
    package main
    
    func main() {
            go func() { *(*int)(nil) = 0 }()
            select{}
    }
    
    panic: runtime error: invalid memory address or nil pointer dereference
    
    [signal 0xb code=0x1 addr=0x0 pc=0x1c96]
    
    runtime.panic+0xac /Users/rsc/g/go/src/pkg/runtime/proc.c:1083
            runtime.panic(0x11bf0, 0xf8400011f0)
    runtime.panicstring+0xa3 /Users/rsc/g/go/src/pkg/runtime/runtime.c:116
            runtime.panicstring(0x29a57, 0x0)
    runtime.sigpanic+0x144 /Users/rsc/g/go/src/pkg/runtime/darwin/thread.c:470
            runtime.sigpanic()
    main._func_001+0x16 /Users/rsc/g/go/src/pkg/runtime/x.go:188
            main._func_001()
    runtime.goexit /Users/rsc/g/go/src/pkg/runtime/proc.c:150
            runtime.goexit()
    ----- goroutine created by -----
    main.main+0x3d /Users/rsc/g/go/src/pkg/runtime/x.go:4
    
    goroutine 1 [4]:
    runtime.gosched+0x77 /Users/rsc/g/go/src/pkg/runtime/proc.c:598
            runtime.gosched()
    runtime.block+0x27 /Users/rsc/g/go/src/pkg/runtime/chan.c:680
            runtime.block()
    main.main+0x44 /Users/rsc/g/go/src/pkg/runtime/x.go:5
            main.main()
    runtime.mainstart+0xf /Users/rsc/g/go/src/pkg/runtime/amd64/asm.s:77
            runtime.mainstart()
    runtime.goexit /Users/rsc/g/go/src/pkg/runtime/proc.c:150
            runtime.goexit()
    ----- goroutine created by -----
    _rt0_amd64+0x8e /Users/rsc/g/go/src/pkg/runtime/amd64/asm.s:64
    
    Fixes #1563.
    
    R=r
    CC=golang-dev
    https://golang.org/cl/4243046
    324cc3d0
Name
Last commit
Last update
..
386 Loading commit data...
amd64 Loading commit data...
arm Loading commit data...
cgo Loading commit data...
darwin Loading commit data...
debug Loading commit data...
freebsd Loading commit data...
linux Loading commit data...
plan9 Loading commit data...
pprof Loading commit data...
windows Loading commit data...
Makefile Loading commit data...
cgocall.c Loading commit data...
cgocall.h Loading commit data...
chan.c Loading commit data...
complex.c Loading commit data...
debug.go Loading commit data...
error.go Loading commit data...
export_test.go Loading commit data...
extern.go Loading commit data...
float.c Loading commit data...
goc2c.c Loading commit data...
hashmap.c Loading commit data...
hashmap.h Loading commit data...
iface.c Loading commit data...
malloc.goc Loading commit data...
malloc.h Loading commit data...
mcache.c Loading commit data...
mcentral.c Loading commit data...
mfinal.c Loading commit data...
mfixalloc.c Loading commit data...
mgc0.c Loading commit data...
mheap.c Loading commit data...
mkasmh.sh Loading commit data...
mkgodefs.sh Loading commit data...
mkversion.c Loading commit data...
mprof.goc Loading commit data...
msize.c Loading commit data...
print.c Loading commit data...
proc.c Loading commit data...
reflect.goc Loading commit data...
rune.c Loading commit data...
runtime-gdb.py Loading commit data...
runtime.c Loading commit data...
runtime.h Loading commit data...
runtime1.goc Loading commit data...
sema.goc Loading commit data...
sig.go Loading commit data...
sigqueue.goc Loading commit data...
slice.c Loading commit data...
softfloat64.go Loading commit data...
softfloat64_test.go Loading commit data...
stack.h Loading commit data...
string.goc Loading commit data...
symtab.c Loading commit data...
type.go Loading commit data...
type.h Loading commit data...