Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

The leak check in Application Verifier may generate false positives in Windows 7, in Windows Server 2008, and in Windows Server 2008 R2


View products that this article applies to.

Symptoms

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.


↑ Back to the top


Cause

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.�

↑ Back to the top


Resolution

Report any issues from the leak check to the driver owners. However, do not fail the test because of these issues. �

↑ Back to the top


More information

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:�
  1. Start Application Verifier.�
  2. 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.
  3. Expand the section of the tree called Basics.�
  4. 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.�
  5. Click to clear the�Leak check box.
  6. Enable all the tree settings for Printing. To do this, click to select the following check boxes:
    • Printing
    • PrintAPI
    • PrintDriver
  7. Right-click�PrintDriver, and then select Verifier Stops. The Verifier Stops window appears.�
  8. 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.�
  9. Save all settings, and then restart the server.

↑ Back to the top


Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

↑ Back to the top


Keywords: KB2554587

↑ Back to the top

Article Info
Article ID : 2554587
Revision : 4
Created on : 5/24/2012
Published on : 5/24/2012
Exists online : False
Views : 595