У меня есть многопоточное консольное приложение Windows, которое, похоже, каждую минуту пропускает примерно 4 КБ личной памяти.
В попытке локализовать утечку я постепенно приостановил каждый поток в приложении, пока утечка не прекратилась, и, к моему удивлению, виновником кажется поток с именем "Win32Thread".
Это не похоже на поток, который я явно запустил.
Если я присоединяю и разрываю приложение, трассировка стека выглядит следующим образом:
ntdll.dll!_KiFastSystemCallRet@0()
ntdll.dll!_NtCancelTimer@8() + 0xc bytes
ntdll.dll!_RtlpResetTimer@12() + 0x15 bytes
> ntdll.dll!_RtlpServiceTimer@12() + 0xfd bytes
ntdll.dll!_KiUserApcDispatcher@16() + 0x25 bytes
kernel32.dll!_BaseThreadStart@8() + 0x34 bytes
Кто-нибудь знает, почему это может внезапно вытечь?
Приложение работало около 40 часов в двухъядерной системе Win2k3 SP2.
Любые идеи приветствуются.