mraeryceos
asked on
GDI Leaks
Is there tool I can use to track the source of GDI memory leaks? I am using WinXP, and have a lot of programs running.
ASKER
This doesn't help, because I think it is for debugging a program. I have a dozen background programs running, and want to find the offender.
Ahh, misunderstood :)
Task Manager. Open it as normal, then on the Processes tab go to View | Select Columns.
Place a check next to USER Objects and GDI Objects and hit OK.
Then look for process that seem to be using an excessive amount.
Place a check next to USER Objects and GDI Objects and hit OK.
Then look for process that seem to be using an excessive amount.
ASKER
I have a program called TaskInfo, which is what clued me in on which program is using too much GDI. The problem is that it is Explorer.exe, so it isn't very helpful. I think it may be something that is riding on top of Explorer, so I need something a little more sophisticated than Task Manager. In Task Manager, Explorer is only using 21MB. But TaskInfo has it using 2000+ GDI objects. Sometimes it goes higher than 6000, at which time my system is using close to 10000, and I have to close some apps and restart.
Then Process Explorer from Technet.
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Same thing, View | Select Columns.
It will show Child processes under Explorer.exe if there are any.
Most likely when it's in Explorer.exe it's items in the Systray (area next to the clock).
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Same thing, View | Select Columns.
It will show Child processes under Explorer.exe if there are any.
Most likely when it's in Explorer.exe it's items in the Systray (area next to the clock).
ASKER
Ok, I got the GDI column showing in Process Explorer, but everything is a child of Explorer! Take a look at attached. Don't laugh. I like all those programs. Just need to find out which has the GDI leak. Right now, things are going well, but eventually I will have probs.
process-explorer.jpg
process-explorer.jpg
ASKER
Is there not a tool for finding GDI Leaks related to Explorer?
Well yes, since Explorer.exe is the Windows shell most processes will be child processes of it. 2000ish isn't uncommon, but when it hits the 6000+ range you mentioned, Process Explorer should be able to point out the biggest users. There isn't much in explorer.exe itself that's likely, with the possible exception of .dll based shell extensions.
Unfortunately I'm not aware of a way to see the GDI objects of each individual DLL file. You can however select explorer.exe, and in the bottom window of Process Explorer have it display the dlls in use. Under View | Select Columns you can go to the DLL tab and check Mapped Size, WS Total Bytes etc. to get an idea of memory usage of each.
Unfortunately I'm not aware of a way to see the GDI objects of each individual DLL file. You can however select explorer.exe, and in the bottom window of Process Explorer have it display the dlls in use. Under View | Select Columns you can go to the DLL tab and check Mapped Size, WS Total Bytes etc. to get an idea of memory usage of each.
ASKER
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
"Detect and Plug GDI Leaks in Your Code with Two Powerful Tools for Windows XP"
http://msdn.microsoft.com/en-us/magazine/cc188782.aspx
I found an executable within the download. I ran it and it instantaneously crashed my system, with a win32k.sys blue screen of death.
http://msdn.microsoft.com/en-us/magazine/cc188782.aspx
I found an executable within the download. I ran it and it instantaneously crashed my system, with a win32k.sys blue screen of death.
ASKER
I found the software causing the problem by the process of elimination.
http://www.deleaker.com/
http://news.thomasnet.com/fullstory/487541