Skip to content

gccgo: some kind of thread/errno issue #3333

Closed
@alberts

Description

@alberts
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.

Attachments:

  1. hello.go (3748 bytes)
  2. strace.log (93579 bytes)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions