qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] Handle gdb.MemoryError exception in dump-guest-memory.py


From: Marc-André Lureau
Subject: Re: [PATCH v2] Handle gdb.MemoryError exception in dump-guest-memory.py
Date: Thu, 5 Mar 2020 10:46:48 +0100

Hi

On Sat, Feb 15, 2020 at 1:34 AM Kevin Buettner <address@hidden> wrote:
>
> [Included a "Signed-off-by" line in this version.]
>
> I recently investigated a bug in which the dump-guest-memory.py script
> sees a gdb.MemoryError exception while attempting to dump memory
> obtained from a QEMU core dump.  (And, yes, dump-guest-core=on was
> specified in the -machine option of the QEMU invocation.)
>
> It turns out that memory region in question is not being placed in the
> core dump and, after stepping through the kernel core dumping code
> responsible for making this decision, it looks reasonable to me to not
> include that region in the core dump.  The region in question consists
> of all zeros and, according to the kernel's logic, has never been
> written to.
>
> This commit makes a small change to the dump-guest-memory script to
> cause inaccessible memory to be dumped as zeroes.  This avoids the
> exception and places the correct values in the guest memory dump.
>
> Signed-off-by: Kevin Buettner <address@hidden>

fwiw, Kevin fixed it in gdb:
https://sourceware.org/ml/gdb-patches/2020-03/msg00106.html

> ---
>  scripts/dump-guest-memory.py | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py
> index 4177261d33..fbdfba458b 100644
> --- a/scripts/dump-guest-memory.py
> +++ b/scripts/dump-guest-memory.py
> @@ -539,7 +539,12 @@ shape and this command should mostly work."""
>
>              while left > 0:
>                  chunk_size = min(TARGET_PAGE_SIZE, left)
> -                chunk = qemu_core.read_memory(cur, chunk_size)
> +                try:
> +                    chunk = qemu_core.read_memory(cur, chunk_size)
> +                except gdb.MemoryError:
> +                    # Consider blocks of memory absent from a core file
> +                    # as being zeroed.
> +                    chunk = bytes(chunk_size)
>                  vmcore.write(chunk)
>                  cur += chunk_size
>                  left -= chunk_size
> --
> 2.24.1
>
>


-- 
Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]