[Qemu-devel] [PATCH] oslib-posix: Print errors before aborting on qemu_alloc_stack()

Eduardo Habkost posted 1 patch 8 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170829212053.6003-1-ehabkost@redhat.com
Test FreeBSD passed
Test checkpatch passed
Test docker passed
Test s390x passed
util/oslib-posix.c | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH] oslib-posix: Print errors before aborting on qemu_alloc_stack()
Posted by Eduardo Habkost 8 years, 2 months ago
If QEMU is running on a system that's out of memory and mmap()
fails, QEMU aborts with no error message at all, making it hard
to debug the reason for the failure.

Add perror() calls that will print error information before
aborting.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 util/oslib-posix.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index cacf0ef..80086c5 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -530,6 +530,7 @@ void *qemu_alloc_stack(size_t *sz)
     ptr = mmap(NULL, *sz, PROT_READ | PROT_WRITE,
                MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
     if (ptr == MAP_FAILED) {
+        perror("failed to allocate memory for stack");
         abort();
     }
 
@@ -544,6 +545,7 @@ void *qemu_alloc_stack(size_t *sz)
     guardpage = ptr;
 #endif
     if (mprotect(guardpage, pagesz, PROT_NONE) != 0) {
+        perror("failed to set up stack guard page");
         abort();
     }
 
-- 
2.9.4


Re: [Qemu-devel] [PATCH] oslib-posix: Print errors before aborting on qemu_alloc_stack()
Posted by Philippe Mathieu-Daudé 8 years, 2 months ago
On 08/29/2017 06:20 PM, Eduardo Habkost wrote:
> If QEMU is running on a system that's out of memory and mmap()
> fails, QEMU aborts with no error message at all, making it hard
> to debug the reason for the failure.
> 
> Add perror() calls that will print error information before
> aborting.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>   util/oslib-posix.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/util/oslib-posix.c b/util/oslib-posix.c
> index cacf0ef..80086c5 100644
> --- a/util/oslib-posix.c
> +++ b/util/oslib-posix.c
> @@ -530,6 +530,7 @@ void *qemu_alloc_stack(size_t *sz)
>       ptr = mmap(NULL, *sz, PROT_READ | PROT_WRITE,
>                  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
>       if (ptr == MAP_FAILED) {
> +        perror("failed to allocate memory for stack");
>           abort();
>       }
>   
> @@ -544,6 +545,7 @@ void *qemu_alloc_stack(size_t *sz)
>       guardpage = ptr;
>   #endif
>       if (mprotect(guardpage, pagesz, PROT_NONE) != 0) {
> +        perror("failed to set up stack guard page");
>           abort();
>       }
>   
> 

Re: [Qemu-devel] [PATCH] oslib-posix: Print errors before aborting on qemu_alloc_stack()
Posted by Stefan Hajnoczi 8 years, 2 months ago
On Tue, Aug 29, 2017 at 06:20:53PM -0300, Eduardo Habkost wrote:
> If QEMU is running on a system that's out of memory and mmap()
> fails, QEMU aborts with no error message at all, making it hard
> to debug the reason for the failure.
> 
> Add perror() calls that will print error information before
> aborting.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  util/oslib-posix.c | 2 ++
>  1 file changed, 2 insertions(+)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Re: [Qemu-devel] [PATCH] oslib-posix: Print errors before aborting on qemu_alloc_stack()
Posted by Stefan Hajnoczi 8 years, 2 months ago
On Tue, Aug 29, 2017 at 06:20:53PM -0300, Eduardo Habkost wrote:
> If QEMU is running on a system that's out of memory and mmap()
> fails, QEMU aborts with no error message at all, making it hard
> to debug the reason for the failure.
> 
> Add perror() calls that will print error information before
> aborting.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  util/oslib-posix.c | 2 ++
>  1 file changed, 2 insertions(+)

Thanks, applied to my block-next tree:
https://github.com/stefanha/qemu/commits/block-next

Stefan