Skip to content

GC errors when time benchmarks are run with GOMAXPROCS > 1 #1504

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
gopherbot opened this issue Feb 11, 2011 · 3 comments
Closed

GC errors when time benchmarks are run with GOMAXPROCS > 1 #1504

gopherbot opened this issue Feb 11, 2011 · 3 comments

Comments

@gopherbot
Copy link
Contributor

by consalus:

Using 6g on darwin at 0c8b700cc391+ tip, when I run
"make bench" in src/pkg/time/ with GOMAXPROCS > 1, I get various errors when
BenchmarkStop runs. It doesn't happen every time, but most of the time.

The stack trace varies a bit. Here is one example:

time_test.BenchmarkAfterFunc      100000         16142 ns/op
time_test.BenchmarkAfter      100000         18120 ns/op
panic: invalid memory address or nil pointer dereference
throw: panic during gc

[signal 0xb code=0x1 addr=0x0 pc=0x97c6]

runtime.throw+0x3b /Users/username/code/go/src/pkg/runtime/runtime.c:78
    runtime.throw(0x1538c8, 0x153c47)
runtime.panicstring+0x51 /Users/username/code/go/src/pkg/runtime/runtime.c:89
    runtime.panicstring(0x153c47, 0x0)
runtime.sigpanic+0x144 /Users/username/code/go/src/pkg/runtime/darwin/thread.c:469
    runtime.sigpanic()
ReleaseN+0x30 /Users/username/code/go/src/pkg/runtime/mcache.c:64
    ReleaseN(0x2170000, 0x2170030, 0x3000000e0, 0xf83fffff00, 0xf840147d08, ...)
runtime.MCache_ReleaseAll+0x53 /Users/username/code/go/src/pkg/runtime/mcache.c:128
    runtime.MCache_ReleaseAll(0x2170000, 0xe9db)
stealcache+0x3a /Users/username/code/go/src/pkg/runtime/mgc0.c:500
    stealcache()
runtime.gc+0x1ca /Users/username/code/go/src/pkg/runtime/mgc0.c:577
    runtime.gc(0xf800000001, 0xf840000dc0)
runfinq+0x112 /Users/username/code/go/src/pkg/runtime/mgc0.c:657
    runfinq()
runtime.goexit /Users/username/code/go/src/pkg/runtime/proc.c:149
    runtime.goexit()

goroutine 330315 [3]:
runtime.entersyscall+0x28 /Users/username/code/go/src/pkg/runtime/proc.c:577
    runtime.entersyscall()
syscall.Syscall6+0x5 /Users/username/code/go/src/pkg/syscall/asm_darwin_amd64.s:38
    syscall.Syscall6()
syscall.Select+0x66 /Users/username/code/go/src/pkg/syscall/zsyscall_darwin_amd64.go:704
    syscall.Select(0x0, 0x0, 0x0, 0x0, 0xf84001bfc0, ...)
syscall.Sleep+0x7a /Users/username/code/go/src/pkg/syscall/syscall_bsd.go:145
    syscall.Sleep(0x3b90b3f8, 0xf84001bf00, 0x7b420, 0xf8400cd040)
time.sleeper+0xa9 /Users/username/code/go/src/pkg/time/sleep.go:154
    time.sleeper(0x35c30, 0x0)
runtime.goexit /Users/username/code/go/src/pkg/runtime/proc.c:149
    runtime.goexit()
fmt.*pp·fmtUint64+0x137 /Users/username/code/go/src/pkg/fmt/print.go:384
    fmt.*pp·fmtUint64(0x0, 0x0, 0x0, 0x0, 0x0, ...)

goroutine 1 [1]:
runtime.gosched+0x77 /Users/username/code/go/src/pkg/runtime/proc.c:558
    runtime.gosched()
runtime.exitsyscall+0xa2 /Users/username/code/go/src/pkg/runtime/proc.c:624
    runtime.exitsyscall()
syscall.Syscall+0x61 /Users/username/code/go/src/pkg/syscall/asm_darwin_amd64.s:34
    syscall.Syscall()
syscall.gettimeofday+0x45
/Users/username/code/go/src/pkg/syscall/zsyscall_darwin_amd64.go:922
    syscall.gettimeofday(0xf840121a60, 0x29, 0x9279, 0x10, 0x40, ...)
syscall.Gettimeofday+0x27
/Users/username/code/go/src/pkg/syscall/syscall_darwin_amd64.go:31
    syscall.Gettimeofday(0xf840121a60, 0xf840121a60, 0x10, 0xf840099e40)
os.Time+0x4e /Users/username/code/go/src/pkg/os/time.go:16
    os.Time(0xf840099e40, 0x100000000, 0x0, 0x0, 0x500002ea1, ...)
time.Nanoseconds+0x1c /Users/username/code/go/src/pkg/time/time.go:26
    time.Nanoseconds(0x400000003, 0x4deb)
time.after+0x1f /Users/username/code/go/src/pkg/time/sleep.go:119
    time.after(0x3b9aca00, 0xf840099e40, 0xf840000958, 0xf840099e40, 0xf840000958, ...)
time.NewTimer+0x83 /Users/username/code/go/src/pkg/time/sleep.go:78
    time.NewTimer(0x3b9aca00, 0xf8400d7001, 0x4a9344f55ee00, 0x19456)
/Users/username/code/go/src/pkg/time/_xtest_.BenchmarkStop+0x36
/Users/username/code/go/src/pkg/time/sleep_test.go:75
    /Users/username/code/go/src/pkg/time/_xtest_.BenchmarkStop(0xf840099d80, 0x19669)
testing.*B·runN+0x48 /Users/username/code/go/src/pkg/testing/benchmark.go:72
    testing.*B·runN(0xf840099d80, 0x7a120, 0x1, 0x7a12000002710)
testing.*B·run+0xda /Users/username/code/go/src/pkg/testing/benchmark.go:141
    testing.*B·run(0xf840099d80, 0xf840099d80, 0x6ae30, 0x17)
testing.RunBenchmarks+0x1d5 /Users/username/code/go/src/pkg/testing/benchmark.go:199
    testing.RunBenchmarks(0x1e40b, 0xf8400323c0, 0x800000008, 0x2a86)
main.main+0x7b /Users/username/code/go/src/pkg/time/_testmain.go:41
    main.main()
runtime.mainstart+0xf /Users/username/code/go/src/pkg/runtime/amd64/asm.s:77
    runtime.mainstart()
runtime.goexit /Users/username/code/go/src/pkg/runtime/proc.c:149
    runtime.goexit()
make: *** [bench] Error 2


Here is another stack trace:

time_test.BenchmarkAfterFunc      100000         16283 ns/op
time_test.BenchmarkAfter      100000         18473 ns/op
panic: runtime error: invalid memory address or nil pointer dereference

[signal 0xb code=0x1 addr=0x54 pc=0x13b8f]

runtime.panic+0xa7 /Users/username/code/go/src/pkg/runtime/proc.c:1023
    runtime.panic(0x77284, 0xf8400f7c20)
runtime.panicstring+0xa3 /Users/username/code/go/src/pkg/runtime/runtime.c:92
    runtime.panicstring(0x153c47, 0x2170400)
runtime.sigpanic+0x144 /Users/username/code/go/src/pkg/runtime/darwin/thread.c:469
    runtime.sigpanic()
runtime.destroylock+0x1c /Users/username/code/go/src/pkg/runtime/darwin/thread.c:85
    runtime.destroylock(0x50, 0xf840097c40)
destroychan+0x29 /Users/username/code/go/src/pkg/runtime/chan.c:140
    destroychan(0x0, 0xf840009500)
----- stack segment boundary -----
runfinq+0xc3 /Users/username/code/go/src/pkg/runtime/mgc0.c:650
    runfinq()
runtime.goexit /Users/username/code/go/src/pkg/runtime/proc.c:149
    runtime.goexit()

goroutine 330314 [3]:
runtime.entersyscall+0x28 /Users/username/code/go/src/pkg/runtime/proc.c:577
    runtime.entersyscall()
syscall.Syscall6+0x5 /Users/username/code/go/src/pkg/syscall/asm_darwin_amd64.s:38
    syscall.Syscall6()
syscall.Select+0x66 /Users/username/code/go/src/pkg/syscall/zsyscall_darwin_amd64.go:704
    syscall.Select(0x0, 0x0, 0x0, 0x0, 0xf8400e8f00, ...)
syscall.Sleep+0x7a /Users/username/code/go/src/pkg/syscall/syscall_bsd.go:145
    syscall.Sleep(0x3b95c0f0, 0xf8400e8ee0, 0x7b398, 0xf840097300)
time.sleeper+0xa9 /Users/username/code/go/src/pkg/time/sleep.go:154
    time.sleeper(0x35c2f, 0x0)
runtime.goexit /Users/username/code/go/src/pkg/runtime/proc.c:149
    runtime.goexit()
fmt.*pp·fmtUint64+0xe4 /Users/username/code/go/src/pkg/fmt/print.go:395
    fmt.*pp·fmtUint64(0x0, 0x0, 0x0, 0x0, 0x0, ...)

goroutine 1 [3]:
runtime.entersyscall+0x28 /Users/username/code/go/src/pkg/runtime/proc.c:577
    runtime.entersyscall()
syscall.Syscall+0x5 /Users/username/code/go/src/pkg/syscall/asm_darwin_amd64.s:14
    syscall.Syscall()
syscall.gettimeofday+0x45
/Users/username/code/go/src/pkg/syscall/zsyscall_darwin_amd64.go:922
    syscall.gettimeofday(0x400000003, 0xf8400d0000, 0x9279, 0x10, 0x155088, ...)
syscall.Gettimeofday+0x27
/Users/username/code/go/src/pkg/syscall/syscall_darwin_amd64.go:31
    syscall.Gettimeofday(0x2000000008, 0xf8400e8ac0, 0xf800000001, 0x2cd88)
runtime.mal+0x3f /Users/username/code/go/src/pkg/runtime/malloc.c:285
    runtime.mal(0xf8400abd70, 0x8a86)
make: *** [bench] Error 2
@rsc
Copy link
Contributor

rsc commented Feb 11, 2011

Comment 1:

Reproduced very quickly on my machine.
Excellent test case, thanks very much.

Owner changed to r...@golang.org.

Status changed to Accepted.

@alberts
Copy link
Contributor

alberts commented Feb 14, 2011

Comment 2:

I think this is the same problem as I mentioned in issue #1479. We were running the
TestHilbert function with GOMAXPROCS>1 too.

@rsc
Copy link
Contributor

rsc commented Feb 16, 2011

Comment 3:

This issue was closed by revision 2509776.

Status changed to Fixed.

@golang golang locked and limited conversation to collaborators Jun 24, 2016
@rsc rsc removed their assignment Jun 22, 2022
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants