Commit a388c93cf1 for qemu.org

commit a388c93cf198f87c9f3446d44cd444d55d7310fe
Author: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
Date:   Tue Aug 4 18:17:37 2026 +0300

    scripts/qemugdb: coroutine: Only attempt to restore regs in coredump

    When calling 'qemu bt' / 'qemu coroutine' in a live process, we get:

        AttributeError: 'NoneType' object has no attribute 'restore_regs'

    That's because for both commands finally: blocks attempt to restore
    patched regs unconditionally.  Fix this by guarding regs restoration by
    'if is_coredump'.

    Fixes: 42f3c143c3a0 ("scripts/qemugdb: coroutine: Add option for obtaining detailed trace in coredump")
    Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
    Message-ID: <20260804151743.937694-4-andrey.drobyshev@virtuozzo.com>
    Tested-by: Fabiano Rosas <farosas@suse.de>
    Reviewed-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>

diff --git a/scripts/qemugdb/coroutine.py b/scripts/qemugdb/coroutine.py
index d3f31bab9f..649579378d 100644
--- a/scripts/qemugdb/coroutine.py
+++ b/scripts/qemugdb/coroutine.py
@@ -354,7 +354,8 @@ def invoke(self, arg, from_tty):
             bt_jmpbuf(coroutine_to_jmpbuf(gdb.parse_and_eval(argv[0])),
                       is_coredump, detailed=detailed)
         finally:
-            coredump.restore_regs()
+            if is_coredump:
+                coredump.restore_regs()

 class CoroutineBt(gdb.Command):
     __doc__ = textwrap.dedent("""\
@@ -409,7 +410,8 @@ def invoke(self, arg, from_tty):
                 bt_jmpbuf(coroutine_to_jmpbuf(co_ptr), is_coredump,
                           detailed=detailed)
         finally:
-            coredump.restore_regs()
+            if is_coredump:
+                coredump.restore_regs()

 class CoroutineSPFunction(gdb.Function):
     def __init__(self):