[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: xeniface: assertion failure on hibernation


  • To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Paul Durrant <xadimgnik@xxxxxxxxx>
  • Date: Tue, 16 Jul 2024 09:19:24 +0100
  • Delivery-date: Tue, 16 Jul 2024 08:19:33 +0000
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>

On 15/07/2024 16:59, Rafał Wojdyła wrote:
Hi,

I was doing some tests with the default system shutdown that actually hibernates the OS and I'm hitting the following assertion:

xen|SystemPowerStateCallback: <- S0
xeniface|__FdoQuerySystemPower: ====> (Hibernate:Hibernate)
xeniface|FdoRequestQueryDevicePower: D3
xeniface|__FdoQueryDevicePower: ====> (D3:Hibernate)
xeniface|__FdoRequestQueryDevicePower: ASSERTION FAILED: (((NTSTATUS)(IoStatus->Status)) >= 0) Assertion xeniface\src\xeniface\fdo.c(1944): (((NTSTATUS)(IoStatus->Status)) >= 0)

It's reproducible on Win 10 and 11 with the latest xenbus and xeniface (debug build), no other pv drivers or tools. A bit more info below.


This is exactly the kind of reason why I feared changing the power IRP handling code. Anything to do with PnP or power handling is just so fragile. Any chance you could dig into this further?

0: kd> k
  # Child-SP          RetAddr               Call Site
00 ffff930b`bf235750 fffff802`34f7acc4 xeniface!__FdoRequestQueryDevicePower+0x57 [xeniface\src\xeniface\fdo.c @ 1944]
01 ffff930b`bf235790 fffff802`34e54975     nt!PopRequestCompletion+0x64
02 ffff930b`bf2357e0 fffff802`34e547b7     nt!IopfCompleteRequest+0x1a5
03 ffff930b`bf2358c0 fffff802`380a81be     nt!IofCompleteRequest+0x17
04 ffff930b`bf2358f0 fffff802`380a7dfd     xenbus!PdoDispatchPower+0x6e [xenbus\src\xenbus\pdo.c @ 1934] 05 ffff930b`bf235940 fffff802`3808a2e8     xenbus!PdoDispatch+0x5d [xenbus\src\xenbus\pdo.c @ 1970] 06 ffff930b`bf235980 fffff802`34f986cf     xenbus!DriverDispatch+0x228 [xenbus\src\xenbus\driver.c @ 342]
07 ffff930b`bf235a00 fffff802`34e2d40d     nt!IopPoHandleIrp+0x3b
08 ffff930b`bf235a30 fffff802`3b1c1029     nt!IofCallDriver+0x6d
09 ffff930b`bf235a70 fffff802`3b1c0eb7 xeniface!__FdoQueryDevicePowerDown+0x119 [xeniface\src\xeniface\fdo.c @ 1882] 0a ffff930b`bf235ad0 fffff802`3b1bcd1c xeniface!__FdoQueryDevicePower+0x1b7 [xeniface\src\xeniface\fdo.c @ 1915] 0b ffff930b`bf235b50 fffff802`3b1c2b69     xeniface!FdoDevicePower+0xfc [xeniface\src\xeniface\fdo.c @ 2126] 0c ffff930b`bf235bc0 fffff802`34f48da5     xeniface!ThreadFunction+0x39 [xeniface\src\xeniface\thread.c @ 110]
0d ffff930b`bf235c10 fffff802`35006b58     nt!PspSystemThreadStartup+0x55
0e ffff930b`bf235c60 00000000`00000000     nt!KiStartSystemThread+0x28
0: kd> ?? (DWORD) IoStatus->Status
DWORD 0xc00000bb
0: kd> !error 0xc00000bb
Error code: (NTSTATUS) 0xc00000bb (3221225659) - The request is not supported.
0: kd> .frame 0n4;dv /t /v
04 ffff930b`bf2358f0 fffff802`380a7dfd     xenbus!PdoDispatchPower+0x6e [xenbus\src\xenbus\pdo.c @ 1934]
ffff930b`bf235940 struct _XENBUS_PDO * Pdo = 0xffffc78e`45efe230
ffff930b`bf235948 struct _IRP * Irp = 0xffffc78e`4c29ade0
ffff930b`bf235910 unsigned char MinorFunction = 0x03 ''
ffff930b`bf235920 struct _IO_STACK_LOCATION * StackLocation = 0xffffc78e`4c29aef8 IRP_MJ_POWER / IRP_MN_WAIT_WAKE for Device for "\Driver\xenbus"
ffff930b`bf235914 long status = 0n-1073741637
0: kd> ?? (DWORD)Irp->IoStatus.Status
DWORD 0xc00000bb
0: kd> .frame 0n9;dv /t /v
09 ffff930b`bf235a70 fffff802`3b1c0eb7 xeniface!__FdoQueryDevicePowerDown+0x119 [xeniface\src\xeniface\fdo.c @ 1882]
ffff930b`bf235ad0 struct _XENIFACE_FDO * Fdo = 0xffffc78e`465154a0
ffff930b`bf235ad8 struct _IRP * Irp = 0xffffc78e`4c29ade0
ffff930b`bf235ab0 struct _IO_STACK_LOCATION * StackLocation = 0xffffc78e`4c29aef8 IRP_MJ_POWER / IRP_MN_WAIT_WAKE for Device for "\Driver\xenbus"
ffff930b`bf235a90 _DEVICE_POWER_STATE DeviceState = PowerDeviceD3 (0n4)
ffff930b`bf235a9c long status = 0n0
0: kd> ?? (DWORD)Irp->IoStatus.Status
DWORD 0xc00000bb

It's probably harmless here, but I also found some probable bugs in the gnttab code seemingly related to hibernation so thought I'd share this first.


Ah. maybe you're already on it.

  Paul




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.