A customer was trying to track down a memory leak in their program. Their leak tracking tool produced the stacks which allocated memory that was never freed, and they all seemed to come from uxtheme.dll, which is a DLL that comes with Windows. The customer naturally contacted Microsoft to report what appeared to be a memory leak in Windows. I was one of the people who investigated this case, and the customer was able to narrow down the scenario which was triggering the leak. Eventually, I tracked it down. First, here's the thread that caused the leak: DWORD CALLBACK ThreadProc(void *lpParameter)
{
...
// This CreateWindow caused uxtheme to allocate some memory
HWND hwnd = CreateWindow(...);
RememberWorkerWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
Read more: The Old New Thing
QR:
{
...
// This CreateWindow caused uxtheme to allocate some memory
HWND hwnd = CreateWindow(...);
RememberWorkerWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
Read more: The Old New Thing
QR:
0 comments:
Post a Comment