[PATCH v3 0/3] elf2dmp: identify faulting CPU in Windows crash dumps
Zhengrong Li <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
When a Windows guest crashes and QEMU generates a memory dump via
pvpanic, elf2dmp currently always sets CPU 0's context in the dump
header. This makes WinDbg default to CPU 0 when opening the dump,
even if the actual crash happened on a different CPU.
This series adds crash_occurred tracking from the runstate layer
through to the QEMUCPUState in the ELF dump, and teaches elf2dmp
to identify and use the faulting CPU's context.
Changes since v2:
- Remove unused fault_cpu variable in fill_context()
- Use per-CPU size check (s->size >= offsetof + sizeof) instead
of global has_is_crash_occurred_cpu flag, fixing heterogeneous
dumps where CPU notes have different sizes
- Remove has_is_crash_occurred_cpu from QEMU_Elf struct and
init_states() since per-CPU check makes it unnecessary
Changes since v1:
- Set header context before best-effort guest memory operations
to avoid losing faulting CPU context on partial dump failures
- Use LIVE_SYSTEM_DUMP when BugcheckCode is zero
- Use PRIx32 for BugcheckCode format specifier
- Use linux.alibaba.com identity
Zhengrong Li (3):
runstate: set crash_occurred on guest crashloaded
dump: add crash_occurred flag to QEMUCPUState
elf2dmp: fill ContextBuffer with faulting CPU context
contrib/elf2dmp/kdbg.h | 9 +++++++
contrib/elf2dmp/main.c | 50 ++++++++++++++++++++++++++++++++++++--
contrib/elf2dmp/qemu_elf.h | 2 ++
system/runstate.c | 5 ++++
target/i386/arch_dump.c | 6 +++++
5 files changed, 70 insertions(+), 2 deletions(-)
--
2.43.0