Skip to content

Panic when profiling AVX2 implementation #55

Closed
@egonelbre

Description

@egonelbre

It seems there's a fairly repeatable panic with this code.

s:\deps\sha256-simd>go test -bench BenchmarkHash/AVX2/8Bytes -benchtime 1s -cpuprofile cpu.prof
goos: windows
goarch: amd64
pkg: github.com/minio/sha256-simd
BenchmarkHash/AVX2/8Bytes-32            fatal error: unexpected signal during runtime execution
[signal 0xc0000005 code=0x0 addr=0xc00031c008 pc=0xc6e92d]

runtime stack:
runtime.throw(0xd8d2bd, 0x2a)
        c:/go/src/runtime/panic.go:1116 +0x79
runtime.sigpanic()
        c:/go/src/runtime/signal_windows.go:240 +0x285
runtime.gentraceback(0xd3efed, 0xc00031bbc0, 0x0, 0xc000382d80, 0x0, 0x7128dfee90, 0x40, 0x0, 0x0, 0x6, ...)
        c:/go/src/runtime/traceback.go:251 +0x136d
runtime.sigprof(0xd3efed, 0xc00031bbc0, 0x0, 0xc000382d80, 0xc000088400)
        c:/go/src/runtime/proc.go:4041 +0x491
runtime.profilem(0xc000088400, 0x1cc)
        c:/go/src/runtime/os_windows.go:1105 +0xe9
runtime.profileloop1(0x0, 0x0)
        c:/go/src/runtime/os_windows.go:1152 +0x1a5
runtime.externalthreadhandler(0x7128dff7b8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        c:/go/src/runtime/sys_windows_amd64.s:267 +0x95

goroutine 1 [chan receive]:
testing.(*B).run1(0xc00030a240, 0xc00030a240)
        c:/go/src/testing/benchmark.go:233 +0xa6
testing.(*B).Run(0xc00030a000, 0xd8569b, 0xd, 0xd8fc40, 0xce9d00)
        c:/go/src/testing/benchmark.go:654 +0x36c
testing.runBenchmarks.func1(0xc00030a000)
        c:/go/src/testing/benchmark.go:534 +0x7f
testing.(*B).runN(0xc00030a000, 0x1)
        c:/go/src/testing/benchmark.go:191 +0xf2
testing.runBenchmarks(0xd89f45, 0x1c, 0xc0000046a0, 0xe77300, 0x8, 0x8, 0xe7bac0)
        c:/go/src/testing/benchmark.go:540 +0x3b5
testing.(*M).Run(0xc000130080, 0x0)
        c:/go/src/testing/testing.go:1363 +0x57d
main.main()
        _testmain.go:83 +0x145

goroutine 6 [sleep]:
time.Sleep(0x5f5e100)
        c:/go/src/runtime/time.go:188 +0xc9
runtime/pprof.profileWriter(0xdb3da0, 0xc000006030)
        c:/go/src/runtime/pprof/pprof.go:799 +0x72
created by runtime/pprof.StartCPUProfile
        c:/go/src/runtime/pprof/pprof.go:784 +0x127

goroutine 31 [chan receive]:
testing.(*B).doBench(0xc00030a480, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/testing/benchmark.go:277 +0x7a
testing.(*benchContext).processBench(0xc0000046e0, 0xc00030a480)
        c:/go/src/testing/benchmark.go:570 +0x233
testing.(*B).run(0xc00030a480)
        c:/go/src/testing/benchmark.go:268 +0x6a
testing.(*B).Run(0xc00030a240, 0xc00000c3e0, 0xb, 0xc000078710, 0x0)
        c:/go/src/testing/benchmark.go:655 +0x42c
github.com/minio/sha256-simd.BenchmarkHash(0xc00030a240)
        s:/deps/sha256-simd/sha256_test.go:2330 +0x46d
testing.(*B).runN(0xc00030a240, 0x1)
        c:/go/src/testing/benchmark.go:191 +0xf2
testing.(*B).run1.func1(0xc00030a240)
        c:/go/src/testing/benchmark.go:231 +0x5e
created by testing.(*B).run1
        c:/go/src/testing/benchmark.go:224 +0x85

goroutine 82 [running]:
        goroutine running on other thread; stack unavailable
created by testing.(*B).doBench
        c:/go/src/testing/benchmark.go:276 +0x5c
exit status 2
FAIL    github.com/minio/sha256-simd    0.706s

This doesn't seem to happen with other implementation.

Also, you may need to retry it a few times before it crashes.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions