Systematic low resources simulation
The Systematic low resources simulation option injects resource failures in kernel mode drivers. This option penetrates driver error handling paths. Testing these paths has historically been very difficult. The Systematic low resources simulation option injects resource failures in a predictable manner, which makes the issues it finds reproducible. Because the error paths are easy to reproduce, it also makes it easy to verify fixes to these issues.
To help you determine the root cause of the error, a debugger extension is provided that can tell you exactly which failures have been injected and in what order.
Caution This option is not intended for use when you are verifying all (or a large collection of) drivers on a computer. This option should be used only when you are doing targeted testing of individual drivers or their attached filter drivers. Using this option on a large number of drivers at the same time could cause unpredictable results, and could force crashes in components unrelated to the driver(s) you are testing.
Note For Windows 8.1, the Stack Based Failure Injection feature, which was available in the WDK 8, has been integrated into Driver Verifier. On computers running Windows 8.1, use the Systematic low resources simulation option.
When the Systematic low resources simulation option is enabled on a specific driver, it intercepts some calls from that driver to the kernel and Ndis.sys. Systematic low resources simulation looks at the call stack—specifically, at the portion of the call stack that comes from the driver it is enabled on. If this is the first time it has ever seen that stack, it will fail the call according to the semantics of that call. Otherwise, if it has seen that call before, it will pass it through untouched. Systematic low resources simulation contains logic to deal with the fact that a driver can be loaded and unloaded multiple times. It will recognize that a call stack is the same even if the driver is reloaded into a different memory location.
You can activate the Systematic low resources simulation feature for one or more drivers by using Driver Verifier Manager or the Verifier.exe command line. For details, see Selecting Driver Verifier Options. You must restart the computer to activate or deactivate the Systematic low resources simulation option.
- At the command line
At the command line, Systematic low resources simulation is represented by verifier /flags 0x040000 (Bit 18). To Systematic low resources simulation, use a flag value of 0x040000 or add 0x040000 to the flag value. For example:
verifier /flags 0x040000 /driver MyDriver.sys
The feature will be active after the next boot.
When you enable the Systematic low resources simulation option, you can use the /faultssystematic OPTION command line option to further control the Systematic low resources simulation.
Enables fault injections across computer reboots.
Disables fault injections across computer reboots (this is the default setting).
Enables fault injections in what if mode across computer reboots.
Disables fault injections across computer reboots and clears the stack exclusion list.
Dynamically enables fault injections.
Dynamically disables fault injections.
Dynamically enables fault injections in what if mode.
Dynamically disables fault injections and clears the previously faulted stack list.
Shows the current fault injection statistics.
Increments the test pass counter used to identify when a fault was injected.
Retrieves the indicated injected stack identifier.
Excludes the stack from fault injection.
Using Driver Verifier Manager
- Start Driver Verifier Manager. Type Verifier in a Command Prompt window.
- Select Create custom settings (for code developers) and then click Next.
- Select Select individual settings from a full list.
- Select (check) Systematic low resources simulation.
- Restart the computer.
Most of the issues found with Systematic low resources simulation result in bug checks. To help determine the cause of these code bugs, the Windows Debugging tools for Windows 8.1 provides the debugger extension (kdexts.dll) and the necessary symbols.
To run the debugger extension
- From the debugger command prompt, type the following command:
This will dump information to your debugger showing the call stacks from the most recent failures injected.