mirror of
https://github.com/golang/go
synced 2024-11-23 22:00:11 -07:00
runtime: improve out-of-memory message when VirtualAlloc fails
Fixes #19514. Change-Id: I93600d5c3d11ecab5a47dd4cd55ed3aea05e221e Reviewed-on: https://go-review.googlesource.com/49611 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
2abd8aebc3
commit
fa3c5173a5
@ -16,6 +16,9 @@ const (
|
||||
|
||||
_PAGE_READWRITE = 0x0004
|
||||
_PAGE_NOACCESS = 0x0001
|
||||
|
||||
_ERROR_NOT_ENOUGH_MEMORY = 8
|
||||
_ERROR_COMMITMENT_LIMIT = 1455
|
||||
)
|
||||
|
||||
// Don't split the stack as this function may be invoked without a valid G,
|
||||
@ -112,7 +115,13 @@ func sysMap(v unsafe.Pointer, n uintptr, reserved bool, sysStat *uint64) {
|
||||
mSysStatInc(sysStat, n)
|
||||
p := stdcall4(_VirtualAlloc, uintptr(v), n, _MEM_COMMIT, _PAGE_READWRITE)
|
||||
if p != uintptr(v) {
|
||||
print("runtime: VirtualAlloc of ", n, " bytes failed with errno=", getlasterror(), "\n")
|
||||
throw("runtime: cannot map pages in arena address space")
|
||||
errno := getlasterror()
|
||||
print("runtime: VirtualAlloc of ", n, " bytes failed with errno=", errno, "\n")
|
||||
switch errno {
|
||||
case _ERROR_NOT_ENOUGH_MEMORY, _ERROR_COMMITMENT_LIMIT:
|
||||
throw("out of memory")
|
||||
default:
|
||||
throw("runtime: cannot map pages in arena address space")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user