Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

leaks in MessageBox #1140

Open
derekbruening opened this issue Nov 28, 2014 · 3 comments
Open

leaks in MessageBox #1140

derekbruening opened this issue Nov 28, 2014 · 3 comments

Comments

@derekbruening
Copy link
Contributor

From bruen...@google.com on February 21, 2013 15:26:21

tests/app_suite_tests.exe --gtest_filter=NtUserTests.Msgbox

=> these leaks, which I'm suppressing (for app_suite only? maybe for
everyone) for now:

Dr.M Error #1: LEAK 44 direct bytes 0x006cc970-0x006cc99c + 0 indirect bytes
Dr.M # 0 KERNELBASE.dll!LocalAlloc
Dr.M # 1 MSCTF.dll!cicMemAllocClear
Dr.M # 2 MSCTF.dll!TLS::InternalAllocateTLS
Dr.M # 3 USER32.dll!ImeWndProcWorker
Dr.M # 4 USER32.dll!ImeWndProcW
Dr.M # 5 USER32.dll!InternalCallWinProc
Dr.M # 6 USER32.dll!UserCallWinProcCheckWow
Dr.M # 7 USER32.dll!DispatchClientMessage
Dr.M # 8 USER32.dll!__fnINLPCREATESTRUCT
Dr.M # 9 ntdll.dll!KiUserCallbackDispatcher
Dr.M #10 USER32.dll!InternalCreateDialog
Dr.M #11 USER32.dll!InternalDialogBox
Dr.M
Dr.M Error #2: LEAK 12 direct bytes 0x0068dbe8-0x0068dbf4 + 0 indirect bytes
Dr.M # 0 ntdll.dll!LdrpSearchResourceSection_U
Dr.M # 1 ntdll.dll!LdrpGetRcConfig
Dr.M # 2 ntdll.dll!LdrIsResItemExist
Dr.M # 3 ntdll.dll!LdrpSearchResourceSection_U
Dr.M # 4 ntdll.dll!LdrFindResource_U
Dr.M # 5 KERNELBASE.dll!FindResourceExW
Dr.M # 6 USER32.dll!SplFindResource
Dr.M # 7 USER32.dll!LoadDIB
Dr.M # 8 USER32.dll!ObjectFromDIBResource
Dr.M # 9 USER32.dll!LoadIcoCur
Dr.M #10 USER32.dll!CopyImageFromRes
Dr.M #11 USER32.dll!CopyIcoCur
Dr.M
Dr.M Error #3: LEAK 52 direct bytes 0x006ce438-0x006ce46c + 32 indirect bytes
Dr.M # 0 IMM32.dll!ImmLocalAlloc
Dr.M # 1 IMM32.dll!ImmLockClientImc
Dr.M # 2 IMM32.dll!ImmGetSaveContext
Dr.M # 3 IMM32.dll!ImmSetActiveContext
Dr.M # 4 USER32.dll!FocusSetIMCContext
Dr.M # 5 USER32.dll!ImeSystemHandler
Dr.M # 6 USER32.dll!ImeWndProcWorker
Dr.M # 7 USER32.dll!ImeWndProcW
Dr.M # 8 USER32.dll!InternalCallWinProc
Dr.M # 9 USER32.dll!UserCallWinProcCheckWow
Dr.M #10 USER32.dll!DispatchClientMessage
Dr.M #11 USER32.dll!__fnDWORD
Dr.M
Dr.M Error #4: LEAK 32 direct bytes 0x006cf508-0x006cf528 + 8 indirect bytes
Dr.M # 0 IMM32.dll!ImmLocalAlloc
Dr.M # 1 IMM32.dll!InternalAllocateTLS
Dr.M # 2 IMM32.dll!InternalImmLockIMC
Dr.M # 3 IMM32.dll!ImmLockIMC
Dr.M # 4 IMM32.dll!ImmSetActiveContext
Dr.M # 5 USER32.dll!FocusSetIMCContext
Dr.M # 6 USER32.dll!ImeSystemHandler
Dr.M # 7 USER32.dll!ImeWndProcWorker
Dr.M # 8 USER32.dll!ImeWndProcW
Dr.M # 9 USER32.dll!InternalCallWinProc
Dr.M #10 USER32.dll!UserCallWinProcCheckWow
Dr.M #11 USER32.dll!DispatchClientMessage

Original issue: http://code.google.com/p/drmemory/issues/detail?id=1140

@derekbruening
Copy link
Contributor Author

From bruen...@google.com on February 21, 2013 12:28:47

the ones above are an auto-closed msgbox. a regular one has:

Dr.M Error #1: LEAK 52 direct bytes 0x0052c608-0x0052c63c + 32 indirect bytes
Dr.M # 0 IMM32.dll!ImmLocalAlloc
Dr.M # 1 IMM32.dll!ImmLockClientImc
Dr.M # 2 IMM32.dll!ImmGetSaveContext
Dr.M # 3 IMM32.dll!ImmGetContext
Dr.M # 4 USER32.dll!FocusSetIMCContext
Dr.M # 5 USER32.dll!ImeSystemHandler
Dr.M # 6 USER32.dll!ImeWndProcWorker
Dr.M # 7 USER32.dll!ImeWndProcW
Dr.M # 8 USER32.dll!InternalCallWinProc
Dr.M # 9 USER32.dll!UserCallWinProcCheckWow
Dr.M #10 USER32.dll!DispatchClientMessage
Dr.M #11 USER32.dll!__fnDWORD
Dr.M
Dr.M Error #2: POSSIBLE LEAK 24 direct bytes 0x0052ccd0-0x0052cce8 + 0 indirect bytes
Dr.M # 0 ole32.dll!PrivHeapAlloc [d:\w7rtm\com\ole32\common\ccompapi.cxx:61]
Dr.M # 1 ole32.dll!CArray::operator new [d:\w7rtm\com\ole32\ole232\inc\array.hxx:51]
Dr.M # 2 ole32.dll!EventPoolEntry::CreatePoolEntry [o:\w7rtm.obj.x86fre\com\ole32\common\daytona\objfre\i386\rwlock_ole32.cxx:1211]
Dr.M # 3 ole32.dll!EventPoolEntry::PrimeEventPool [o:\w7rtm.obj.x86fre\com\ole32\common\daytona\objfre\i386\rwlock_ole32.cxx:1150]
Dr.M # 4 ole32.dll!DllMain [d:\w7rtm\com\ole32\com\class\compobj.cxx:735]
Dr.M # 5 ole32.dll!__DllMainCRTStartup [d:\winmain\minkernel\crts\crtw32\dllstuff\crtdll.c:573]
Dr.M # 6 ntdll.dll!LdrpCallInitRoutine
Dr.M # 7 ntdll.dll!LdrpRunInitializeRoutines
Dr.M # 8 ntdll.dll!LdrpLoadDll
Dr.M # 9 ntdll.dll!LdrLoadDll
Dr.M #10 KERNELBASE.dll!LoadLibraryExW
Dr.M #11 KERNEL32.dll!LoadLibraryW
Dr.M
Dr.M Error #3: POSSIBLE LEAK 24 direct bytes 0x0052cd10-0x0052cd28 + 0 indirect bytes
Dr.M # 0 ole32.dll!CArray::operator new [d:\w7rtm\com\ole32\ole232\inc\array.hxx:51]
Dr.M # 1 ole32.dll!EventPoolEntry::CreatePoolEntry [o:\w7rtm.obj.x86fre\com\ole32\common\daytona\objfre\i386\rwlock_ole32.cxx:1211]
Dr.M # 2 ole32.dll!EventPoolEntry::PrimeEventPool [o:\w7rtm.obj.x86fre\com\ole32\common\daytona\objfre\i386\rwlock_ole32.cxx:1150]
Dr.M # 3 ole32.dll!DllMain [d:\w7rtm\com\ole32\com\class\compobj.cxx:735]
Dr.M # 4 ole32.dll!__DllMainCRTStartup [d:\winmain\minkernel\crts\crtw32\dllstuff\crtdll.c:573]
Dr.M # 5 ntdll.dll!LdrpCallInitRoutine
Dr.M # 6 ntdll.dll!LdrpRunInitializeRoutines
Dr.M # 7 ntdll.dll!LdrpLoadDll
Dr.M # 8 ntdll.dll!LdrLoadDll
Dr.M # 9 KERNELBASE.dll!LoadLibraryExW
Dr.M #10 KERNEL32.dll!LoadLibraryW
Dr.M #11 IMM32.dll!GetFn
~

@derekbruening
Copy link
Contributor Author

From zhao...@google.com on April 09, 2013 15:58:27

Similar but a bit different leaks reported, might caused by system update in between?

On running msgbox test on my machine, I saw another three leaks

$ ./bin/drmemory.exe -suppress ../../../drmemory.git/tests/app_suite/default-suppressions.txt -- ./tests/app_suite_tests.exe --gtest_filter=Msgbox
WARNING: using debug DynamoRIO since release not found
Dr.M Dr. Memory version 1.5.1270
Dr.M Running ""./tests/app_suite_tests.exe" "--gtest_filter=Msgbox""
Dr.M Recorded 12 suppression(s) from user D:\src\cygwin\home\zhaoqin\Workspace\DrMemory\drmemory.git\tests\app_suite\default-suppressions.txt
Running main() from gtest_main.cc
Note: Google Test filter = Msgbox
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from NtUserTests
[ RUN ] NtUserTests.Msgbox
Found msgbox window: closing.
[ OK ] NtUserTests.Msgbox (7638 ms)
[----------] 1 test from NtUserTests (7756 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (8772 ms total)
[ PASSED ] 1 test.

YOU HAVE 1 DISABLED TEST

Dr.M
Dr.M Error #1: LEAK 8 direct bytes 0x003e40c0-0x003e40c8 + 0 indirect bytes
Dr.M # 0 ntdll.dll!RtlpUpdateTEBLanguage
Dr.M # 1 ntdll.dll!InitializeTEBUserLangList
Dr.M # 2 ntdll.dll!RtlGetThreadPreferredUILanguages
Dr.M # 3 ntdll.dll!LdrpSetThreadPreferredLangList
Dr.M # 4 ntdll.dll!LdrpLoadResourceFromAlternativeModule
Dr.M # 5 ntdll.dll!LdrpSearchResourceSection_U
Dr.M # 6 ntdll.dll!RtlLoadString
Dr.M # 7 KERNELBASE.dll!LoadStringBaseExW
Dr.M # 8 USER32.dll!LoadStringW
Dr.M # 9 MSCTF.dll!CResStringCache::operator unsigned short *
Dr.M #10 MSCTF.dll!CLBarItemBase::GetInfo
Dr.M #11 MSCTF.dll!CLangBarItemMgr::AddItem
Dr.M
Dr.M Error #2: LEAK 76 direct bytes 0x003e4d58-0x003e4da4 + 12 indirect bytes
Dr.M # 0 KERNELBASE.dll!LocalAlloc
Dr.M # 1 MSCTF.dll!cicMemAllocClear
Dr.M # 2 MSCTF.dll!operator new
Dr.M # 3 MSCTF.dll!CThreadInputMgr::Resume
Dr.M # 4 MSCTF.dll!CThreadInputMgr::ActivateEx_P
Dr.M # 5 MSCTF.dll!CicBridge::ActivateIMMX
Dr.M # 6 MSCTF.dll!_CtfImeCreateThreadMgr
Dr.M # 7 IMM32.dll!CtfImmTIMActivate
Dr.M # 8 IMM32.dll!InternalImmLockIMC
Dr.M # 9 IMM32.dll!ImmLockIMC
Dr.M #10 IMM32.dll!ImmSetActiveContext
Dr.M #11 USER32.dll!FocusSetIMCContext
Dr.M
Dr.M Error #3: LEAK 12 direct bytes 0x00351320-0x0035132c + 0 indirect bytes
Dr.M # 0 ntdll.dll!LdrpSearchResourceSection_U
Dr.M # 1 ntdll.dll!LdrpGetRcConfig
Dr.M # 2 ntdll.dll!LdrIsResItemExist
Dr.M # 3 ntdll.dll!LdrpSearchResourceSection_U
Dr.M # 4 ntdll.dll!RtlLoadString
Dr.M # 5 KERNELBASE.dll!LoadStringBaseExW
Dr.M # 6 USER32.dll!LoadStringW
Dr.M # 7 MSCTF.dll!CResStringCache::operator unsigned short *
Dr.M # 8 MSCTF.dll!CLBarItemBase::GetInfo
Dr.M # 9 MSCTF.dll!CLangBarItemMgr::AddItem
Dr.M #10 MSCTF.dll!CLangBarItemMgr::_Init
Dr.M #11 MSCTF.dll!CLangBarItemMgr::CreateInstance
Dr.M
Dr.M ERRORS FOUND:
Dr.M 0 unique, 0 total unaddressable access(es)
Dr.M 0 unique, 0 total uninitialized access(es)
Dr.M 0 unique, 0 total invalid heap argument(s)
Dr.M 0 unique, 0 total GDI usage error(s)
Dr.M 0 unique, 0 total warning(s)
Dr.M 3 unique, 3 total, 108 byte(s) of leak(s)
Dr.M 0 unique, 0 total, 0 byte(s) of possible leak(s)
Dr.M ERRORS IGNORED:
Dr.M 0 user-suppressed, 80 default-suppressed error(s)
Dr.M 3 user-suppressed, 8 default-suppressed leak(s)
Dr.M 710 still-reachable allocation(s)
Dr.M (re-run with "-show_reachable" for details)
Dr.M Details: D:\src\cygwin\home\zhaoqin\Workspace\DrMemory\builds\build_suite\build_drmemory-dbg-32\logs\DrMemory-app_suite_tests.exe.86716.000\results.txt

@derekbruening
Copy link
Contributor Author

From bruen...@google.com on June 17, 2013 20:39:54

** TODO issue #1140 w/o syms on win8: imm32.dll!ImmLocalAlloc

On win8 app_suite built with VS2012 and run w/o syms:

% bin/symquery -e c:/windows/syswow64/imm32.dll -f -v -a 0x2c71
<debug info: type=PDB, has symbols, NO line numbers>
ImmLocalAlloc+0x1f
=> xref issue #1140

Error #4: LEAK 52 direct bytes 0x03fb8660-0x03fb8694 + 0 indirect bytes

0 replace_RtlAllocateHeap (0x0345d080 <drmemorylib.dll+0x17d080>)

e:\b\build\slave\win-8_x64-drm\drmemory\common\alloc_replace.c:2982

1 IMM32.dll!ImmUnlockIMCC (0x769e2c71 <IMM32.dll+0x2c71>)

??:0

2 IMM32.dll!ImmLoadIME (0x769e36c7 <IMM32.dll+0x36c7>)

??:0

3 IMM32.dll!ImmGetContext (0x769e2691 <IMM32.dll+0x2691>)

??:0

4 IMM32.dll!ImmSetActiveContext (0x769e2a99 <IMM32.dll+0x2a99>)

??:0

5 USER32.dll!CreateWindowExW (0x764cd9cf <USER32.dll+0xd9cf>)

??:0

6 USER32.dll!CreateWindowExW (0x764cd996 <USER32.dll+0xd996>)

??:0

7 USER32.dll!SendMessageW (0x764cac3d <USER32.dll+0xac3d>)

??:0

8 USER32.dll!SendMessageW (0x764cac77 <USER32.dll+0xac77>)

??:0

9 USER32.dll!gapfnScSendMessage (0x764c77d8 <USER32.dll+0x77d8>)

??:0

#10 USER32.dll!gapfnScSendMessage (0x764c78cb <USER32.dll+0x78cb>)
??:0
#11 USER32.dll!PeekMessageW (0x764c7b6f <USER32.dll+0x7b6f>)
??:0

Error #5: LEAK 32 direct bytes 0x03fb9078-0x03fb9098 + 8 indirect bytes

0 replace_RtlAllocateHeap (0x0345d080 <drmemorylib.dll+0x17d080>)

e:\b\build\slave\win-8_x64-drm\drmemory\common\alloc_replace.c:2982

1 IMM32.dll!ImmUnlockIMCC (0x769e2c71 <IMM32.dll+0x2c71>)

??:0

2 IMM32.dll!ImmLoadIME (0x769e3806 <IMM32.dll+0x3806>)

??:0

3 IMM32.dll!ImmLoadIME (0x769e3761 <IMM32.dll+0x3761>)

??:0

4 IMM32.dll!ImmSetActiveContext (0x769e2aa2 <IMM32.dll+0x2aa2>)

??:0

5 USER32.dll!CreateWindowExW (0x764cd9cf <USER32.dll+0xd9cf>)

??:0

6 USER32.dll!CreateWindowExW (0x764cd996 <USER32.dll+0xd996>)

??:0

7 USER32.dll!SendMessageW (0x764cac3d <USER32.dll+0xac3d>)

??:0

8 USER32.dll!SendMessageW (0x764cac77 <USER32.dll+0xac77>)

??:0

9 USER32.dll!gapfnScSendMessage (0x764c77d8 <USER32.dll+0x77d8>)

??:0

#10 USER32.dll!gapfnScSendMessage (0x764c78cb <USER32.dll+0x78cb>)
??:0
#11 USER32.dll!PeekMessageW (0x764c7b6f <USER32.dll+0x7b6f>)
??:0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant