[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 1763536] Re: go build fails under qemu-ppc64le-static
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [Bug 1763536] Re: go build fails under qemu-ppc64le-static (qemu-user) |
Date: |
Fri, 02 Aug 2019 17:35:03 -0000 |
We recently fixed bug #1696773 which was a cause of various crashes or
other problems when trying to run go binaries under linux-user,
including "go build hello.go". So I strongly suspect this is a duplicate
of that bug. Could you test with the QEMU v4.1.0 rc3 or later, please?
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1763536
Title:
go build fails under qemu-ppc64le-static (qemu-user)
Status in QEMU:
New
Bug description:
I am using qemu-user (built static) in a docker container environment.
When running multi-threaded go commands in the container (go build for
example) the process may hang, report segfaults or other errors. I
built qemu-ppc64le from the upstream git (master).
I see the problem running on a multi core system with Intel i7 processors.
# cat /proc/cpuinfo | grep "model name"
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
model name : Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
Steps to reproduce:
1) Build qemu-ppc64le as static and copy into docker build directory named it
qemu-ppc64le-static.
2) Add hello.go to docker build dir.
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
3) Create the Dockerfile from below:
FROM ppc64le/golang:1.10.1-alpine3.
COPY qemu-ppc64le-static /usr/bin/
COPY hello.go /go
4) Build container
$ docker build -t qemutest -f Dockerfile ./go
5) Run test
$ docker run -it qemutest
/go # /usr/bin/qemu-ppc64le-static --version
qemu-ppc64le version 2.11.93 (v2.12.0-rc3-dirty)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
/go # go version
go version go1.10.1 linux/ppc64le
/go # go build hello.go
fatal error: fatal error: stopm holding locksunexpected signal during runtime
execution
panic during panic
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1003528c]
runtime stack:
runtime: unexpected return pc for syscall.Syscall6 called from 0xc42007f500
stack: frame={sp:0xc4203be840, fp:0xc4203be860}
stack=[0x4000b7ecf0,0x4000b928f0)
syscall.Syscall6(0x100744e8, 0x3d, 0xc42050c140, 0x20, 0x18, 0x10422b80,
0xc4203be968[signal , 0x10012d88SIGSEGV: segmentation violation, 0xc420594000
code=, 0x00x1 addr=0x0 pc=0x1003528c)
]
runtime stack:
/usr/local/go/src/syscall/asm_linux_ppc64x.s:61runtime.throw(0x10472d19, 0x13)
+ /usr/local/go/src/runtime/panic.go:0x6c616 +0x68
runtime.stopm()
/usr/local/go/src/runtime/proc.go:1939goroutine +10x158
[runtime.exitsyscall0semacquire(0xc42007f500)
/usr/local/go/src/runtime/proc.go:3129 +]:
0x130
runtime.mcall(0xc42007f500)
/usr/local/go/src/runtime/asm_ppc64x.s:183 +0x58sync.runtime_Semacquire
(0xc4201fab1c)
/usr/local/go/src/runtime/sema.go:56 +0x38
----
Note the results may differ between attempts, hangs and other faults
sometimes happen.
----
If I run "go: single threaded I don't see the problem, for example:
/go # GOMAXPROCS=1 go build -p 1 hello.go
/go # ./hello
hello world
I see the same issue with arm64. I don't think this is a go issue,
but don't have a real evidence to prove that. This problem looks
similar to other problem I have seen reported against qemu running
multi-threaded applications.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1763536/+subscriptions
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [Bug 1763536] Re: go build fails under qemu-ppc64le-static (qemu-user),
Peter Maydell <=