If one DLL allocates a resource (for example, memory) but a different DLL is responsible for freeing this resource, the leak check in Application Verifier (AppVerifier) may generate false positives in Windows 7, in Windows Server 2008, and in Windows Server 2008. This issue is also seen when you use third-party test suites that include AppVerifier as a required component, because these test suites are not designed to recognize the limitation of AppVerifier's Leak Detection feature. For example, if foo.dll allocates memory and passes it on to bar.dll, and if foo.dll is unloaded before the memory is freed by bar.dll, AppVerifier reports verifier stop 0x900 saying that foo.dll is leaking memory when in fact bar.dll may free this memory at some point.
Therefore, third-party certification suites that include AppVerifier leak check as a required component fail drivers in their certification process. Microsoft test suites (WLK and WinParty) include AppVerifer but do not enable the Leak detection feature as a default option and therefore pass without this being the cause for failure.
The leak check in AppVerifier works under the assumption that the DLL that allocated the memory is responsible for freeing the memory before it is unloaded. It assigns the ownership of resources to DLLs when the resources are acquired, and it reports any outstanding resources as leaks when the DLL is unloaded. However, this does not work well in scenarios in which one DLL allocates the memory but another DLL frees this memory.
Report any issues from the leak check to the driver owners. However, do not fail the test because of these issues.
The leak check in AppVerifier can help find memory leaks. However, if you decide to use this tool, you should be aware of the limitation that is mentioned in the "Cause" section.
To disable the leak check in AppVerifier, follow these steps:
Start Application Verifier.
On the File menu, click Add, and then select spoolsv.exe.
Note You should see spoolsv.exe under Application, and you should see a tree of options under Test.
Expand the section of the tree called Basics.
Click to clear the Heaps check box. (By default, Heaps is enabled.) Otherwise, Citrix stress printers will report false errors because of the large amount of memory and the large number of calls that complex drivers make during the stress test.
Click to clear the Leak check box.
Enable all the tree settings for Printing. To do this, click to select the following check boxes:
Right-click PrintDriver, and then select Verifier Stops. The Verifier Stops window appears.
In the Verifier Stops window, scroll to 00000D02A. Select this entry, and then click to select the Inactive check box to make the entry inactive.
Save all settings, and then restart the server.
Application Verifier, AppVerifier, leak detection
Windows 7 Service Pack 1, Windows 7 Professional, Windows 7 Ultimate, Windows 7 Home Basic, Windows 7 Home Premium, Windows 7 Enterprise, Windows Server 2008 Datacenter, Windows Server 2008 Datacenter without Hyper-V, Windows Server 2008 Enterprise, Windows Server 2008 Enterprise without Hyper-V, Windows Server 2008 for Itanium-Based Systems, Windows Server 2008 Foundation, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Datacenter without Hyper-V, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Enterprise without Hyper-V, Windows Server 2008 R2 for Itanium-Based Systems, Windows Server 2008 R2 Foundation