1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
semantic: 0.689
instruction: 0.664
other: 0.595
mistranslation: 0.563
device: 0.562
graphic: 0.530
assembly: 0.518
network: 0.507
vnc: 0.487
boot: 0.476
KVM: 0.426
socket: 0.415
cannot run golang app with docker, version 17.09.1-ce, disabling core 0 and qemu-arm, version 2.7.
Hello!
I figure out that sometimes simple go application is not working.
I am using docker + qemu-arm + go( for armv7l).
These are version info below.
root@VDBS1535:~# docker -v
Docker version 17.09.1-ce, build 19e2cf6
bash-3.2# qemu-arm --version
qemu-arm version 2.7.0, Copyright (c) 2003-2016 Fabrice Bellard and the QEMU Project developers
$ go version
go version go1.12.6 linux/arm
$ go env
GOARCH="arm"
GOBIN=""
GOCACHE="/home/quickbuild/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/quickbuild/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_arm"
GCCGO="gccgo"
GOARM="7"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build242285369=/tmp/go-build -gno-record-gcc-switches"
This issue is come only when I disable core 0 using a command below.
please check "--cpuset-cpus=1-55" option.
sudo docker run --privileged -d -i -t --cpuset-cpus=1-55 --mount type=bind,source="/home/dw83kim/mnt",destination="/mnt" --network host --name="ubuntu_core1" ubuntu:xenial-20200212
This is what I have tested in the environment above.
package main
func main(){
for i:=0; i<1000; i++ {
println("Hello world")
}
}
This is one of the error logs have faced sometimes not always.
bash-3.2# go run test.go
fatal error: schedule: holding locks
panic during panic
SIGILL: illegal instruction
PC=0xc9ec4c m=3 sigcode=2
goroutine 122 [runnable]:
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault (core dumped)
bash-3.2#
Please check it.
Thanks in advance.
This is a known and fixed bug in QEMU. Please try a more recent version than 2.7 (eg 4.2, which is the most recent release).
Could you retest with latest version (4.2.0) of QEMU?
LP:1696773 is the old bug that I think is probably the cause here, though 2.7 is old enough it has a bunch of other linux-user race condition bugs that we've since fixed.
Hello! Peter and Laurent,
Thanks for your kind & rapid reply.
It took long to merge the patch Peter mentioned.
After applying the patch the problem is gone but I found new issue.
When I had tried to test for the first time after making new docker container it took much longer time.
bash-3.2# time go run test.go
Hello world
real 5m3.516s
user 5m48.696s
sys 13m32.600s
bash-3.2# time go run test.go
Hello world
real 0m1.784s
user 0m2.339s
sys 0m1.742s
bash-3.2# time go run test.go
Hello world
real 0m1.881s
user 0m2.302s
sys 0m1.926s
bash-3.2# pwd
I believe that 5 min for just printing "Hello world" is not your expectation.
Is it also known issue?
Please check it.
Thanks.
The QEMU project is currently moving its bug tracking to another system.
For this we need to know which bugs are still valid and which could be
closed already. Thus we are setting older bugs to "Incomplete" now.
If you still think this bug report here is valid, then please switch
the state back to "New" within the next 60 days, otherwise this report
will be marked as "Expired". Or please mark it as "Fix Released" if
the problem has been solved with a newer version of QEMU already.
Thank you and sorry for the inconvenience.
[Expired for QEMU because there has been no activity for 60 days.]
|