[Qemu-devel] [PATCH] dump-guest-memory.py: skip vmcoreinfo section if not available

Marc-André Lureau posted 1 patch 6 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180131104120.16708-1-marcandre.lureau@redhat.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 passed
Test ppc passed
Test s390x passed
scripts/dump-guest-memory.py | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH] dump-guest-memory.py: skip vmcoreinfo section if not available
Posted by Marc-André Lureau 6 years, 2 months ago
On some architectures, qemu doesn't support vmcoreinfo device,
and dump-guest-memory fails:

(gdb) dump-guest-memory /tmp/vmcore  ppc64-le
guest RAM blocks:
target_start     target_end       host_addr        message count
---------------- ---------------- ---------------- ------- -----
0000000000000000 0000000200000000 00003ffd86980000 added       1
0000200080000000 0000200080800000 00003ffd86170000 added       2
Python Exception <class 'gdb.error'> No symbol "vmcoreinfo_realize" in current context.:
Error occurred in Python command: No symbol "vmcoreinfo_realize" in current context.

Check that vmcoreinfo_realize symbol exists before evaluating an
expression with it.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/dump-guest-memory.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py
index 03fbf69f8a..51acfcd0c0 100644
--- a/scripts/dump-guest-memory.py
+++ b/scripts/dump-guest-memory.py
@@ -546,6 +546,8 @@ shape and this command should mostly work."""
         return None
 
     def add_vmcoreinfo(self):
+        if gdb.lookup_symbol("vmcoreinfo_realize")[0] is None:
+            return
         vmci = 'vmcoreinfo_realize::vmcoreinfo_state'
         if not gdb.parse_and_eval("%s" % vmci) \
            or not gdb.parse_and_eval("(%s)->has_vmcoreinfo" % vmci):
-- 
2.16.0.rc1.1.gef27df75a1


Re: [Qemu-devel] [PATCH] dump-guest-memory.py: skip vmcoreinfo section if not available
Posted by Laszlo Ersek 6 years, 2 months ago
On 01/31/18 11:41, Marc-André Lureau wrote:
> On some architectures, qemu doesn't support vmcoreinfo device,
> and dump-guest-memory fails:
> 
> (gdb) dump-guest-memory /tmp/vmcore  ppc64-le
> guest RAM blocks:
> target_start     target_end       host_addr        message count
> ---------------- ---------------- ---------------- ------- -----
> 0000000000000000 0000000200000000 00003ffd86980000 added       1
> 0000200080000000 0000200080800000 00003ffd86170000 added       2
> Python Exception <class 'gdb.error'> No symbol "vmcoreinfo_realize" in current context.:
> Error occurred in Python command: No symbol "vmcoreinfo_realize" in current context.
> 
> Check that vmcoreinfo_realize symbol exists before evaluating an
> expression with it.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  scripts/dump-guest-memory.py | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py
> index 03fbf69f8a..51acfcd0c0 100644
> --- a/scripts/dump-guest-memory.py
> +++ b/scripts/dump-guest-memory.py
> @@ -546,6 +546,8 @@ shape and this command should mostly work."""
>          return None
>  
>      def add_vmcoreinfo(self):
> +        if gdb.lookup_symbol("vmcoreinfo_realize")[0] is None:
> +            return
>          vmci = 'vmcoreinfo_realize::vmcoreinfo_state'
>          if not gdb.parse_and_eval("%s" % vmci) \
>             or not gdb.parse_and_eval("(%s)->has_vmcoreinfo" % vmci):
> 

Reviewed-by: Laszlo Ersek <lersek@redhat.com>