Commit fa3c5173 authored by Austin Clements's avatar Austin Clements

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: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 2abd8aeb
......@@ -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")
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment