# This file contains suppressions for the Dr.Memory tool, see
# http://dev.chromium.org/developers/how-tos/using-drmemory
#
# This file contains suppressions for the DrMemory reports happening
# in the 'light' mode (a.k.a. drmemory_light) as well as in the 'full' mode.
# Please use suppressions_full.txt for all the reports that can happen only
# in the full mode (drmemory_full),

############################
# Known reports on the third party we have no control over.

# Reports from Sophos antivirus
UNADDRESSABLE ACCESS
name=Sophos UNADDR
...
sophos*.dll!*

UNINITIALIZED READ
name=Sophos UNINIT
...
sophos*.dll!*

LEAK
name=Sophos LEAK
...
sophos*.dll!*

# Reports from Micorosft RDP ActiveX control (mstscax.dll)

GDI USAGE ERROR
name=crbug.com/177832: mstscax.dll causes "GDI USAGE ERROR" errors.
...
mstscax.dll!*

UNADDRESSABLE ACCESS
name=crbug.com/177832: mstscax.dll causes "UNADDRESSABLE ACCESS" errors.
...
mstscax.dll!*

############################
# Suppress some false reports due to bugs in Dr.Memory like wrong analysis
# assumptions or unhandled syscalls

# Please note: the following suppressions were written in the abscense of
# private symbols so may need to be updated when we switch to auto-loading PDBs

UNADDRESSABLE ACCESS
name=http://code.google.com/p/drmemory/issues/detail?id=12 UNADDR
...
SHELL32.dll!SHFileOperation*

UNADDRESSABLE ACCESS
name=http://code.google.com/p/drmemory/issues/detail?id=40 UNADDR
...
WINSPOOL.DRV!*

INVALID HEAP ARGUMENT
name=http://code.google.com/p/drmemory/issues/detail?id=40 INVALID HEAP
...
WINSPOOL.DRV!*

UNADDRESSABLE ACCESS
name=http://code.google.com/p/drmemory/issues/detail?id=59
...
*!SetEnvironmentVariable*

UNADDRESSABLE ACCESS
name=http://code.google.com/p/drmemory/issues/detail?id=68 (UNADDR 1)
...
MSWSOCK.dll!WSPStartup

UNADDRESSABLE ACCESS
name=http://code.google.com/p/drmemory/issues/detail?id=68 (UNADDR 2)
...
ntdll.dll!RtlValidateUnicodeString

############################
# TODO(timurrrr): investigate these
UNADDRESSABLE ACCESS
name=TODO SHParseDisplayName
...
*!SHParseDisplayName

UNADDRESSABLE ACCESS
name=TODO GetCanonicalPathInfo
...
*!GetCanonicalPathInfo*

UNADDRESSABLE ACCESS
name=TODO CreateDC
...
GDI32.dll!CreateDC*

# This one looks interesting
INVALID HEAP ARGUMENT
name=TODO ExitProcess
...
KERNEL32.dll!ExitProcess

INVALID HEAP ARGUMENT
name=http://crbug.com/103365 (a)
ppapi_tests.dll!*
...
ppapi_tests.dll!*
*!base::internal::RunnableAdapter<*>::Run

INVALID HEAP ARGUMENT
name=http://crbug.com/103365 (b)
ppapi_tests.dll!*
...
ppapi_tests.dll!*
*!PP_RunCompletionCallback
...
*!base::internal::RunnableAdapter<*>::Run

INVALID HEAP ARGUMENT
name=http://crbug.com/107567 intentional mismatch in _DebugHeapDelete, no frame
*!std::numpunct<*>::_Tidy
*!std::numpunct<*>::~numpunct<*>

# TODO(rbultje): Investigate if code fix is required instead.
WARNING
name=http://crbug.com/223255 - prefetches in vp8
instruction=prefetch*
ffmpegsumo.dll!ff_prefetch_mmxext
ffmpegsumo.dll!vp8_decode_mb_row_no_filter

############################
# Intentional errors in Chromium tests (ToolsSanityTests)
LEAK
name=sanity test 01 (memory leak)
base_unittests.exe!operator new
base_unittests.exe!operator new[]
base_unittests.exe!base::ToolsSanityTest_MemoryLeak_Test::TestBody

# "..." is needed due to http://code.google.com/p/drmemory/issues/detail?id=666
UNADDRESSABLE ACCESS
name=sanity test 02 (malloc/read left)
base_unittests.exe!*ReadValueOutOfArrayBoundsLeft
...
base_unittests.exe!base::ToolsSanityTest_AccessesToMallocMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 03 (malloc/read right)
base_unittests.exe!*ReadValueOutOfArrayBoundsRight
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToMallocMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 04 (malloc/write left)
base_unittests.exe!*WriteValueOutOfArrayBoundsLeft
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToMallocMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 05 (malloc/write right)
base_unittests.exe!*WriteValueOutOfArrayBoundsRight
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToMallocMemory_Test::TestBody

# "..." is needed due to http://code.google.com/p/drmemory/issues/detail?id=666
UNADDRESSABLE ACCESS
name=sanity test 06 (new/read left)
base_unittests.exe!*ReadValueOutOfArrayBoundsLeft
...
base_unittests.exe!base::ToolsSanityTest_AccessesToNewMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 07 (new/read right)
base_unittests.exe!*ReadValueOutOfArrayBoundsRight
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToNewMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 08 (new/write left)
base_unittests.exe!*WriteValueOutOfArrayBoundsLeft
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToNewMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 09 (new/write right)
base_unittests.exe!*WriteValueOutOfArrayBoundsRight
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToNewMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 10 (write after free)
base_unittests.exe!base::ToolsSanityTest_AccessesToMallocMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=sanity test 11 (write after delete)
base_unittests.exe!base::ToolsSanityTest_AccessesToNewMemory_Test::TestBody

INVALID HEAP ARGUMENT
name=sanity test 12 (array deleted without [])
base_unittests.exe!base::ToolsSanityTest_ArrayDeletedWithoutBraces_Test::TestBody

INVALID HEAP ARGUMENT
name=sanity test 13 (single element deleted with [])
base_unittests.exe!base::ToolsSanityTest_SingleElementDeletedWithBraces_Test::TestBody

UNINITIALIZED READ
name=sanity test 14 (malloc/read uninit)
base_unittests.exe!*ReadUninitializedValue
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToMallocMemory_Test::TestBody

UNINITIALIZED READ
name=sanity test 15 (new/read uninit)
base_unittests.exe!*ReadUninitializedValue
base_unittests.exe!*MakeSomeErrors
base_unittests.exe!base::ToolsSanityTest_AccessesToNewMemory_Test::TestBody

UNADDRESSABLE ACCESS
name=AboutHandler::AboutCrash deliberate crash
# TODO(bruening): switch to annotation once have support for that
chrome.dll!AboutHandler::AboutCrash

UNADDRESSABLE ACCESS
name=RendererCrashTest.Crash deliberate crash
# function is small, little risk for false negative in rest of it
# TODO(bruening): switch to annotation once have support for that
chrome.dll!HandleRendererErrorTestParameters

UNADDRESSABLE ACCESS
name=NPAPITesterBase.NoHangIfInitCrashes deliberate crash
# function is small, little risk for false negative in rest of it
# TODO(bruening): switch to annotation once have support for that
npapi_test_plugin.dll!NPAPIClient::PluginClient::Initialize

# Deliberate NULL deref to crash the child process
UNADDRESSABLE ACCESS
name=CrashingChildProcess deliberate crash
*!CrashingChildProcess

UNADDRESSABLE ACCESS
name=::Crasher::Run deliberate crash
*!base::`anonymous namespace'::Crasher::Run

############################
# Benign issues in Chromium

WARNING
name=http://crbug.com/72463 - prefetches in generated MemCopy
instruction=prefetch*
<not in a module>
chrome.dll!v8::internal::CopyChars*

WARNING
name=prefetches in NVD3DUM.dll
instruction=prefetch*
NVD3DUM.dll!*

WARNING
name=prefetches in igdumd32.dll
instruction=prefetch*
igdumd32.dll!*

UNADDRESSABLE ACCESS
name=http://code.google.com/p/drmemory/issues/detail?id=582 bizarre cl-generated read-beyond-TOS
instruction=mov    0xfffffffc(%esp) -> %eax
chrome.dll!WebCore::RenderStyle::resetBorder*

INVALID HEAP ARGUMENT
name=http://crbug.com/101537
*!scoped_ptr<_TOKEN_USER>*

INVALID HEAP ARGUMENT
name=http://crbug.com/101717 (1)
*!scoped_ptr<_TOKEN_DEFAULT_DACL>*

INVALID HEAP ARGUMENT
name=http://crbug.com/101717 (2)
*!sandbox::PolicyBase::~PolicyBase

INVALID HEAP ARGUMENT
name=http://crbug.com/101717 (3)
*!scoped_ptr<_UNICODE_STRING>::~scoped_ptr<_UNICODE_STRING>
*!sandbox::GetHandleName

INVALID HEAP ARGUMENT
name=http://crbug.com/101717 (4)
*!scoped_ptr<_OBJECT_NAME_INFORMATION>::~scoped_ptr<_OBJECT_NAME_INFORMATION>
*!sandbox::GetPathFromHandle

GDI USAGE ERROR
name=http://code.google.com/p/drmemory/issues/detail?id=899 deleting bitmap which is probably safe
system call NtGdiDeleteObjectApp
*!skia::`anonymous namespace'::Bitmap::~Bitmap
*!skia::`anonymous namespace'::Bitmap::`scalar deleting destructor'

############################
# Real issues in Chromium

UNADDRESSABLE ACCESS
name=http://crbug.com/88213
*!base::win::ObjectWatcher::StopWatching
*!base::win::ObjectWatcher::WillDestroyCurrentMessageLoop
*!MessageLoop::~MessageLoop

UNADDRESSABLE ACCESS
name=http://crbug.com/96010
*!TestingProfile::FinishInit
*!TestingProfile::TestingProfile
*!BrowserAboutHandlerTest_WillHandleBrowserAboutURL_Test::TestBody

UNADDRESSABLE ACCESS
name=http://crbug.com/106522
npapi_test_plugin.dll!NPAPIClient::PluginTest::id
npapi_test_plugin.dll!NPAPIClient::ExecuteGetJavascriptUrlTest::TimerProc

# Bad GDI teardown sequence.
GDI USAGE ERROR
name=http://crbug.com/109963 a
system call NtGdiDeleteObjectApp
# usually one or two GDI32.dll frames here but sometimes in light mode
# there are zero.  still pretty narrow b/c of frames on either side.
...
*!skia::BitmapPlatformDevice::BitmapPlatformDeviceData::~BitmapPlatformDeviceData

GDI USAGE ERROR
name=http://crbug.com/109963 b
system call NtGdiDeleteObjectApp
# usually one or two GDI32.dll frames here but sometimes in light mode
# there are zero.  still pretty narrow b/c of frames on either side.
...
*!skia::BitmapPlatformDevice::BitmapPlatformDeviceData::ReleaseBitmapDC

GDI USAGE ERROR
name=http://crbug.com/109963 c
system call NtGdiDeleteObjectApp
GDI32.dll!DeleteDC
content.dll!*

GDI USAGE ERROR
name=http://crbug.com/109963 d
system call NtGdiDeleteObjectApp
GDI32.dll!DeleteDC
*!base::internal::RunnableAdapter*

# GDI usage errors in 3rd-party components
GDI USAGE ERROR
name=http://crbug.com/119552 a
system call NtGdiDeleteObjectApp
...
*!OmniboxViewWin::*

GDI USAGE ERROR
name=http://crbug.com/119552 b
system call Nt*
...
*!ATL::*

GDI USAGE ERROR
name=http://crbug.com/119552 c
# optional gdi32.dll frame followed by user32.dll
# TODO(bruening): once have
# http://code.google.com/p/drmemory/issues/detail?id=846
# I would do "gdi32.dll!...\nuser32.dll!*"
*32.dll!*
...
shell32.dll!SHGetFileInfoW
*!IconLoader::ReadIcon

GDI USAGE ERROR
name=http://crbug.com/119552 d
system call NtGdiDeleteObjectApp
gdi32.dll!DeleteObject
riched20.dll!*
riched20.dll!*
riched20.dll!*

GDI USAGE ERROR
name=http://crbug.com/120157
# "ReleaseDC called from different thread than GetDC"
system call NtUserCallOneParam.RELEASEDC
*!*FontCache::CacheElement::~CacheElement

GDI USAGE ERROR
name=http://crbug.com/158090
# "DC created by one thread and used by another"
...
content.dll!content::*::FontCache::PreCacheFont
content.dll!content::FontCacheDispatcher::OnPreCacheFont
content.dll!DispatchToMethod<content::FontCacheDispatcher*

GDI USAGE ERROR
name=http://crbug.com/158090 c#4
# ReleaseDC for DC called from different thread than the thread that called GetDC
system call NtUserCallOneParam.RELEASEDC
ui.dll!gfx::ReadColorProfile
ui.dll!gfx::GetColorProfile
content.dll!content::RenderMessageFilter::OnGetMonitorColorProfile
content.dll!DispatchToMethod*

INVALID HEAP ARGUMENT
name=http://crbug.com/158350
# allocated with operator new[], freed with operator delete
*!*
*!*
*!*
*!*
*!*
content.dll!*
content.dll!*
content.dll!*
content.dll!*
content.dll!*
*!*
*!*
*!*
*!*
*!*
KERNEL32.dll!*
ntdll.dll!*
ntdll.dll!*

WARNING
name=Security test (new oveflow)
MSVCR100D.dll!operator new
*!operator new
*!operator new[]
*!`anonymous namespace'::SecurityTest_NewOverflow_Test::TestBody
*!testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,void>

WARNING
name=Security test (calloc overflow)
*!`anonymous namespace'::CallocReturnsNull
*!`anonymous namespace'::SecurityTest_CallocOverflow_Test::TestBody
*!testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,void>

GDI USAGE ERROR
name=http://crbug.com/234484
# "DC created by one thread and used by another"
...
*!chrome::`anonymous namespace'::SetOverlayIcon

INVALID HEAP ARGUMENT
name=http://crbug.com/262088
drmemorylib.dll!av_dup_packet
msvcrt.dll!wcsrchr
ntdll.dll!RtlIsCurrentThreadAttachExempt
ntdll.dll!LdrShutdownThread
ntdll.dll!RtlExitUserThread
