[PATCH v2 0/5] qemu: auto-select win-dmp for Windows guest crash dumps

Denis V. Lunev via Devel posted 5 patches 1 week, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20260811092457.3478292-1-den@openvz.org
NEWS.rst                                      |  19 ++
src/libvirt_private.syms                      |   2 +
src/logging/log_daemon_config.c               |   2 +-
src/logging/log_daemon_config.h               |   2 +-
src/logging/test_virtlogd.aug.in              |   2 +-
src/logging/virtlogd.aug                      |   5 +-
src/logging/virtlogd.conf                     |   7 +-
src/qemu/libvirtd_qemu.aug                    |   4 +
src/qemu/qemu.conf.in                         |  17 ++
src/qemu/qemu_capabilities.c                  |   4 +
src/qemu/qemu_capabilities.h                  |   3 +
src/qemu/qemu_conf.c                          |   2 +
src/qemu/qemu_conf.h                          |   1 +
src/qemu/qemu_driver.c                        | 163 +++++++++++++++++-
src/qemu/test_libvirtd_qemu.aug.in            |   1 +
src/util/virconf.c                            |  47 +++++
src/util/virconf.h                            |   3 +
src/util/virutil.c                            |  23 +++
src/util/virutil.h                            |   5 +
.../caps_11.1.0_aarch64.replies               |   5 +-
.../caps_11.1.0_aarch64.xml                   |   1 +
.../caps_11.1.0_x86_64.replies                |   5 +-
.../caps_11.1.0_x86_64.xml                    |   1 +
tests/qemumonitorjsontest.c                   |   3 +
tests/virstringtest.c                         |  76 ++++++++
25 files changed, 394 insertions(+), 9 deletions(-)
[PATCH v2 0/5] qemu: auto-select win-dmp for Windows guest crash dumps
Posted by Denis V. Lunev via Devel 1 week, 5 days ago
Auto-triggered dumps (on_crash, watchdog) always use QEMU's elf
default, which is not WinDbg-loadable for a Windows guest and cannot
be reliably converted after the fact.

This was proposed before as a per-domain XML knob
(https://www.mail-archive.com/devel@lists.libvirt.org/msg09638.html).
Daniel P. Berrange objected: QEMU's query-dump-guest-memory-capability
reported win-dmp as available on any x86-64 guest regardless of
whether it had actually published a Windows dump header, so trusting
it was not safe. QEMU's win_dump_available() has since been fixed to
check the guest's vmcoreinfo note
(https://lore.kernel.org/qemu-devel/20260619101834.228432-1-den@openvz.org/,
commit b4bdad7dce).

Validated against real guests: a Windows Server 2022 guest crashed
via Sysinternals NotMyFault produces a PAGEDU64 (win-dmp) dump; an
AlmaLinux 9 guest crashed via sysrq produces an ELF one. A 1GiB quota
across two Linux crashes pruned the older dump and kept the newer,
over-quota one. syntax-check and virstringtest pass.

Changes since v1:
* detect the 'allowed-by-guest' feature QEMU 11.1 puts on the win-dmp
  member of DumpGuestMemoryFormat (thanks Daniel for idea)
* skip the probe unless that capability is present, so QEMU that
  offers win-dmp to every x86 guest keeps the elf default (Daniel).
* fix the sort position of both new symbols in libvirt_private.syms,
      which v1 got wrong; picked up Daniel's Reviewed-by.
* update virtlogd.aug and test_virtlogd.aug.in for the quoted form (Daniel).
* update libvirtd_qemu.aug and test_libvirtd_qemu.aug.in for the new
  setting, and VIR_INFO -> VIR_DEBUG (both Daniel); count and remove
  only the dumps libvirt itself wrote, and skip pruning after a
  failed dump.
* renamed test helpers for virStrToBytes
* NEWS.rst entries added.

Denis V. Lunev (5):
  qemu: add capability for guest-aware win-dmp availability
  qemu: auto-select win-dmp for crash- and watchdog-triggered dumps
  util: add virStrToBytes() and virConfGetValueBytes() for scaled sizes
  logging: accept a unit suffix in virtlogd's max_size
  qemu: cap total size of auto-triggered dumps under auto_dump_path

 NEWS.rst                                      |  19 ++
 src/libvirt_private.syms                      |   2 +
 src/logging/log_daemon_config.c               |   2 +-
 src/logging/log_daemon_config.h               |   2 +-
 src/logging/test_virtlogd.aug.in              |   2 +-
 src/logging/virtlogd.aug                      |   5 +-
 src/logging/virtlogd.conf                     |   7 +-
 src/qemu/libvirtd_qemu.aug                    |   4 +
 src/qemu/qemu.conf.in                         |  17 ++
 src/qemu/qemu_capabilities.c                  |   4 +
 src/qemu/qemu_capabilities.h                  |   3 +
 src/qemu/qemu_conf.c                          |   2 +
 src/qemu/qemu_conf.h                          |   1 +
 src/qemu/qemu_driver.c                        | 163 +++++++++++++++++-
 src/qemu/test_libvirtd_qemu.aug.in            |   1 +
 src/util/virconf.c                            |  47 +++++
 src/util/virconf.h                            |   3 +
 src/util/virutil.c                            |  23 +++
 src/util/virutil.h                            |   5 +
 .../caps_11.1.0_aarch64.replies               |   5 +-
 .../caps_11.1.0_aarch64.xml                   |   1 +
 .../caps_11.1.0_x86_64.replies                |   5 +-
 .../caps_11.1.0_x86_64.xml                    |   1 +
 tests/qemumonitorjsontest.c                   |   3 +
 tests/virstringtest.c                         |  76 ++++++++
 25 files changed, 394 insertions(+), 9 deletions(-)

-- 
2.53.0
Re: [PATCH v2 0/5] qemu: auto-select win-dmp for Windows guest crash dumps
Posted by Denis V. Lunev via Devel 5 days, 22 hours ago
On 8/11/26 11:24, Denis V. Lunev wrote:
> This email originated from an IP that might not be authorized by the domain it was sent from.
> Do not click links or open attachments unless it is an email you expected to receive.
> Auto-triggered dumps (on_crash, watchdog) always use QEMU's elf
> default, which is not WinDbg-loadable for a Windows guest and cannot
> be reliably converted after the fact.
>
> This was proposed before as a per-domain XML knob
> (https://www.mail-archive.com/devel@lists.libvirt.org/msg09638.html).
> Daniel P. Berrange objected: QEMU's query-dump-guest-memory-capability
> reported win-dmp as available on any x86-64 guest regardless of
> whether it had actually published a Windows dump header, so trusting
> it was not safe. QEMU's win_dump_available() has since been fixed to
> check the guest's vmcoreinfo note
> (https://lore.kernel.org/qemu-devel/20260619101834.228432-1-den@openvz.org/,
> commit b4bdad7dce).
>
> Validated against real guests: a Windows Server 2022 guest crashed
> via Sysinternals NotMyFault produces a PAGEDU64 (win-dmp) dump; an
> AlmaLinux 9 guest crashed via sysrq produces an ELF one. A 1GiB quota
> across two Linux crashes pruned the older dump and kept the newer,
> over-quota one. syntax-check and virstringtest pass.
>
> Changes since v1:
> * detect the 'allowed-by-guest' feature QEMU 11.1 puts on the win-dmp
>   member of DumpGuestMemoryFormat (thanks Daniel for idea)
> * skip the probe unless that capability is present, so QEMU that
>   offers win-dmp to every x86 guest keeps the elf default (Daniel).
> * fix the sort position of both new symbols in libvirt_private.syms,
>       which v1 got wrong; picked up Daniel's Reviewed-by.
> * update virtlogd.aug and test_virtlogd.aug.in for the quoted form (Daniel).
> * update libvirtd_qemu.aug and test_libvirtd_qemu.aug.in for the new
>   setting, and VIR_INFO -> VIR_DEBUG (both Daniel); count and remove
>   only the dumps libvirt itself wrote, and skip pruning after a
>   failed dump.
> * renamed test helpers for virStrToBytes
> * NEWS.rst entries added.
>
> Denis V. Lunev (5):
>   qemu: add capability for guest-aware win-dmp availability
>   qemu: auto-select win-dmp for crash- and watchdog-triggered dumps
>   util: add virStrToBytes() and virConfGetValueBytes() for scaled sizes
>   logging: accept a unit suffix in virtlogd's max_size
>   qemu: cap total size of auto-triggered dumps under auto_dump_path
>
>  NEWS.rst                                      |  19 ++
>  src/libvirt_private.syms                      |   2 +
>  src/logging/log_daemon_config.c               |   2 +-
>  src/logging/log_daemon_config.h               |   2 +-
>  src/logging/test_virtlogd.aug.in              |   2 +-
>  src/logging/virtlogd.aug                      |   5 +-
>  src/logging/virtlogd.conf                     |   7 +-
>  src/qemu/libvirtd_qemu.aug                    |   4 +
>  src/qemu/qemu.conf.in                         |  17 ++
>  src/qemu/qemu_capabilities.c                  |   4 +
>  src/qemu/qemu_capabilities.h                  |   3 +
>  src/qemu/qemu_conf.c                          |   2 +
>  src/qemu/qemu_conf.h                          |   1 +
>  src/qemu/qemu_driver.c                        | 163 +++++++++++++++++-
>  src/qemu/test_libvirtd_qemu.aug.in            |   1 +
>  src/util/virconf.c                            |  47 +++++
>  src/util/virconf.h                            |   3 +
>  src/util/virutil.c                            |  23 +++
>  src/util/virutil.h                            |   5 +
>  .../caps_11.1.0_aarch64.replies               |   5 +-
>  .../caps_11.1.0_aarch64.xml                   |   1 +
>  .../caps_11.1.0_x86_64.replies                |   5 +-
>  .../caps_11.1.0_x86_64.xml                    |   1 +
>  tests/qemumonitorjsontest.c                   |   3 +
>  tests/virstringtest.c                         |  76 ++++++++
>  25 files changed, 394 insertions(+), 9 deletions(-)
>
ping