golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
124.11k stars 17.68k forks source link

runtime: TestGdbPython* fails on solaris #20821

Open binarycrusader opened 7 years ago

binarycrusader commented 7 years ago

On a development build of Solaris, TestGdbPythonCgo fails:

$ uname -a
SunOS darwin-sunw 5.12 s12_127 i86pc i386 i86pc
$ gdb --version
GNU gdb (GDB) 7.12.1
$ go version
go version devel +33b3cc1568 Tue Jun 27 20:45:38 2017 +0000 solaris/amd64
$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="solaris"
GOOS="solaris"
GOPATH="/builds/srwalker/gocode"
GORACE=""
GOROOT="/builds/srwalker/golang/go-trunk"
GOTOOLDIR="/builds/srwalker/golang/go/pkg/tool/solaris_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build788895360=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
$ go test -v -run TestGdbPythonCgo
=== RUN   TestGdbPythonCgo
--- FAIL: TestGdbPythonCgo (2.51s)
        runtime-gdb_test.go:55: gdb version 7.12
        runtime-gdb_test.go:218: goroutine 1 bt failed: #0  0x00007fffbf25574a in __nanosleep () from /lib/64/libc.so.1
                #1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so.1
                Backtrace stopped: previous frame inner to this frame (corrupt stack?)
FAIL
exit status 1
FAIL    runtime 2.520s

At the moment, it's unclear if this is due to GDB 7.12 or because of something else as all other runtime tests pass. I intend to investigate and root cause if possible soon.

binarycrusader commented 7 years ago

Modifying the test to print the contents of blocks at the point of failure produces:

=== RUN   TestGdbPythonCgo
map[info locals:slicevar.len = 1
slicevar.cap = 16
slicevar.ptr = "def"
mapvar = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"}
strvar = "abc" goroutine 1 bt:#0  0x00007fffbf25574a in __nanosleep () from /lib/64/libc.so.1
#1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so.1
Backtrace stopped: previous frame inner to this frame (corrupt stack?) goroutine 2 bt:#0  runtime.gopark (unlockf={void (struct runtime.g *, void *, bool *)} 0xc420030768, lock=0x6576e0 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1) at /builds/srwalker/golang/go/src/runtime/proc.go:278
#1  0x00000000004daf5e in runtime.goparkunlock (lock=0x6576e0 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1) at /builds/srwalker/golang/go/src/runtime/proc.go:283
#2  0x00000000004dac8c in runtime.forcegchelper () at /builds/srwalker/golang/go/src/runtime/proc.go:235
#3  0x0000000000501b51 in runtime.goexit () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:2337
#4  0x0000000000000000 in ?? () info goroutines:* 1 running  runtime.systemstack_switch
  2 waiting  runtime.gopark
  3 waiting  runtime.gopark
  4 runnable runtime.runfinq print mapvar:$1 = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"} print strvar:$2 = "abc"]
--- FAIL: TestGdbPythonCgo (2.50s)
        runtime-gdb_test.go:55: gdb version 7.12
        runtime-gdb_test.go:219: goroutine 1 bt failed: #0  0x00007fffbf25574a in __nanosleep () from /lib/64/libc.so.1
                #1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so.1
                Backtrace stopped: previous frame inner to this frame (corrupt stack?)
FAIL
exit status 1
FAIL    runtime 2.508s
binarycrusader commented 7 years ago

The non-cgo variant fails the same way:

=== RUN   TestGdbPython
map[info goroutines:* 1 running  runtime.systemstack_switch
  2 waiting  runtime.gopark
  3 waiting  runtime.gopark
  4 runnable runtime.runfinq print mapvar:$1 = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"} print strvar:$2 = "abc" info locals:slicevar.len = 1
slicevar.cap = 16
slicevar.ptr = "def"
mapvar = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"}
strvar = "abc" goroutine 1 bt:#0  0x00007fffbf25574a in __nanosleep () from /lib/64/libc.so
#1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so
Backtrace stopped: previous frame inner to this frame (corrupt stack?) goroutine 2 bt:#0  runtime.gopark (unlockf={void (struct runtime.g *, void *, bool *)} 0xc420030768, lock=0x53efb0 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1) at /builds/srwalker/golang/go/src/runtime/proc.go:278
#1  0x000000000042a06e in runtime.goparkunlock (lock=0x53efb0 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1) at /builds/srwalker/golang/go/src/runtime/proc.go:283
#2  0x0000000000429d9c in runtime.forcegchelper () at /builds/srwalker/golang/go/src/runtime/proc.go:235
#3  0x0000000000450be1 in runtime.goexit () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:2337
#4  0x0000000000000000 in ?? ()]
--- FAIL: TestGdbPython (1.87s)
        runtime-gdb_test.go:55: gdb version 7.12
        runtime-gdb_test.go:219: goroutine 1 bt failed: #0  0x00007fffbf25574a in __nanosleep () from /lib/64/libc.so
                #1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so
                Backtrace stopped: previous frame inner to this frame (corrupt stack?)
FAIL
exit status 1
FAIL    runtime 1.878s
ianlancetaylor commented 7 years ago

At first glance it looks like gdb is unable to do a stack backtrace for a thread stopped in __nanosleep in the standard library. This may be a lack of debug info combined with a failure to understand the function prologue. Try writing a C function that calls nanosleep and see whether gdb can do a backtrace when the process is sleeping there.

bradfitz commented 7 years ago

Marking Go 1.10 but if you want to add a t.Skip for Go 1.9, that's fine. Send a CL soon.

binarycrusader commented 7 years ago

So I manually created 'hello.go' using the sample source from the test:

$ cat hello.go 
package main

import "fmt"
import "runtime"
var gslice []string
func main() {
        mapvar := make(map[string]string,5)
        mapvar["abc"] = "def"
        mapvar["ghi"] = "jkl"
        strvar := "abc"
        ptrvar := &strvar
        slicevar := make([]string, 0, 16)
        slicevar = append(slicevar, mapvar["abc"])
        fmt.Println("hi") // line 13
        _ = ptrvar
        gslice = slicevar
        runtime.KeepAlive(mapvar)
}

Then built that and tried to run it through gdb roughly the same as the test does:

$ go build hello.go 
$ ./hello 
hi
$ gdb hello
GNU gdb (GDB) 7.12.1
....
Reading symbols from hello...done.
Loading Go Runtime support.
(gdb) add-auto-load-safe-path /builds/srwalker/golang/go/src/runtime
(gdb) info auto-load python-scripts
Loaded  Script                                                                 
Yes     /builds/srwalker/golang/go/src/runtime/runtime-gdb.py                  
        full name: /builds/srwalker/golang/go-trunk/src/runtime/runtime-gdb.py
(gdb) set python print-stack full
(gdb) br fmt.Println
Breakpoint 1 at 0x48bd90: file /builds/srwalker/golang/go/src/fmt/print.go, line 256.
(gdb) run
Starting program: /tmp/hello 
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
[New LWP    2        ]
[New LWP    3        ]
[New LWP    4        ]
[New LWP    5        ]
[New Thread 2 (LWP 2)]
[New Thread 3        ]
[New Thread 4        ]
[New Thread 5 (LWP 5)]
[Switching to Thread 1 (LWP 1)]

Thread 2 hit Breakpoint 1, fmt.Println (a= []interface {} = {...}, n=3, err=...) at /builds/srwalker/golang/go/src/fmt/print.go:256
256     func Println(a ...interface{}) (n int, err error) {
(gdb) where
#0  fmt.Println (a= []interface {} = {...}, n=3, err=...) at /builds/srwalker/golang/go/src/fmt/print.go:256
#1  0x0000000000493026 in main.main () at /tmp/hello.go:14
(gdb) info goroutines
* 1 running  runtime.systemstack_switch
  2 waiting  runtime.gopark
  3 waiting  runtime.gopark
  4 runnable runtime.runfinq
(gdb) up
#1  0x0000000000493026 in main.main () at /tmp/hello.go:14
14              fmt.Println("hi") // line 13
(gdb) print mapvar
$1 = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"}
(gdb) print strvar
$2 = "abc"
(gdb) info locals
slicevar.len = 1
slicevar.cap = 16
slicevar.ptr = "def"
mapvar = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"}
strvar = "abc"
(gdb) down
#0  fmt.Println (a= []interface {} = {...}, n=3, err=...) at /builds/srwalker/golang/go/src/fmt/print.go:256
256     func Println(a ...interface{}) (n int, err error) {
(gdb) goroutine 1 bt
#0  0x00007fffbf25574a in __nanosleep () from /lib/64/libc.so
#1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) goroutine 2 bt
#0  runtime.gopark (unlockf={void (struct runtime.g *, void *, bool *)} 0xc420032768, lock=0x53efb0 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1)
    at /builds/srwalker/golang/go/src/runtime/proc.go:278
#1  0x000000000042a06e in runtime.goparkunlock (lock=0x53efb0 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1) at /builds/srwalker/golang/go/src/runtime/proc.go:283
#2  0x0000000000429d9c in runtime.forcegchelper () at /builds/srwalker/golang/go/src/runtime/proc.go:235
#3  0x0000000000450be1 in runtime.goexit () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:2337
#4  0x0000000000000000 in ?? ()
(gdb) 
binarycrusader commented 7 years ago

A simple C program:

$ cat sleep.c 
#include <time.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
        struct timespec t, t2;
        t.tv_sec = 10;
        t.tv_nsec = 0;
        if (nanosleep(&t, &t2) < 0) {
                printf("nanosleep call failed\n");
                return (-1);
        }
        return (0);
}
$ gcc sleep.c
$ gdb ./a.out 
GNU gdb (GDB) 7.12.1
...
Reading symbols from ./a.out...(no debugging symbols found)...done.
(gdb) br nanosleep
Breakpoint 1 at 0x400e20
(gdb) run
Starting program: /tmp/a.out 
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
[Switching to Thread 1 (LWP 1)]

Thread 2 hit Breakpoint 1, 0x00007fffbf23d824 in nanosleep () from /lib/64/libc.so.1
(gdb) where
#0  0x00007fffbf23d824 in nanosleep () from /lib/64/libc.so.1
#1  0x000000000040102a in main ()
ianlancetaylor commented 7 years ago

Any idea why the Go program shows __nanosleep where the C program shows only nanosleep?

binarycrusader commented 7 years ago

My guess is the difference is where the breakpoint was set; in Solaris libc, nanosleep is just a stub that almost immediately calls __nanosleep:

$ LD_BIND_NOW=1 gdb ./a.out 
GNU gdb (GDB) 7.12.1
...
Reading symbols from ./a.out...(no debugging symbols found)...done.
(gdb) br __nanosleep
Function "__nanosleep" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (__nanosleep) pending.
(gdb) run
Starting program: /tmp/a.out 
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
[Switching to Thread 1 (LWP 1)]

Thread 2 hit Breakpoint 1, 0x00007fffbf255740 in __nanosleep () from /lib/64/libc.so.1
(gdb) where
#0  0x00007fffbf255740 in __nanosleep () from /lib/64/libc.so.1
#1  0x00007fffbf23d89a in nanosleep () from /lib/64/libc.so.1
#2  0x000000000040102a in main ()
(gdb) 
binarycrusader commented 7 years ago

Here's a minimal Go program that calls nanosleep via a C wrapper:

$ cat sleep.go
package main
// #include <time.h>
// #include <stdio.h>
// void mysleep(void) {
//      struct timespec t, t2;
//      t.tv_sec = 1;
//      t.tv_nsec = 0;
//      if (nanosleep(&t, &t2) < 0) {
//              printf("nanosleep call failed\n");
//              return;
//      }
// }
import "C"
import "fmt"

func main() {
        C.mysleep();
        fmt.Println("slept")
}

Built and run in gdb similar to failing test:

$ LD_BIND_NOW=1 gdb ./sleep
GNU gdb (GDB) 7.12.1
...
Reading symbols from ./sleep...done.
Loading Go Runtime support.
(gdb) add-auto-load-safe-path /builds/srwalker/golang/go/src/runtime
(gdb) info auto-load python-scripts
Loaded  Script                                                                 
Yes     /builds/srwalker/golang/go/src/runtime/runtime-gdb.py                  
        full name: /builds/srwalker/golang/go-trunk/src/runtime/runtime-gdb.py
(gdb) set python print-stack full
(gdb) br mysleep
Thread 2 hit Breakpoint 1, mysleep () at /tmp/sleep.go:8
8       //      if (nanosleep(&t, &t2) < 0) {
(gdb) where
#0  mysleep () at /tmp/sleep.go:8
#1  0x00000000005003c9 in runtime.asmcgocall () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:624
#2  0x00007fffbffff3c8 in ?? ()
#3  0x00000000004fc222 in runtime.(*mcache).nextFree.func1 () at /builds/srwalker/golang/go/src/runtime/malloc.go:553
#4  0x000000c420000180 in ?? ()
#5  0x00000000004dd1e0 in ?? () at /builds/srwalker/golang/go/src/runtime/proc.go:1060
#6  0x0000000000657000 in runtime.sched ()
#7  0x00007fffbffff420 in ?? ()
#8  0x0000000000657060 in ?? ()
#9  0x00007fffbffff410 in ?? ()
#10 0x00000000004dd244 in runtime.mstart () at /builds/srwalker/golang/go/src/runtime/proc.go:1142
#11 0x00000000004fe9b5 in runtime.rt0_go () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:186
#12 0x0000000000000001 in ?? ()
#13 0x00007fffbffff468 in ?? ()
#14 0x0000000000000001 in ?? ()
#15 0x00007fffbffff468 in ?? ()
#16 0x00007fffbffff450 in ?? ()
#17 0x00000000004b1873 in _start ()
(gdb) info goroutines
* 1 syscall  runtime.asmcgocall
  2 waiting  runtime.gopark
  3 waiting  runtime.gopark
  4 runnable runtime.runfinq
(gdb) br __nanosleep
Breakpoint 2 at 0x7fffbf255740
(gdb) cont
Continuing.
Thread 2 hit Breakpoint 2, 0x00007fffbf255740 in __nanosleep () from /lib/64/libc.so.1
(gdb) where
#0  0x00007fffbf255740 in __nanosleep () from /lib/64/libc.so.1
#1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so.1
#2  0x0000000000543655 in mysleep () at /tmp/sleep.go:8
#3  0x00000000005003c9 in runtime.asmcgocall () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:624
#4  0x00007fffbffff3c8 in ?? ()
#5  0x00000000004fc222 in runtime.(*mcache).nextFree.func1 () at /builds/srwalker/golang/go/src/runtime/malloc.go:553
#6  0x000000c420000180 in ?? ()
#7  0x00000000004dd1e0 in ?? () at /builds/srwalker/golang/go/src/runtime/proc.go:1060
#8  0x0000000000657000 in runtime.sched ()
#9  0x00007fffbffff420 in ?? ()
#10 0x0000000000657060 in ?? ()
#11 0x00007fffbffff410 in ?? ()
#12 0x00000000004dd244 in runtime.mstart () at /builds/srwalker/golang/go/src/runtime/proc.go:1142
#13 0x00000000004fe9b5 in runtime.rt0_go () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:186
#14 0x0000000000000001 in ?? ()
#15 0x00007fffbffff468 in ?? ()
#16 0x0000000000000001 in ?? ()
#17 0x00007fffbffff468 in ?? ()
#18 0x00007fffbffff450 in ?? ()
#19 0x00000000004b1873 in _start ()
(gdb) info goroutines
* 1 syscall  runtime.asmcgocall
  2 waiting  runtime.gopark
  3 waiting  runtime.gopark
  4 runnable runtime.runfinq
(gdb) goroutine 1 bt
#0  runtime.asmcgocall () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:610
#1  0x00000000004b2dfd in runtime.cgocall (fn=0x543670 <_cgo_dab3f36848c5_Cfunc_mysleep>, arg=0xc420053f30, ~r2=537214832) at /builds/srwalker/golang/go/src/runtime/cgocall.go:133
#2  0x0000000000543531 in main._Cfunc_mysleep (r1=...) at command-line-arguments/_obj/_cgo_gotypes.go:41
#3  0x0000000000543572 in main.main () at /tmp/sleep.go:17
(gdb) goroutine 2 bt
#0  runtime.gopark (unlockf={void (struct runtime.g *, void *, bool *)} 0xc420030768, lock=0x656b80 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1)
    at /builds/srwalker/golang/go/src/runtime/proc.go:278
#1  0x00000000004da68e in runtime.goparkunlock (lock=0x656b80 <runtime.forcegc>, reason="force gc (idle)", traceEv=20 '\024', traceskip=1) at /builds/srwalker/golang/go/src/runtime/proc.go:283
#2  0x00000000004da3bc in runtime.forcegchelper () at /builds/srwalker/golang/go/src/runtime/proc.go:235
#3  0x0000000000501281 in runtime.goexit () at /builds/srwalker/golang/go/src/runtime/asm_amd64.s:2337
#4  0x0000000000000000 in ?? ()
ianlancetaylor commented 7 years ago

Thanks. I have no idea what is going on.

binarycrusader commented 7 years ago

I built and tried gdb 7.11 as well; same problem. As such, I'm going to just add a t.Skip() for the moment until I have time to figure out what's gone wrong. The other test failures are more important at the moment.

gopherbot commented 7 years ago

CL https://golang.org/cl/46913 mentions this issue.

ianlancetaylor commented 6 years ago

This may have been affected by https://golang.org/cl/99617, which is in the 1.11beta1 release. It would be interesting to see whether the test passes now.

jclulow commented 5 years ago

This appears to be true on illumos too, judging by this test run on an OpenIndiana system:

##### Testing packages.
# go tool dist test -run=^go_test:runtime$
--- FAIL: TestGdbPython (0.80s)
    runtime-gdb_test.go:65: gdb version 7.10
    runtime-gdb_test.go:232: gdb output: Loading Go Runtime support.
        Loaded  Script                                                                 
        Yes     /ws/go/master/src/runtime/runtime-gdb.py                               
        Breakpoint 1 at 0x494022: file /tmp/go-build917035161/main.go, line 15.
        [Thread debugging using libthread_db enabled]
        hi
        [Switching to Thread 1 (LWP 1)]

        Breakpoint 1, main.main () at /tmp/go-build917035161/main.go:17
        17              gslice = slicevar
        BEGIN info goroutines
        * 1 running  runtime.systemstack_switch
          2 waiting  runtime.gopark
          17 waiting  runtime.gopark
          18 waiting  runtime.gopark
          33 waiting  runtime.gopark
        END
        BEGIN print mapvar
        $1 = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"}
        END
        BEGIN print strvar
        $2 = "abc"
        END
        BEGIN info locals
        mapvar = map[string]string = {["abc"] = "def", ["ghi"] = "jkl"}
        strvar = "abc"
        slicevar =  []string
        END
        BEGIN goroutine 1 bt
        #0  0xfffffd7feeeb9d7a in __nanosleep () from /lib/64/libc.so
        #1  0xfffffd7feeea3ba9 in nanosleep () from /lib/64/libc.so
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        END
        BEGIN goroutine 2 bt
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc000040fb0, lock=0x562e80 <runtime.forcegc>, reason=17 '\021', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000042bfe7 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.forcegchelper () at /ws/go/master/src/runtime/proc.go:253
        #3  0x0000000000453461 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        END
        BEGIN goroutine all bt
        #0  0xfffffd7feeeb9d7a in __nanosleep () from /lib/64/libc.so
        #1  0xfffffd7feeea3ba9 in nanosleep () from /lib/64/libc.so
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc000040fb0, lock=0x562e80 <runtime.forcegc>, reason=17 '\021', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000042bfe7 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.forcegchelper () at /ws/go/master/src/runtime/proc.go:253
        #3  0x0000000000453461 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc00003c7a8, lock=0x562f80 <runtime.sweep>, reason=12 '\f', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000041f1bc in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.bgsweep (c=0xc00006c000) at /ws/go/master/src/runtime/mgcsweep.go:70
        #3  0x0000000000453461 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x000000c00006c000 in ?? ()
        #5  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc00003cf40, lock=0x563060 <runtime.scavenge>, reason=13 '\r', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000041e851 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.bgscavenge (c=0xc00006c000) at /ws/go/master/src/runtime/mgcscavenge.go:299
        #3  0x0000000000453461 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x000000c00006c000 in ?? ()
        #5  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc00009c758, lock=0x57e430 <runtime.finlock>, reason=16 '\020', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x0000000000415293 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.runfinq () at /ws/go/master/src/runtime/mfinal.go:175
        #3  0x0000000000453461 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        END
        Breakpoint 2 at 0x49404d: file /tmp/go-build917035161/main.go, line 18.

        Breakpoint 2, main.main () at /tmp/go-build917035161/main.go:19
        19      }  // END_OF_PROGRAM
        BEGIN goroutine 1 bt at the end
        #0  0xfffffd7feeeb9d7a in __nanosleep () from /lib/64/libc.so
        #1  0xfffffd7feeea3ba9 in nanosleep () from /lib/64/libc.so
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        END

    runtime-gdb_test.go:94: malformed backtrace at line 2: Backtrace stopped: previous frame inner to this frame (corrupt stack?)
--- FAIL: TestGdbPythonCgo (1.28s)
    runtime-gdb_test.go:65: gdb version 7.10
    runtime-gdb_test.go:232: gdb output: 
        warning: Loadable section ".note.go.buildid" outside of ELF segments
        Loading Go Runtime support.
        Loading Go Runtime support.
        Breakpoint 1 at 0x4ad28a: file /tmp/go-build484688290/main.go, line 15.
        [Thread debugging using libthread_db enabled]
        [Switching to Thread 1 (LWP 1)]

        Breakpoint 1, main.main () at /tmp/go-build484688290/main.go:15
        15              fmt.Println("hi")
        BEGIN info goroutines
        * 1 running  runtime.systemstack_switch
          2 waiting  runtime.gopark
          18 waiting  runtime.gopark
          19 waiting  runtime.gopark
          34 waiting  runtime.gopark
        END
        BEGIN print mapvar
        $1 = map[string]string = {["ghi"] = "jkl", ["abc"] = "def"}
        END
        BEGIN print strvar
        $2 = "abc"
        END
        BEGIN info locals
        mapvar = map[string]string = {["ghi"] = "jkl", ["abc"] = "def"}
        strvar = "abc"
        slicevar =  []string
        END
        BEGIN goroutine 1 bt
        #0  0xfffffd7fed783cb7 in __lwp_park () from /lib/64/libc.so.1
        #1  0xfffffd7fed7761d8 in sema_wait_impl () from /lib/64/libc.so.1
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        END
        BEGIN goroutine 2 bt
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc000040fb0, lock=0x58a970 <runtime.forcegc>, reason=17 '\021', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x00000000004451b7 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.forcegchelper () at /ws/go/master/src/runtime/proc.go:253
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        END
        BEGIN goroutine all bt
        #0  0xfffffd7fed783cb7 in __lwp_park () from /lib/64/libc.so.1
        #1  0xfffffd7fed7761d8 in sema_wait_impl () from /lib/64/libc.so.1
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        No such goroutine:  17
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc000040fb0, lock=0x58a970 <runtime.forcegc>, reason=17 '\021', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x00000000004451b7 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.forcegchelper () at /ws/go/master/src/runtime/proc.go:253
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc00003c7a8, lock=0x58aa80 <runtime.sweep>, reason=12 '\f', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000043838c in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.bgsweep (c=0xc00007c000) at /ws/go/master/src/runtime/mgcsweep.go:70
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x000000c00007c000 in ?? ()
        #5  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc00003cf40, lock=0x58ab60 <runtime.scavenge>, reason=13 '\r', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x0000000000437a21 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.bgscavenge (c=0xc00007c000) at /ws/go/master/src/runtime/mgcscavenge.go:299
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x000000c00007c000 in ?? ()
        #5  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc0000ac758, lock=0x5a5f50 <runtime.finlock>, reason=16 '\020', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000042e463 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.runfinq () at /ws/go/master/src/runtime/mfinal.go:175
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        END
        Breakpoint 2 at 0x4ad30d: file /tmp/go-build484688290/main.go, line 19.
        hi

        Breakpoint 2, main.main () at /tmp/go-build484688290/main.go:20
        20      }  // END_OF_PROGRAM
        BEGIN goroutine 1 bt at the end
        #0  0xfffffd7fed783cb7 in __lwp_park () from /lib/64/libc.so.1
        #1  0xfffffd7fed7761d8 in sema_wait_impl () from /lib/64/libc.so.1
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        END

    runtime-gdb_test.go:248: package testing source file: /ws/go/master/src/runtime/runtime-gdb_test.go
    runtime-gdb_test.go:249: failed to load Go runtime support: 

        warning: Loadable section ".note.go.buildid" outside of ELF segments
        Loading Go Runtime support.
        Loading Go Runtime support.
        Breakpoint 1 at 0x4ad28a: file /tmp/go-build484688290/main.go, line 15.
        [Thread debugging using libthread_db enabled]
        [Switching to Thread 1 (LWP 1)]

        Breakpoint 1, main.main () at /tmp/go-build484688290/main.go:15
        15              fmt.Println("hi")
        BEGIN info goroutines
        * 1 running  runtime.systemstack_switch
          2 waiting  runtime.gopark
          18 waiting  runtime.gopark
          19 waiting  runtime.gopark
          34 waiting  runtime.gopark
        END
        BEGIN print mapvar
        $1 = map[string]string = {["ghi"] = "jkl", ["abc"] = "def"}
        END
        BEGIN print strvar
        $2 = "abc"
        END
        BEGIN info locals
        mapvar = map[string]string = {["ghi"] = "jkl", ["abc"] = "def"}
        strvar = "abc"
        slicevar =  []string
        END
        BEGIN goroutine 1 bt
        #0  0xfffffd7fed783cb7 in __lwp_park () from /lib/64/libc.so.1
        #1  0xfffffd7fed7761d8 in sema_wait_impl () from /lib/64/libc.so.1
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        END
        BEGIN goroutine 2 bt
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc000040fb0, lock=0x58a970 <runtime.forcegc>, reason=17 '\021', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x00000000004451b7 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.forcegchelper () at /ws/go/master/src/runtime/proc.go:253
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        END
        BEGIN goroutine all bt
        #0  0xfffffd7fed783cb7 in __lwp_park () from /lib/64/libc.so.1
        #1  0xfffffd7fed7761d8 in sema_wait_impl () from /lib/64/libc.so.1
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        No such goroutine:  17
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc000040fb0, lock=0x58a970 <runtime.forcegc>, reason=17 '\021', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x00000000004451b7 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.forcegchelper () at /ws/go/master/src/runtime/proc.go:253
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc00003c7a8, lock=0x58aa80 <runtime.sweep>, reason=12 '\f', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000043838c in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.bgsweep (c=0xc00007c000) at /ws/go/master/src/runtime/mgcsweep.go:70
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x000000c00007c000 in ?? ()
        #5  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc00003cf40, lock=0x58ab60 <runtime.scavenge>, reason=13 '\r', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x0000000000437a21 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.bgscavenge (c=0xc00007c000) at /ws/go/master/src/runtime/mgcscavenge.go:299
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x000000c00007c000 in ?? ()
        #5  0x0000000000000000 in ?? ()
        #0  runtime.gopark (unlockf={void (runtime.g *, void *, bool *)} 0xc0000ac758, lock=0x5a5f50 <runtime.finlock>, reason=16 '\020', traceEv=20 '\024', traceskip=1) at /ws/go/master/src/runtime/proc.go:305
        #1  0x000000000042e463 in runtime.goparkunlock (lock=<optimized out>, reason=<optimized out>, traceEv=<optimized out>, traceskip=<optimized out>) at /ws/go/master/src/runtime/proc.go:310
        #2  runtime.runfinq () at /ws/go/master/src/runtime/mfinal.go:175
        #3  0x000000000046c7e1 in runtime.goexit () at /ws/go/master/src/runtime/asm_amd64.s:1375
        #4  0x0000000000000000 in ?? ()
        END
        Breakpoint 2 at 0x4ad30d: file /tmp/go-build484688290/main.go, line 19.
        hi

        Breakpoint 2, main.main () at /tmp/go-build484688290/main.go:20
        20      }  // END_OF_PROGRAM
        BEGIN goroutine 1 bt at the end
        #0  0xfffffd7fed783cb7 in __lwp_park () from /lib/64/libc.so.1
        #1  0xfffffd7fed7761d8 in sema_wait_impl () from /lib/64/libc.so.1
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
        END
FAIL
FAIL    runtime 10.894s
gopherbot commented 5 years ago

Change https://golang.org/cl/202357 mentions this issue: runtime: temporarily skip gdb python-related tests on solaris