golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
124.11k stars 17.68k forks source link

regexp: "go test -race -run=OnePass -v ." fails on windows #8216

Closed alexbrainman closed 9 years ago

alexbrainman commented 10 years ago
c:\go\root\src\pkg\regexp>go test -race -run=OnePass -v .
=== RUN TestOnePassCutoff
==7508==ERROR: Failed to allocate 0x24b80000 (616038400) bytes at 0x03028e000000 (1455)
runtime: newstack framesize=0x0 argsize=0x18 sp=0x29cf098 stack=[0xc085fb6000,
0xc085ff5fa8]
        morebuf={pc:0x0 sp:0x0 lr:0x0}
        sched={pc:0x410430 sp:0x29cf0a0 lr:0x0 ctxt:0x0}
runtime: split stack overflow: 0x29cf098 < 0xc085fb6000
fatal error: runtime: split stack overflow

runtime stack:
runtime.throw(0x78ee0b)
        c:/go/root/src/pkg/runtime/panic.c:520 +0x7e
runtime.newstack()
        c:/go/root/src/pkg/runtime/stack.c:725 +0x2e3
runtime.morestack()
        c:/go/root/src/pkg/runtime/asm_amd64.s:228 +0x64

goroutine 20 [stack growth]:
runtime.sighandler(0x29cfd50, 0x29cf860, 0xc0820127e0)
        c:/go/root/src/pkg/runtime/os_windows_amd64.c:41 fp=0x29cf0a8 sp=0x29cf0a0
----- exception handler -----
runtime: unexpected return pc for runtime.asmcgocall called from 0x41235200000009
runtime.asmcgocall(0x412352000000c0, 0x40fa6f00000000)
        c:/go/root/src/pkg/runtime/asm_amd64.s:705 +0x64 fp=0x29cfa14 sp=0x29cfa0c
created by testing.RunTests
        c:/go/root/src/pkg/testing/testing.go:504 +0xb4d

goroutine 16 [chan receive]:
testing.RunTests(0x6d3c08, 0x78dca0, 0x23, 0x23, 0x460801)
        c:/go/root/src/pkg/testing/testing.go:505 +0xbbf
testing.Main(0x6d3c08, 0x78dca0, 0x23, 0x23, 0x78e000, 0x23, 0x23, 0x78c520, 0xb, 0xb)
        c:/go/root/src/pkg/testing/testing.go:435 +0xaa
main.main()
        regexp/_test/_testmain.go:209 +0xe4

goroutine 17 [syscall]:
runtime.goexit()
        c:/go/root/src/pkg/runtime/proc.c:1445

goroutine 19 [finalizer wait]:
runtime.park(0x415a60, 0x7cd7d0, 0x790749)
        c:/go/root/src/pkg/runtime/proc.c:1369 +0xac
runtime.parkunlock(0x7cd7d0, 0x790749)
        c:/go/root/src/pkg/runtime/proc.c:1385 +0x42
runfinq()
        c:/go/root/src/pkg/runtime/mgc0.c:2644 +0xdd
runtime.goexit()
        c:/go/root/src/pkg/runtime/proc.c:1445
exit status 2
FAIL    regexp  17.503s

hg id is 7d2e78c502ab

Alex
dvyukov commented 10 years ago

Comment 1:

It looks like that machine just don't have enough memory.
The program tries to allocate 150MB object, this causes additional allocation of 600MB
shadow object, and the OS says:
ERROR_COMMITMENT_LIMIT 1455 (0x5AF)
The paging file is too small for this operation to complete.
I think you just need to increase paging file size.

Owner changed to @dvyukov.

Status changed to Unfortunate.

alexbrainman commented 10 years ago

Comment 2:

> ERROR_COMMITMENT_LIMIT 1455 (0x5AF)
> The paging file is too small for this operation to complete.
Can this be part of the error message? If not, perhaps, windows error number could be
made more prominent. At lease label it as "windows errno" or something. Thank you.
Alex
dvyukov commented 10 years ago

Comment 3:

I will look into improving the error message.
I am also not sure why it prints all these stacks, I would expect it to print the
message and die.

Status changed to Accepted.

dvyukov commented 10 years ago

Comment 4:

Labels changed: added release-go1.4.

dvyukov commented 10 years ago

Comment 5:

The race runtime now must say "(error code: 1455)"
That was done by somebody else, so I had not altered it.

Status changed to Fixed.

alexbrainman commented 10 years ago

Comment 6:

It does indeed:
c:\go\root\src\pkg\regexp>go test -race -run=OnePass -v .
=== RUN TestOnePassCutoff
==7664==ERROR: ThreadSanitizer failed to allocate 0x000024b80000 (616038400) bytes at
0x03028e000000 (error code: 1455)
runtime: newstack framesize=0x0 argsize=0x18 sp=0x446f098 stack=[0xc085fb8000,
0xc085ff7fa8]
        morebuf={pc:0x0 sp:0x0 lr:0x0}
        sched={pc:0x4121f0 sp:0x446f0a0 lr:0x0 ctxt:0x0}
runtime: split stack overflow: 0x446f098 < 0xc085fb8000
fatal error: runtime: split stack overflow
runtime stack:
runtime.throw(0x1979deb)
        c:/go/root/src/pkg/runtime/panic.c:523 +0x8c
runtime.newstack()
        c:/go/root/src/pkg/runtime/stack.c:725 +0x35a
runtime.morestack()
        c:/go/root/src/pkg/runtime/asm_amd64.s:230 +0x64
goroutine 20 [stack growth]:
runtime.sighandler(0x446fd50, 0x446f860, 0xc0820127e0)
        c:/go/root/src/pkg/runtime/os_windows_amd64.c:41 fp=0x446f0a8 sp=0x446f0a0
----- exception handler -----
runtime: unexpected return pc for runtime.asmcgocall called from 0x41415200000009
runtime.asmcgocall(0x414152000000c0, 0x41181b00000000)
        c:/go/root/src/pkg/runtime/asm_amd64.s:715 +0x6b fp=0x446fa14 sp=0x446fa0c
created by testing.RunTests
        c:/go/root/src/pkg/testing/testing.go:509 +0xb4d
goroutine 16 [chan receive]:
testing.RunTests(0x18bbe58, 0x1978c80, 0x23, 0x23, 0x462701)
        c:/go/root/src/pkg/testing/testing.go:510 +0xbbf
testing.Main(0x18bbe58, 0x1978c80, 0x23, 0x23, 0x1978fe0, 0x23, 0x23, 0x1977500, 0xb,
0xb)
        c:/go/root/src/pkg/testing/testing.go:440 +0xaa
main.main()
        regexp/_test/_testmain.go:209 +0xe4
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
        c:/go/root/src/pkg/runtime/proc.c:1449
goroutine 19 [finalizer wait]:
runtime.park(0x417ad0, 0x22a90f0, 0x197b729)
        c:/go/root/src/pkg/runtime/proc.c:1373 +0xba
runtime.parkunlock(0x22a90f0, 0x197b729)
        c:/go/root/src/pkg/runtime/proc.c:1389 +0x42
runfinq()
        c:/go/root/src/pkg/runtime/mgc0.c:2615 +0xdd
runtime.goexit()
        c:/go/root/src/pkg/runtime/proc.c:1449
exit status 2
FAIL    regexp  21.205s
Thank you.
Alex