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
                
            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();
>       }
>   
> 
                
            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>
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
© 2016 - 2025 Red Hat, Inc.