Hello,
I am investigating an crash apparently caused by the Virtio Serial driver (vioser) which sometimes happens after a CPU/memory hotplug event when PnP Manager stops the serial devices, reassigns hardware resources and starts the devices again. It looks like a write queue on one of the serial devices gets corrupted between stopping and restarting the device.
Currently, my only suspect is the EvtIoStop callback for the write queue (VIOSerialPortWriteIoStop). The write request being the subject of the callback, may get completed at any moment (from a DPC) during execution of the callback and the documentation for EvtIoStop says the callback should get exclusive access to the request before doing anything with it.
- I did a bit of searching on this forum and found out that calling
WdfRequestStopAckowledgewith the second parameter set toFALSEshould be OK (I also learnt that the callback is not invoked for request not delivered to queue’s EvtIoWrite callback), - does this hold also for
WdfRequestStopAcknowledgewith the second parameter set toTRUE(which is what the driver is actually doing)?
Thank you for any help/clarification on this area.