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

Add a mod!... syntax for suppressing any number of frames within a module #738

Closed
derekbruening opened this issue Nov 28, 2014 · 1 comment

Comments

@derekbruening
Copy link
Contributor

From [email protected] on January 09, 2012 13:44:24

I've been adding more default suppressions, and I was thinking it would be useful to be able to match "mod.dll!...", meaning "any number of frames from this module."

Without symbols, we have reports like:

Dr.M Error #1: LEAK 320 direct bytes 0x01028f98-0x010290d8 + 588 indirect bytes
Dr.M # 0 RPCRT4.dll!? +0x0 (0x767a0636 <RPCRT4.dll+0x10636>)
Dr.M # 1 RPCRT4.dll!? +0x0 (0x767a0610 <RPCRT4.dll+0x10610>)
Dr.M # 2 RPCRT4.dll!RpcBindingFromStringBindingW +0x17d (0x767b1337 <RPCRT4.dll+0x21337>)
Dr.M # 3 RPCRT4.dll!NdrConformantVaryingArrayBufferSize +0x9bc (0x767b1165 <RPCRT4.dll+0x21165>)
Dr.M # 4 RPCRT4.dll!RpcBindingFromStringBindingW +0x70 (0x767b122a <RPCRT4.dll+0x2122a>)
Dr.M # 5 MMDevAPI.DLL!Ordinal6 +0x144d (0x6b7cf5bf <MMDevAPI.DLL+0xf5bf>)
Dr.M # 6 ntdll.dll!LdrEnumerateLoadedModules +0x94 (0x7782bfb4 <ntdll.dll+0x3bfb4>)
Dr.M # 7 KERNEL32.dll!InitOnceExecuteOnce +0x16 (0x76a7d606 <KERNEL32.dll+0x2d606>)
Dr.M # 8 MMDevAPI.DLL!DllCanUnloadNow +0x1100 (0x6b7c27c2 <MMDevAPI.DLL+0x27c2>)
Dr.M # 9 MMDevAPI.DLL!Ordinal6 +0x3fe (0x6b7ce570 <MMDevAPI.DLL+0xe570>)
Dr.M #10 MMDevAPI.DLL!Ordinal6 +0x3ce (0x6b7ce540 <MMDevAPI.DLL+0xe540>)
Dr.M #11 MMDevAPI.DLL!Ordinal6 +0x17ac (0x6b7cf91e <MMDevAPI.DLL+0xf91e>)
Dr.M #12 MMDevAPI.DLL!Ordinal6 +0x16ae (0x6b7cf820 <MMDevAPI.DLL+0xf820>)
Dr.M #13 MMDevAPI.DLL!Ordinal6 +0x186c (0x6b7cf9de <MMDevAPI.DLL+0xf9de>)
Dr.M #14 ole32.dll!CoInitializeSecurity +0x1a4c (0x75008ca6 <ole32.dll+0x28ca6>)
Dr.M #15 ole32.dll!CoSetState +0xa6a (0x75023170 <ole32.dll+0x43170>)
Dr.M #16 ole32.dll!CoInitializeSecurity +0x1b70 (0x75008dca <ole32.dll+0x28dca>)
Dr.M #17 ole32.dll!CoInitializeSecurity +0x1ae5 (0x75008d3f <ole32.dll+0x28d3f>)
Dr.M #18 ole32.dll!CoInitializeSecurity +0x1868 (0x75008ac2 <ole32.dll+0x28ac2>)
Dr.M #19 ole32.dll!CoInitializeSecurity +0x1819 (0x75008a73 <ole32.dll+0x28a73>)
Dr.M #20 ole32.dll!CoInitializeSecurity +0x1bd3 (0x75008e2d <ole32.dll+0x28e2d>)
Dr.M #21 ole32.dll!CoSetState +0xa6a (0x75023170 <ole32.dll+0x43170>)
Dr.M #22 ole32.dll!CoSetState +0x7ee (0x75022ef4 <ole32.dll+0x42ef4>)
Dr.M #23 ole32.dll!CoSetState +0xa6a (0x75023170 <ole32.dll+0x43170>)
Dr.M #24 ole32.dll!CoSetState +0x992 (0x75023098 <ole32.dll+0x43098>)
Dr.M #25 ole32.dll!CoCreateInstanceEx +0xd6 (0x75029e25 <ole32.dll+0x49e25>)
Dr.M #26 ole32.dll!CoCreateInstanceEx +0x37 (0x75029d86 <ole32.dll+0x49d86>)
Dr.M #27 ole32.dll!CoCreateInstance +0x33 (0x75029d3f <ole32.dll+0x49d3f>)
Dr.M #28 DevEnumTest_EnumerateAudioInputDevices_Test::TestBody [c:\src\drmemory\tests\app_suite\devenum_tests_win.cpp:60]

We don't have very many exports to identify the report, but we do have lots of modules boundaries. I'd like to be able to match lots of internal frames, and then an export in another module, followed by more internal, and so on, like so:

LEAK
name=issue #12 One-time RPC handle leak
RPCRT4.dll!...
RPCRT4.dll!RpcBindingFromStringBinding*
MMDevAPI.dll!*
ntdll.dll!*
kernel_.dll!InitOnceExecuteOnce
MMDevAPI.dll!...
ole32.dll!...
ole32.dll!CoCreateInstance_

Replacing all of those module ellipses with regular ellipses would make the suppression too loose.

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

@derekbruening
Copy link
Contributor Author

From [email protected] on January 17, 2012 07:44:10

This issue was closed by revision r706 .

Status: Fixed

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