diff options
author | Stefan Weil <weil@mail.berlios.de> | 2010-01-21 22:24:58 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-01-26 16:28:46 -0600 |
commit | d2d5adcb58d32e8ac6c168c4c2e72cf0f90dcab0 (patch) | |
tree | 5306855552cd0570a0e08182aca6f7ec53e01dfd /osdep.c | |
parent | 776e1bbb6cf4fe66a93c1a5dd814bbb650deca00 (diff) |
Tell users about out-of-memory errors
Aborting without an error message when memory is short
is not helpful, so print the reason for the abort.
Try
qemu -m 1000000
or
qemu -m 2000 (win32)
to force an out-of-memory error.
v2:
* Fix error message for win32.
* Fix error message for posix_memalign.
Thanks to malc for the hints.
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'osdep.c')
-rw-r--r-- | osdep.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -52,6 +52,11 @@ static void *oom_check(void *ptr) { if (ptr == NULL) { +#if defined(_WIN32) + fprintf(stderr, "Failed to allocate memory: %lu\n", GetLastError()); +#else + fprintf(stderr, "Failed to allocate memory: %s\n", strerror(errno)); +#endif abort(); } return ptr; @@ -91,8 +96,11 @@ void *qemu_memalign(size_t alignment, size_t size) int ret; void *ptr; ret = posix_memalign(&ptr, alignment, size); - if (ret != 0) + if (ret != 0) { + fprintf(stderr, "Failed to allocate %zu B: %s\n", + size, strerror(ret)); abort(); + } return ptr; #elif defined(CONFIG_BSD) return oom_check(valloc(size)); |