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):