September 15th, 2017

How can I diagnose why my FreeLibrary isn’t freeing the library?

A customer had some code that called Free­Library, and they expected the library to be freed, but it wasn’t happening. They suspect that there was an unmatched call to Load­Library and was wondering if there were any diagnostic tools that would help them find it.

Application Verifier to the rescue.

Application Verifier maintains a history of module loads and unloads, and you can use the !avrf -dlls debugger extension to view that log. For each module that is loaded and unloaded, it records a stack trace of the Load­Library and Free­Library.

The customer reported back that this debugger extension found the problem. Their code used the HKEY_PERFORMANCE_DATA registry key to read some performance counters, and opening the performance counter was triggering an additional DLL load.

Topics
Code

Author

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

0 comments

Discussion are closed.