Open bradfitz opened 7 years ago
CL https://golang.org/cl/30596 mentions this issue.
I believe ppc64 (big endian) is essentially unsupported. Unless the problem also manifests on ppc64le, I think this is unplanned work.
Unless the problem also manifests on ppc64le, I think this is unplanned work.
Here's a flake observed on linux/ppc64le
. Same test, but a different failure mode.
https://build.golang.org/log/0c0a8553ebc6c605bd20ed1fd8ec44b81e2575e1.
Never mind, that one seems to be #28679.
linux/ppc64 does not support cgo. The reason this test fails on linux/ppc64 is that it tries to build a program to be debugged with gdb, but the program uses cgo so cannot be built. The failure has nothing to do with gdb.
If you use a program that can be built with linux/ppc64, gdb and the gdb python scripts should work on linux/ppc64 as well as linux/ppc64le. Everything that gdb looks at (the stack, register usage, threads and goroutines) should be the same between linux/ppc64 and linux/ppc64le.
I tried gdb on a simple hello.go test and things worked fine:
Breakpoint 1 at 0x94680: file /home/boger/gotests/hello.go, line 8.
(gdb) run
Starting program: /home/boger/gotests/hello
[New LWP 5583]
[New LWP 5584]
[New LWP 5585]
[New LWP 5586]
[New LWP 5587]
Thread 1 "hello" hit Breakpoint 1, fmt.Printf (format=..., a=..., n=<optimized out>, err=...)
at /home/boger/golang/go/src/fmt/print.go:208
208 return Fprintf(os.Stdout, format, a...)
(gdb) info goroutines
* 1 running runtime.systemstack_switch
2 waiting runtime.gopark
17 waiting runtime.gopark
18 waiting runtime.gopark
(gdb) goroutine 1 bt
#0 fmt.Printf (format=..., a=..., n=<optimized out>, err=...) at /home/boger/golang/go/src/fmt/print.go:208
#1 main.main () at /home/boger/gotests/hello.go:8
(gdb) goroutine 2 bt
#0 runtime.gopark (unlockf=<optimized out>, lock=0x173b50 <runtime.forcegc>, reason=16 '\020', traceEv=20 '\024',
traceskip=1) at /home/boger/golang/go/src/runtime/proc.go:302
#1 0x00000000000392d4 in runtime.goparkunlock (reason=<optimized out>, traceEv=<optimized out>,
traceskip=<optimized out>, lock=<optimized out>) at /home/boger/golang/go/src/runtime/proc.go:307
#2 runtime.forcegchelper () at /home/boger/golang/go/src/runtime/proc.go:250
#3 0x0000000000060bc4 in runtime.goexit () at /home/boger/golang/go/src/runtime/asm_ppc64x.s:857
Backtrace stopped: frame did not save the PC
Thanks. Retitled this bug.
Actually I just got on a system where gdb was at a high enough level and removed the check to skip tests on linux/ppc64, and found that those tests that need cgo are skipped if cgo is not enabled. And those that don't need it pass. I can submit the change if you want it now.
Oh, the builder has to have at least gdb 7.7 or the tests in question are skipped.
I propose we skip these tests there for now so we can see what else is failing. (These tests already skip if gdb is absent anyway)
/cc @dr2chase