You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What steps will reproduce the problem?
go build -compiler=gccgo -v hello.go
while true; do GOMAXPROCS=16 strace -f -ostrace.log ./hello || break; done
What is the expected output?
<7>2012-03-16T16:24:59Z,991900000,name,hello.go:131,main.Hello,test Go version:
weekly.2012-03-13 +a303acb0a5f2
<7>2012-03-16T16:24:59Z,994044000,name,hello.go:132,main.Hello,Pid=1504 Uid=1000
Gid=1000
<7>2012-03-16T16:24:59Z,994573000,name,hello.go:133,main.Hello,GOMAXPROCS=16
<7>2012-03-16T16:24:59Z,995347000,name,hello.go:138,main.Hello,RLIMIT_NOFILE={Cur:32768
Max:32768}
<7>2012-03-16T16:24:59Z,996315000,name,hello.go:138,main.Hello,RLIMIT_MEMLOCK={Cur:18446744073709551615
Max:18446744073709551615}
<7>2012-03-16T16:24:59Z,996987000,name,hello.go:138,main.Hello,RLIMIT_NPROC={Cur:1024
Max:32768}
<7>2012-03-16T16:24:59Z,997686000,name,hello.go:145,main.Hello,RLIMIT_MEMLOCK={Cur:18446744073709551615
Max:18446744073709551615}
What do you see instead?
sometimes it fails:
<7>2012-03-16T16:27:42Z,890122000,name,hello.go:131,go.main.Hello,test Go version:
xgcc (GCC) 4.8.0 20120316 (experimental)
<7>2012-03-16T16:27:42Z,953058000,name,:0,go.main.Hello,Pid=2177 Uid=1000 Gid=1000
<7>2012-03-16T16:27:42Z,954038000,name,hello.go:133,go.main.Hello,GOMAXPROCS=16
panic: getrlimit: Resource temporarily unavailable [recovered]
panic: getrlimit: Resource temporarily unavailable
however, if you look at the strace, you can see:
getrlimit(RLIMIT_NPROC, {rlim_cur=1024, rlim_max=32*1024}) = 0
I think it's some kind of thread/errno issue.
Which compiler are you using (5g, 6g, 8g, gccgo)?
gccgo
Which operating system are you using?
linux, amd64
Which revision are you using? (hg identify)
gccgo (GCC) 4.8.0 20120316 (experimental)
Please provide any additional information below.
everything works fine if I just build with
go build -compiler=gccgo -v hello.go
Failing strace also attached.
Depending on the machine, it might fail more readily with another value of GOMAXPROCS.
Maybe gccgo doesn't even care about GOMAXPROCS. It even fails with GOMAXPROCS=1.
Thanks for the test case. The bug is that syscall.Syscall and friends fail to call
SetErrno(0) before making the call. It's too late for the gcc 4.7.0 release, so I'll
fix it for 4.7.1.
Attachments:
The text was updated successfully, but these errors were encountered: