@“Scott_Noone_(OSR)” said:
What’s the context here? Is this just some random system or is this while testing your driver?
Honestly, I’m not sure if this issue is caused by my driver because I can’t see any information related to non-Microsoft drivers in this stack, and the problem is not consistently reproducible. At the moment, I can only suspect that there may be some flaws in my own driver
@“Scott_Noone_(OSR)” said:
What’s the context here? Is this just some random system or is this while testing your driver?
Moreover, I cannot reproduce this issue in my own environment. Otherwise, perhaps I could try to locate the problem through some more cumbersome methods, such as individually pausing my drivers or recording all the mdl operations within them.
You really have to assume it is your code that is causing this. Its the default hypothesis. Corruption issues generally are not kind enough to crap out with your driver in the stack. So the approach I generally take is to use logging to understand what my crappy code was doing when the system crashed. Either the full ETW nonsense or the much less awful IFR can be useful. Both are lightweight enough to not massively disturb the runtime characteristics of your code.
@“Scott_Noone_(OSR)” said:
Does your driver do anything funky with MDLs? If yes now would also be a good opportunity to review that code.
I’m not entirely sure because this may involve seven or eight drivers. I only have knowledge of a part of them, and my own environment cannot reproduce the issue (the problem itself also occurs randomly, so it’s inconvenient to pinpoint which specific driver might be causing the problem). That’s why I’m wondering if it’s possible to extract some clues from the dump, even if it helps narrow down the scope of investigation a bit.
Not really…A process is exiting and tearing down its virtual address space. In doing so it finds an in use page with a reference count of zero. I’d look at anywhere in the code that calls MmUnlockPages or modifies Irp->MdlAddress. Other than that you could try enabling Verifier on ntoskrnl.exe and see if that gets you anywhere.
@“Scott_Noone_(OSR)” said:
Not really…A process is exiting and tearing down its virtual address space. In doing so it finds an in use page with a reference count of zero. I’d look at anywhere in the code that calls MmUnlockPages or modifies Irp->MdlAddress. Other than that you could try enabling Verifier on ntoskrnl.exe and see if that gets you anywhere.
Thanks a lot for your suggestion. It seems that I’ll need to set aside some time to check each driver individually.