# There are four kinds of suppressions in this file.
# 1. third party stuff we have no control over
#
# 2. intentional unit test errors, or stuff that is somehow a false positive
# in our own code, or stuff that is so trivial it's not worth fixing
#
# 3. Suppressions for real chromium bugs that are not yet fixed.
# These should all be in chromium's bug tracking system (but a few aren't yet).
# Periodically we should sweep this file and the bug tracker clean by
# running overnight and removing outdated bugs/suppressions.
#-----------------------------------------------------------------------

# 1. third party stuff we have no control over
{
   Uninitialized value in deflate (Third Party)
   Memcheck:Uninitialized
   ...
   fun:MOZ_Z_deflate
}
{
   #gtk developers don't like cleaning up one-time leaks.  See http://mail.gnome.org/archives/gtk-devel-list/2004-April/msg00230.html
   gtk_init_check leak (Third Party)
   Memcheck:Leak
   ...
   fun:gtk_init_check
}
{
   Fontconfig leak?
   Memcheck:Leak
   ...
   fun:XML_ParseBuffer
   fun:FcConfigParseAndLoad
}
{
   bug_9245_FcConfigAppFontAddFile_leak
   Memcheck:Leak
   ...
   fun:FcConfigAppFontAddFile
}
{
   pango_font_leak_todo_3
   Memcheck:Leak
   ...
   fun:FcFontRenderPrepare
   ...
   fun:pango_itemize_with_base_dir
}
{
   pango_font_leak_todo_4
   Memcheck:Leak
   ...
   fun:FcFontRenderPrepare
   ...
   fun:pango_ot_buffer_output
}
{
   pango_font_leak_todo_5
   Memcheck:Leak
   ...
   fun:FcFontRenderPrepare
   ...
   fun:pango_context_get_metrics
}
{
   pango_font_leak_todo_6
   Memcheck:Leak
   ...
   fun:FcDefaultSubstitute
   ...
   fun:pango_itemize_with_base_dir
}
{
   # Similar to fontconfig_bug_8428 below. Reported in
   # https://bugs.freedesktop.org/show_bug.cgi?id=8215
   fontconfig_bug_8215
   Memcheck:Leak
   fun:malloc
   fun:FcPatternObjectInsertElt
   fun:FcPatternObjectAddWithBinding
}
{
   # Fontconfig leak, seen in shard 16 of 20 of ui_tests
   # See https://bugs.freedesktop.org/show_bug.cgi?id=8428
   # and http://www.gnome.org/~johan/gtk.suppression
   fontconfig_bug_8428
   Memcheck:Leak
   ...
   fun:realloc
   fun:FcPatternObjectInsertElt
   fun:FcPatternObjectAddWithBinding
}
{
   bug_18590 (Third Party)
   Memcheck:Leak
   ...
   fun:malloc
   fun:FcConfigValues
   fun:FcConfigValues
   ...
   fun:FcConfigValues
   fun:FcConfigValues
}
{
   dlopen leak on error. Chromium issues 268368,273385. See http://sourceware.org/bugzilla/show_bug.cgi?id=12878.
   Memcheck:Leak
   fun:calloc
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}
{
   bug_58730_libc.so_value8 (Third Party)
   Memcheck:Uninitialized
   obj:/lib/libc-2.11.1.so
}
# net::SniffXML() clearly tries to read < 8 bytes, but strncasecmp() reads 8.
{
   bug_58730_strncasecmp_uninit (Third Party)
   Memcheck:Uninitialized
   ...
   fun:strncasecmp
   fun:_ZN4base11strncasecmpEPKcS1_m
   fun:_ZN3netL8SniffXMLEPKcmPbPSs
}
{
   bug_76386a (Third Party)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNSs4_Rep9_S_createE*RKSaIcE
   ...
   fun:_ZNSsC1*KS*
}
{
   bug_76386b (Third Party)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNSs4_Rep9_S_createE*RKSaIcE
   fun:_ZNSs4_Rep8_M_cloneERKSaIcE*
}
{
   getpwuid_and_getgrouplist
   Memcheck:Leak
   fun:malloc
   fun:nss_parse_service_list
   fun:__nss_database_lookup
   obj:*
   ...
   fun:get*
}

# XRandRInfo object seems to be leaking inside XRRFindDisplay.  This happens the
# first time it is called, no matter who the caller is.  We have observed this
# problem with both XRRSelectInput and XRRQueryExtension.
{
   bug_119677
   Memcheck:Leak
   fun:malloc
   fun:XRRFindDisplay
}
{
   Ubuntu_Precise_Fontconfig_Optimized_Code
   Memcheck:Unaddressable
   fun:FcConfigFileExists
}
{
   Ubuntu_Precise_Itoa_Optimized_Code
   Memcheck:Uninitialized
   fun:_itoa_word
   fun:vfprintf
   fun:__vsnprintf_chk
   fun:__snprintf_chk
}
{
   Ubuntu_Precise_Wcscmp_Optimized_Code_In_Tests
   Memcheck:Uninitialized
   fun:wcscmp
   fun:_ZN7testing8internal6String17WideCStringEqualsEPKwS3_
}
{
   mesa_glsl_compile_shader
   Memcheck:Leak
   ...
   fun:_mesa_glsl_compile_shader
   fun:compile_shader
   fun:_mesa_CompileShaderARB
   fun:shared_dispatch_stub_529
}

#-----------------------------------------------------------------------
# 2. intentional unit test errors, or stuff that is somehow a false positive
# in our own code, or stuff that is so trivial it's not worth fixing

# See tools/valgrind/memcheck_analyze.py before modifying sanity tests.
{
   Memcheck sanity test 01 (memory leak).
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN4base31ToolsSanityTest_MemoryLeak_Test8TestBodyEv
}
{
   Memcheck sanity test 02 (malloc/read left).
   Memcheck:Unaddressable
   fun:*ReadValueOutOfArrayBoundsLeft*
   ...
   fun:_ZN4base43ToolsSanityTest_AccessesToMallocMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 03 (malloc/read right).
   Memcheck:Unaddressable
   fun:*ReadValueOutOfArrayBoundsRight*
   ...
   fun:_ZN4base43ToolsSanityTest_AccessesToMallocMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 04 (malloc/write left).
   Memcheck:Unaddressable
   fun:*WriteValueOutOfArrayBoundsLeft*
   ...
   fun:_ZN4base43ToolsSanityTest_AccessesToMallocMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 05 (malloc/write right).
   Memcheck:Unaddressable
   fun:*WriteValueOutOfArrayBoundsRight*
   ...
   fun:_ZN4base43ToolsSanityTest_AccessesToMallocMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 06 (new/read left).
   Memcheck:Unaddressable
   fun:*ReadValueOutOfArrayBoundsLeft*
   ...
   fun:_ZN4base40ToolsSanityTest_AccessesToNewMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 07 (new/read right).
   Memcheck:Unaddressable
   fun:*ReadValueOutOfArrayBoundsRight*
   ...
   fun:_ZN4base40ToolsSanityTest_AccessesToNewMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 08 (new/write left).
   Memcheck:Unaddressable
   fun:*WriteValueOutOfArrayBoundsLeft*
   ...
   fun:_ZN4base40ToolsSanityTest_AccessesToNewMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 09 (new/write right).
   Memcheck:Unaddressable
   fun:*WriteValueOutOfArrayBoundsRight*
   ...
   fun:_ZN4base40ToolsSanityTest_AccessesToNewMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 10 (write after free).
   Memcheck:Unaddressable
   fun:_ZN4base43ToolsSanityTest_AccessesToMallocMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 11 (write after delete).
   Memcheck:Unaddressable
   fun:_ZN4base40ToolsSanityTest_AccessesToNewMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 12 (array deleted without []).
   Memcheck:Free
   ...
   fun:_ZN4base46ToolsSanityTest_ArrayDeletedWithoutBraces_Test8TestBodyEv
}
{
   Memcheck sanity test 13 (single element deleted with []).
   Memcheck:Free
   ...
   fun:_ZN4base51ToolsSanityTest_SingleElementDeletedWithBraces_Test8TestBodyEv
}
{
   Memcheck sanity test 14 (malloc/read uninit).
   Memcheck:Uninitialized
   fun:*ReadUninitializedValue*
   ...
   fun:_ZN4base43ToolsSanityTest_AccessesToMallocMemory_Test8TestBodyEv
}
{
   Memcheck sanity test 15 (new/read uninit).
   Memcheck:Uninitialized
   fun:*ReadUninitializedValue*
   ...
   fun:_ZN4base40ToolsSanityTest_AccessesToNewMemory_Test8TestBodyEv
}
{
   bug_86301 This test explicitly verifies PostTaskAndReply leaks the task if the originating MessageLoop has been deleted.
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN4base12_GLOBAL__N_169MessageLoopProxyTest_PostTaskAndReply_DeadReplyLoopDoesNotDelete_Test8TestBodyEv
}
{
   # Non-joinable thread doesn't clean up all state on program exit
   # very common in ui tests
   bug_16096 (WontFix)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNSs4_Rep9_S_createE*RKSaIcE
   fun:_ZNSs4_Rep8_M_cloneERKSaIcE*
   fun:_ZNSs7reserveE*
   fun:_ZNSs6appendEPKc*
   fun:*StringAppendV*
   ...
   fun:_ZN4base12StringPrintfEPKcz
}
{
   # According to dglazkov, these are one-time leaks and intentional.
   # They may go away if the change to move these off the heap lands.
   bug_17996 (Intentional)
   Memcheck:Leak
   ...
   fun:_ZN5blink8SVGNames4initEv
}
{
   # This is an on demand initialization which is done and then intentionally
   # kept around (not freed) while the process is running.
   intentional_blink_XMLNames_init_leak
   Memcheck:Leak
   ...
   fun:_ZN5blink8XMLNames4initEv
}
{
   # Intentionally leaking NSS to prevent shutdown crashes
   bug_61585a (Intentional)
   Memcheck:Leak
   fun:calloc
   ...
   fun:error_get_my_stack
}
{
   FileStream::Context can leak through WorkerPool by design
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net10FileStreamC1EPNS_6NetLogE
}
{
   # Histograms are used on un-joined threads, and can't be deleted atexit.
   Histograms via FactoryGet including Linear Custom Boolean and Basic
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base*Histogram10FactoryGet*
}
{
   Intentional leak for SampleMap (stores SparseHistogram counts).
   Memcheck:Leak
   ...
   fun:_ZN4base9SampleMap10AccumulateEii
   fun:_ZN4base15SparseHistogram3AddEi
}
{
   bug_73299 (Intentional)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content17WorkerProcessHost20CreateMessageFiltersEi
   fun:_ZN7content17WorkerProcessHost4InitE*
   fun:_ZN7content17WorkerServiceImpl24CreateWorkerFromInstanceENS_17WorkerProcessHost14WorkerInstanceE
   fun:_ZN7content17WorkerServiceImpl12CreateWorkerE*
   fun:_ZN7content19WorkerMessageFilter14OnCreateWorkerERK31ViewHostMsg_CreateWorker_ParamsPi
}
{
   bug_83345 (Needs_Annotation)
   Memcheck:Leak
   ...
   fun:_ZN4base*23LeakyLazyInstanceTraits*NewEPv
   fun:_ZN4base12LazyInstance*LeakyLazyInstanceTraits*PointerEv
}
{
   bug_87500_a (Intentional)
   Memcheck:Leak
   ...
   fun:_ZN10disk_cache9BackendIO23ExecuteBackendOperationEv
   fun:_ZN10disk_cache9BackendIO16ExecuteOperationEv
}
{
   bug_79322 (Intentional)
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base*StatisticsRecorderTest_*_Test8TestBodyEv
}
{
   # According to dglazkov, UA style sheets are intentionally leaked.
   # As such, treat any leaks originating from parseUASheet as intentional.
   bug_121729 (Intentional)
   Memcheck:Leak
   ...
   fun:_ZN5blinkL12parseUASheetEPKcj
}
{
   bug_121729_b (Intentional)
   Memcheck:Leak
   ...
   fun:_ZN5blinkL12parseUASheetERKN3WTF6StringE
}
{
   intentional_see_bug_156466
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3ash5ShellC1EPNS_13ShellDelegateE
   fun:_ZN3ash5Shell14CreateInstanceEPNS_13ShellDelegateE
}

# http://crbug.com/269278 causes really widespread, flaky leaks in
# value objects that own some memory.  These suppressions will cover
# all such objects, even though it's possible to get real leaks that
# look the same way (e.g. by allocating such an object in an arena).
{
   bug_269278a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4Bind*Callback*BindState*
}
{
   bug_269278b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocator*allocate*
   fun:_ZNSt12_Vector_base*_M_allocate*
}

# Externally allocated objects referenced by V8 objects can currently
# be diagnosed as (false) leaks, since memcheck does not know how to
# handle V8 leaks. More detailed discussion in http://crbug.com/328552
{
   bug_328552
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10StringImpl19createUninitializedEjRPh
}
{
   bug_383956
   Memcheck:Leak
   fun:calloc
   fun:_ZN18hb_object_header_t6createEj
   fun:_Z*hb_object_createI9hb_face_tEPT_v
   fun:hb_face_create_for_tables
   fun:_ZN3gfx12_GLOBAL__N_118CreateHarfBuzzFaceEP10SkTypeface
   fun:_ZN3gfx12_GLOBAL__N_118CreateHarfBuzzFontEP10SkTypefacei
   fun:_ZN3gfx18RenderTextHarfBuzz8ShapeRunEPNS_8internal15TextRunHarfBuzzE
   fun:_ZN3gfx18RenderTextHarfBuzz12EnsureLayoutEv
}

{
  bug_391510
  Memcheck:Leak
  fun:_Znw*
  fun:_ZN4base21CancelableTaskTracker16NewTrackedTaskId*
  fun:_ZN14HistoryService14ScheduleDBTask*
  fun:_ZN7history19URLIndexPrivateData26ScheduleUpdateRecentVisits*
}
{
   bug_399852_a
   Memcheck:Uninitialized
   fun:_ZN5blink14DateComponents9parseTimeERKN3WTF6StringEjRj
   fun:_ZNK5blink13TimeInputType29parseToDateComponentsInternalERKN3WTF6StringEPNS_14DateComponentsE
   fun:_ZNK5blink24BaseDateAndTimeInputType21parseToDateComponentsERKN3WTF6StringEPNS_14DateComponentsE
}
{
   bug_399852_b
   Memcheck:Uninitialized
   fun:_ZN5blink12_GLOBAL__N_117parseJSONInternalIhEEN3WTF10PassRefPtrINS_9JSONValueEEEPKT_j
   fun:_ZN5blink9parseJSONERKN3WTF6StringE
   fun:_ZN5blink*InspectorBackendDispatcher*
   ...
   fun:_ZN5blink*WebDevToolsAgent*
   fun:_ZN7content*DevToolsAgent*
}
{
   bug_399852_c
   Memcheck:Uninitialized
   fun:_ZN5blinkL21extractRangeComponentEPN3WTF6StringERKNS0_6RefPtrINS_10JSONObjectEEERKS1_Rj
   fun:_ZN5blinkL22jsonRangeToSourceRangeEPN3WTF6StringEPNS_23InspectorStyleSheetBase*
   fun:_ZN5blink17InspectorCSSAgent*
   fun:_ZThn40_N5blink17InspectorCSSAgent*
   fun:_ZN5blink30InspectorBackendDispatcherImpl*
   fun:_ZN5blink30InspectorBackendDispatcherImpl8dispatchERKN3WTF6StringE
   fun:_ZN5blink19InspectorController27dispatchMessageFromFrontendERKN3WTF6StringE
   fun:_ZN5blink20WebDevToolsAgentImpl26dispatchOnInspectorBackendERKNS_9WebStringE
   fun:_ZN7content13DevToolsAgent28OnDispatchOnInspectorBackendERKSs
}
{
   bug_399852_d
   Memcheck:Uninitialized
   fun:_ZN5blink14DateComponents10parseMonthERKN3WTF6StringEjRj
   ...
   fun:_ZNK5blink24BaseDateAndTimeInputType21parseToDateComponentsERKN3WTF6StringEPNS_14DateComponentsE
   fun:_ZNK5blink24BaseDateAndTimeInputType15typeMismatchForERKN3WTF6StringE
   fun:_ZNK5blink24BaseDateAndTimeInputType13sanitizeValueERKN3WTF6StringE
}
{
   bug_418234
   Memcheck:Uninitialized
   fun:_ZN10extensions19ExtensionManagement7RefreshEv
   fun:_ZN10extensions19ExtensionManagement22OnExtensionPrefChangedEv
}

#-----------------------------------------------------------------------
# 3. Suppressions for real chromium bugs that are not yet fixed.
# These should all be in chromium's bug tracking system (but a few aren't yet).

{
   # webkit leak?  See http://crbug.com/9503
   bug_9503
   Memcheck:Leak
   ...
   fun:_ZN19TestWebViewDelegate24UpdateSelectionClipboardEb
}
{
   # very common in ui tests
   bug_16091
   Memcheck:Leak
   ...
   fun:_ZN4base11MessageLoop22AddDestructionObserverEPNS0_19DestructionObserverE
   ...
   fun:_ZN3IPC11SyncChannel11SyncContext15OnChannelOpenedEv
}
{
   # very common in ui tests
   bug_16092
   Memcheck:Leak
   fun:*
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
   fun:_ZN4base6Thread10ThreadMainEv
}
{
   # very common in ui tests
   bug_16092b
   Memcheck:Leak
   ...
   fun:_ZNSt11_Deque_baseIN4base11PendingTaskESaIS1_EE17_M_initialize_mapE*
   ...
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
}
{
   # very common in ui tests
   bug_16092c
   Memcheck:Leak
   ...
   fun:_ZNSt14priority_queueIN11MessageLoop11PendingTaskESt6vectorIS1_SaIS1_EESt4lessIS1_EEC1ERKS6_RKS4_
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
   fun:_ZN4base6Thread10ThreadMainEv
}
{
   # also bug 17979.  It's a nest of leaks.
   bug_17385
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC12ChannelProxy7Context13CreateChannel*Channel4ModeE
   fun:_ZN3IPC12ChannelProxy4Init*
   ...
   fun:_ZN3IPC11SyncChannel*Channel4Mode*Listener*
}
{
   bug_17540
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base19MessagePumpLibevent19WatchFileDescriptor*FileDescriptorWatcherEPNS0_7WatcherE
   fun:_ZN4base16MessageLoopForIO19WatchFileDescriptor*MessagePumpLibevent21FileDescriptorWatcherEPNS2_7WatcherE
   ...
   fun:_ZN3IPC*Channel*ConnectEv
   fun:_ZN3IPC12ChannelProxy7Context15OnChannelOpenedEv
}
{
   # slight variant of the above
   bug_19371a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base13WaitableEvent7EnqueueEPNS0_6WaiterE
   fun:_ZN4base13WaitableEvent9TimedWaitERKNS_9TimeDeltaE
   fun:_ZN4base18MessagePumpDefault3RunEPNS_11MessagePump8DelegateE
}
{
   bug_19775_a
   Memcheck:Leak
   ...
   fun:malloc
   fun:sqlite3MemMalloc
   fun:mallocWithAlarm
   fun:sqlite3Malloc
   ...
   fun:sqlite3VdbeExec
   fun:sqlite3Step
   fun:sqlite3_step
   fun:sqlite3_exec
   fun:_ZN3sql10Connection7Execute*
   ...
   fun:_ZN7history*Database*Create*
}
{
   bug_19775_c
   Memcheck:Leak
   ...
   fun:openDatabase
   fun:sqlite3_open
   fun:_ZN3sql10Connection12OpenInternalERKSs
}
{
   bug_19775_g
   Memcheck:Leak
   fun:malloc
   fun:sqlite3MemMalloc
   fun:mallocWithAlarm
   fun:sqlite3Malloc
   fun:sqlite3ParserAlloc
   fun:sqlite3RunParser
   fun:sqlite3Prepare
   fun:sqlite3LockAndPrepare
   fun:sqlite3_prepare*
}
{
   bug_19775_h
   Memcheck:Leak
   ...
   fun:malloc
   fun:sqlite3MemMalloc
   fun:mallocWithAlarm
   fun:sqlite3Malloc
   ...
   fun:yy_reduce
}
# The following three suppressions are related to the workers code.
{
   bug_27837
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19WebSharedWorkerStub9OnConnectEii
}
{
   bug_32085
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIN7content21NotificationRegistrar6RecordEE8allocate*
   fun:_ZNSt12_Vector_baseIN7content21NotificationRegistrar6RecordESaIS*
   fun:_ZNSt6vectorIN7content21NotificationRegistrar6RecordESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S*
   fun:_ZNSt6vectorIN7content21NotificationRegistrar6RecordESaIS*
   fun:_ZN7content21NotificationRegistrar3Add*
}
{
   bug_32273_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC12ChannelProxy4SendEPNS_7MessageE
   fun:_ZN3IPC11SyncChannel15SendWithTimeoutEPNS_7MessageEi
   fun:_ZN3IPC11SyncChannel4SendEPNS_7MessageE
   fun:_ZN11ChildThread4SendEPN3IPC7MessageE
   fun:_ZN12RenderThread4SendEPN3IPC7MessageE
   fun:_ZN12RenderWidget4SendEPN3IPC7MessageE
   fun:_ZN12RenderWidget16DoDeferredUpdateEv
   fun:_ZN12RenderWidget20CallDoDeferredUpdateEv
}
{
   bug_32273_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN24BrowserRenderProcessHost4SendEPN3IPC7MessageE
   fun:_ZN16RenderWidgetHost4SendEPN3IPC7MessageE
}
{
   bug_32624_b
   Memcheck:Leak
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:secmod_ModuleInit
}
{
   bug_32624_c
   Memcheck:Leak
   ...
   fun:malloc
   ...
   fun:PORT_Alloc_Util
   ...
   fun:PK11_InitPin
}
{
   bug_32624_f
   Memcheck:Leak
   ...
   fun:CERT_PKIXVerifyCert
   fun:_ZN3net12_GLOBAL__N_114PKIXVerifyCertE*
}
{
   bug_32624_g
   Memcheck:Leak
   ...
   fun:CERT_VerifySignedData
   fun:cert_VerifyCertChain
   fun:CERT_VerifyCertChain
   fun:CERT_VerifyCert
}
{
   bug_42842
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19TestWebViewDelegate12createWorkerEPN5blink8WebFrameEPNS0_15WebWorkerClientE
   fun:_ZN5blink19WebWorkerClientImpl24createWorkerContextProxyEPN7blink6WorkerE
   fun:_ZN5blink18WorkerContextProxy6createEPNS_6WorkerE
   fun:_ZN5blink6WorkerC1EPNS_22ScriptExecutionContextE
   fun:_ZN5blink6Worker6createERKN3WTF6StringEPNS_22ScriptExecutionContextERi
   fun:_ZN5blink8V8Worker19constructorCallbackERKN2v89ArgumentsE
}
{
   bug_42942_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3sql10Connection18GetCachedStatementERKNS_11StatementIDEPKc
   fun:_ZN3sql9MetaTable19PrepareGetStatementEPNS_9StatementEPKc
   fun:_ZN3sql9MetaTable8GetValueEPKcPi
   fun:_ZN3sql9MetaTable26GetCompatibleVersionNumberEv
   ...
   fun:_ZN3net13CookieMonster9InitStoreEv
}
{
   bug_42942_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3sql10Connection18GetCachedStatementERKNS_11StatementIDEPKc
   fun:_ZN3sql9MetaTable19PrepareSetStatementEPNS_9StatementEPKc
   fun:_ZN3sql9MetaTable8SetValueEPKci
   fun:_ZN3sql9MetaTable16SetVersionNumberEi
   ...
   fun:_ZN3net13CookieMonster9InitStoreEv
}
{
   bug_64887_a
   Memcheck:Uninitialized
   ...
   fun:*vfprintf
   ...
   fun:_ZN7testing*PrintByteSegmentInObjectTo*
   ...
   fun:_ZN7testing*PrintBytesInObjectTo*
   fun:_ZN7testing9internal220PrintBytesInObjectToEPKh*
   fun:_ZN7testing9internal220TypeWithoutFormatter*
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcE*
}
{
   bug_64887_b
   Memcheck:Uninitialized
   ...
   fun:_ZNSolsEx
   fun:_ZN7testing9internal220TypeWithoutFormatterIN5media7PreloadELNS0_8TypeKindE1EE10PrintValueERKS3_PSo
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcEN5media7PreloadEEERSt13basic_ostreamIT_T0_ESA_RKT1_
   fun:_ZN16testing_internal26DefaultPrintNonContainerToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal14DefaultPrintToIN5media7PreloadEEEvcNS0_13bool_constantILb0EEERKT_PSo
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal16UniversalPrinterIN5media7PreloadEE5PrintERKS3_PSo
   fun:_ZN7testing8internal18TuplePrefixPrinter*
   fun:_ZN7testing8internal12PrintTupleToINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKNSt3tr15tupleIT*
   fun:_ZN7testing8internal16UniversalPrinterINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal14UniversalPrintINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZNK7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE32UntypedDescribeUninterestingCallEPKvPSo
   fun:_ZN7testing8internal25UntypedFunctionMockerBase17UntypedInvokeWithEPKv
   fun:_ZN7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE10InvokeWithERKNSt3tr15tupleIS3*
   fun:_ZN7testing8internal14FunctionMockerIFvN5media7PreloadEEE6InvokeES3_
   fun:_ZN5media11MockDemuxer10SetPreloadENS_7PreloadE
}
{
   bug_64887_c
   Memcheck:Uninitialized
   ...
   fun:_ZNSolsEx
   fun:_ZN7testing9internal220TypeWithoutFormatterIN5media7PreloadELNS0_8TypeKindE1EE10PrintValueERKS3_PSo
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcEN5media7PreloadEEERSt13basic_ostreamIT_T0_ESA_RKT1_
   fun:_ZN16testing_internal26DefaultPrintNonContainerToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal14DefaultPrintToIN5media7PreloadEEEvcNS0_13bool_constantILb0EEERKT_PSo
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal16UniversalPrinterIN5media7PreloadEE5PrintERKS3_PSo
   fun:_ZN7testing8internal18TuplePrefixPrinter*
   fun:_ZN7testing8internal12PrintTupleToINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKNSt3tr15tupleIT*
   fun:_ZN7testing8internal16UniversalPrinterINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal14UniversalPrintINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZNK7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE32UntypedDescribeUninterestingCallEPKvPSo
   fun:_ZN7testing8internal25UntypedFunctionMockerBase17UntypedInvokeWithEPKv
   fun:_ZN7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE10InvokeWithERKNSt3tr15tupleIS3*
   fun:_ZN7testing8internal14FunctionMockerIFvN5media7PreloadEEE6InvokeES3_
   fun:_ZN5media11MockDemuxer10SetPreloadENS_7PreloadE
}
{
   bug_65940_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC12ChannelProxy7Context13CreateChannelERKNS_13ChannelHandleERKNS_7Channel4ModeE
   fun:_ZN3IPC12ChannelProxy4InitERKNS_13ChannelHandleENS_7Channel4ModeEP11MessageLoopb
   fun:_ZN3IPC12ChannelProxyC2ERKNS_13ChannelHandleENS_7Channel4ModeEP11MessageLoopPNS0_7ContextEb
   fun:_ZN3IPC11SyncChannelC1ERKNS_13ChannelHandleENS_7Channel4ModeEPNS4_8ListenerEP11MessageLoopbPN4base13WaitableEventE
}
{
   bug_65940_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC11SyncChannelC1ERKNS_13ChannelHandleENS_7Channel4ModeEPNS_8ListenerEPN4base22SingleThreadTaskRunnerEbPNS8_13WaitableEventE
   fun:_ZN7content11ChildThread4InitEv
   fun:_ZN7content11ChildThreadC2ERKSs
}
{
   bug_65940_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEEE8allocateEmPKv
   fun:_ZNSt12_Vector_baseI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEESaIS4_EE11_M_allocateEm
   fun:_ZNSt6vectorI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_
   fun:_ZNSt6vectorI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEESaIS4_EE9push_backERKS4_
   fun:_ZN3IPC12ChannelProxy7Context11OnAddFilterEv
}
{
   bug_65940_d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content11ChildThread4InitEv
   fun:_ZN7content11ChildThreadC*
   ...
   fun:_ZN7content21WebRTCAudioDeviceTest5SetUpEv
}
{
   bug_65940_e
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content16RenderThreadImpl4InitEv
   fun:_ZN7content16RenderThreadImplC*
   ...
   fun:_ZN7content21WebRTCAudioDeviceTest5SetUpEv
}
{
   bug_66853_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11ProfileImpl14GetHostZoomMapEv
   ...
   fun:_ZNK17ProfileImplIOData6Handle27GetMainRequestContextGetterEv
   fun:_ZN11ProfileImpl17GetRequestContextEv
   fun:_ZN19SafeBrowsingService5StartEv
   fun:_ZN19SafeBrowsingService10InitializeEv
   fun:_ZN22ResourceDispatcherHost10InitializeEv
   fun:_ZN18BrowserProcessImpl28CreateResourceDispatcherHostEv
   fun:_ZN18BrowserProcessImpl24resource_dispatcher_hostEv
   fun:_ZN16ExtensionService4InitEv
   fun:_ZN11ProfileImpl14InitExtensionsE*
   fun:_ZN14ProfileManager10AddProfileEP7Profileb
}
{
   bug_67142
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN16ChildProcessHost13CreateChannelEv
   fun:_ZN14GpuProcessHost4InitEv
}
{
   bug_67261
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3sql10Connection18GetUniqueStatementEPKc
   fun:_ZN3sql10Connection18GetCachedStatementERKNS_11StatementIDEPKc
   fun:_ZN8appcache16AppCacheDatabase22PrepareCachedStatementERKN3sql11StatementIDEPKcPNS1_9StatementE
}
{
   bug_67553
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNSt3mapISs13scoped_refptrIK9ExtensionESt4lessISsESaISt4pairIKSsS3_EEEixERS7_
   fun:_ZN16ExtensionInfoMap12AddExtensionEPK9Extension
}
{
   bug_68553
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net25DiskCacheBasedSSLHostInfoC1ERKSsRKNS_9SSLConfigEPNS_12CertVerifierEPNS_9HttpCacheE
   fun:_ZN3net9HttpCache25SSLHostInfoFactoryAdaptor10GetForHostERKSsRKNS_9SSLConfigE
   fun:_ZN3net13SSLConnectJob12DoTCPConnectEv
   fun:_ZN3net13SSLConnectJob6DoLoopEi
   fun:_ZN3net13SSLConnectJob15ConnectInternalEv
   fun:_ZN3net10ConnectJob7ConnectEv
   fun:_ZN3net8internal26ClientSocketPoolBaseHelper21RequestSocketInternalERKSsPKNS1_7RequestE
   fun:_ZN3net8internal26ClientSocketPoolBaseHelper13RequestSocketERKSsPKNS1_7RequestE
   fun:_ZN3net20ClientSocketPoolBaseINS_15SSLSocketParamsEE13RequestSocketERKSsRK13scoped_refptrIS1_ENS_15RequestPriorityEPNS_18ClientSocketHandleEP14CallbackRunnerI6Tuple1IiEERKNS_11BoundNetLogE
   fun:_ZN3net19SSLClientSocketPool13RequestSocketERKSsPKvNS_15RequestPriorityEPNS_18ClientSocketHandleEP14CallbackRunnerI6Tuple1IiEERKNS_11BoundNetLogE
   fun:_ZN3net18ClientSocketHandle4InitINS_15SSLSocketParamsENS_19SSLClientSocketPoolEEEiRKSsRK13scoped_refptrIT_ENS_15RequestPriorityEP14CallbackRunnerI6Tuple1IiEEPT0_RKNS_11BoundNetLogE
}
{
   Bug_69934_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN*NPObjectProxy10NPAllocateEP4_NPPP7NPClass
   fun:_NPN_CreateObject
   fun:_ZN5blink11WebBindings12createObjectEP4_NPPP7NPClass
}
{
   Bug_69934_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC11SyncMessage13GenerateReplyEPKNS_7MessageE
   fun:_ZN3IPC17SyncMessageSchema*
}
{
   bug_71728
   Memcheck:Leak
   fun:_Znw*
   fun:*DownloadFileTest5SetUpEv
}
{
   bug_72544
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF10RefCountedIN7blink14StyleSheetListEEnwEj
   fun:_ZN5blink14StyleSheetList6createEPNS_8DocumentE
   fun:_ZN5blink8DocumentC2EPNS_5FrameERKNS_4KURLEbbS5_
   fun:_ZN5blink12HTMLDocumentC1EPNS_5FrameERKNS_4KURLES5_
   fun:_ZN5blink12HTMLDocument6createEPNS_5FrameERKNS_4KURLES5_
   fun:_ZN5blink17DOMImplementation14createDocumentERKN3WTF6StringEPNS_5FrameERKNS_4KURLEb
   fun:_ZN5blink14DocumentWriter14createDocumentERKNS_4KURLE
   fun:_ZN5blink14DocumentWriter5beginERKNS_4KURLEbPNS_14SecurityOriginE
   fun:_ZN5blink11FrameLoader4initEv
   fun:_ZN5blink5Frame4initEv
   fun:_ZN5blink12WebFrameImpl21initializeAsMainFrameEPNS_11WebViewImplE
   fun:_ZN5blink11WebViewImpl19initializeMainFrameEPNS_14WebFrameClientE
   fun:_ZN10RenderViewC1EP16RenderThreadBaseiiRK19RendererPreferencesRK14WebPreferencesPN4base14RefCountedDataIiEEixRKSbItNS8_20string16_char_traitsESaItEE
   fun:_ZN10RenderView6CreateEP16RenderThreadBaseiiRK19RendererPreferencesRK14WebPreferencesPN4base14RefCountedDataIiEEixRKSbItNS8_20string16_char_traitsESaItEE
   fun:_ZN12RenderThread15OnCreateNewViewERK18ViewMsg_New_Params
}
{
   bug_72698_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN13ProfileIOData20InitializeOnUIThreadEP7Profile
}
{
   bug_73415
   Memcheck:Unaddressable
   fun:_ZN23AccessibilityController36shouldDumpAccessibilityNotificationsEv
   fun:_ZN11WebViewHost29postAccessibilityNotificationERKN5blink22WebAccessibilityObjectENS0_28WebAccessibilityNotificationE
   fun:_ZN5blink16ChromeClientImpl29postAccessibilityNotificationEPN7blink19AccessibilityObjectENS1_13AXObjectCache14AXNotificationE
   fun:_ZN5blink13AXObjectCache24postPlatformNotificationEPNS_19AccessibilityObjectENS0_14AXNotificationE
}
{
   bug_73675
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN20LayoutTestController13waitUntilDoneERKN3WTF6VectorI10CppVariantLj0EEEPS2_
   fun:_ZN13CppBoundClass14MemberCallbackI20LayoutTestControllerE3runERKN3WTF6VectorI10CppVariantLj0EEEPS5_
   fun:_ZN13CppBoundClass6invokeEPvPK10_NPVariantjPS1_
   fun:_ZN11CppNPObject6invokeEP8NPObjectPvPK10_NPVariantjPS3_
   fun:_ZN5blink18npObjectInvokeImplERKN2v89ArgumentsENS_18InvokeFunctionTypeE
   fun:_ZN5blink21npObjectMethodHandlerERKN2v89ArgumentsE
   fun:_ZN2v88internal19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_47_GLOBAL__N_v8_src_builtins.cc_*BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEE
   obj:*
}
{
   bug_75019
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN14GpuDataManagerC1Ev
   fun:_ZN22DefaultSingletonTraitsI14GpuDataManagerE3NewEv
   fun:_ZN9SingletonI14GpuDataManager22DefaultSingletonTraitsIS0_ES0_E3getEv
   fun:_ZN14GpuDataManager11GetInstanceEv
   fun:_Z11BrowserMainRK18MainFunctionParams
   fun:_ZN20InProcessBrowserTest5SetUpEv
}
{
   bug_76197a
   Memcheck:Unaddressable
   fun:sqlite3DbFree
   fun:releaseMemArray
   fun:sqlite3VdbeDelete
   fun:sqlite3VdbeFinalize
   fun:sqlite3_finalize
   fun:_ZN3sql10Connection12StatementRef5CloseEv
   fun:_ZN3sql10Connection12StatementRefD2Ev
   fun:_ZN3sql10Connection12StatementRefD1Ev
   fun:_ZNK4base10RefCountedIN3sql10Connection12StatementRefEE7ReleaseEv
   fun:_ZN13scoped_refptrIN3sql10Connection12StatementRefEED2Ev
   fun:_ZN13scoped_refptrIN3sql10Connection12StatementRefEED1Ev
   fun:_ZNSt4pairIKN3sql11StatementIDE13scoped_refptrINS0_10Connection12StatementRefEEED2Ev
   fun:_ZNSt4pairIKN3sql11StatementIDE13scoped_refptrINS0_10Connection12StatementRefEEED1Ev
   fun:_ZN9__gnu_cxx13new_allocatorISt4pairIKN3sql11StatementIDE13scoped_refptrINS2_10Connection12StatementRefEEEE7destroyEPS9_
   fun:_ZNSt8_Rb_treeIN3sql11StatementIDESt4pairIKS1_13scoped_refptrINS0_10Connection12StatementRefEEESt10_Select1stIS8_ESt4lessIS1_ESaIS8_EE12destroy_nodeEPSt13_Rb_tree_nodeIS8_E
   fun:_ZNSt8_Rb_treeIN3sql11StatementIDESt4pairIKS1_13scoped_refptrINS0_10Connection12StatementRefEEESt10_Select1stIS8_ESt4lessIS1_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E
   fun:_ZNSt8_Rb_treeIN3sql11StatementIDESt4pairIKS1_13scoped_refptrINS0_10Connection12StatementRefEEESt10_Select1stIS8_ESt4lessIS1_ESaIS8_EE5clearEv
   fun:_ZNSt3mapIN3sql11StatementIDE13scoped_refptrINS0_10Connection12StatementRefEESt4lessIS1_ESaISt4pairIKS1_S5_EEE5clearEv
   fun:_ZN3sql10Connection5CloseEv
   fun:_ZN3sql10ConnectionD2Ev
   fun:_ZN3sql10ConnectionD1Ev
   fun:_ZN7history16InMemoryDatabaseD0Ev
}
{
   bug_76197b
   Memcheck:Unaddressable
   ...
   fun:sqlite3_step
   fun:sqlite3_exec
   fun:_ZN3sql10Connection7ExecuteEPKc
   fun:_ZN7history11URLDatabase31CreateKeywordSearchTermsIndicesEv
   fun:_ZN7history16InMemoryDatabase12InitFromDiskE*
   fun:_ZN7history22InMemoryHistoryBackend4InitE*
}
{
   bug_79654_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNSt3setIP16RenderWidgetHostSt4lessIS1_ESaIS1_EE6insertERKS1_
   fun:_ZN*9TabLoader12TabIsLoadingEP24NavigationControllerImpl
   fun:_ZN*18SessionRestoreImpl21ProcessSessionWindowsEPSt6vectorIP13SessionWindowSaIS3_EE
   fun:_ZN*18SessionRestoreImpl12OnGotSessionEiPSt6vectorIP13SessionWindowSaIS3_EE
}
{
   bug_79654_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*RenderWidgetHost*
   ...
   fun:_ZNSt3setIP16RenderWidgetHostSt4lessIS1_ESaIS1_EE6insertERKS1_
   fun:*TabLoader7ObserveEiRKN7content18NotificationSourceERKNS1_19NotificationDetailsE
   fun:_ZN23NotificationServiceImpl*
   fun:_ZN15WebContentsImpl12SetIsLoading*
   fun:_ZN15WebContentsImpl14RenderViewGone*
}
{
   bug_84265
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12LoginHandler6CreateEPN3net17AuthChallengeInfoEPNS0_10URLRequestE
   fun:_Z17CreateLoginPromptPN3net17AuthChallengeInfoEPNS_10URLRequestE
   fun:_ZN22ResourceDispatcherHost14OnAuthRequiredEPN3net10URLRequestEPNS0_17AuthChallengeInfoE
   fun:_ZN3net13URLRequestJob21NotifyHeadersCompleteEv
}
{
   bug_84770_a
   Memcheck:Unaddressable
   fun:_ZN5blink21FrameLoaderClientImpl12allowPluginsEb
   fun:_ZN5blink14SubframeLoader12allowPluginsENS_28ReasonForCallingAllowPluginsE
}
{
   bug_84770_b
   Memcheck:Unaddressable
   fun:_ZN5blink21FrameLoaderClientImpl15allowJavaScriptEb
   fun:_ZN5blink16ScriptController17canExecuteScriptsENS_33ReasonForCallingCanExecuteScriptsE
}
{
   bug_84770_c
   Memcheck:Unaddressable
   fun:_ZN5blink21FrameLoaderClientImpl20allowScriptExtensionERKN3WTF6StringEi
   fun:_ZN5blink16V8DOMWindowShell16createNewContextEN2v86HandleINS1_6ObjectEEEi
}
{
   bug_86481
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocator*FilePath*allocate*
   fun:_ZNSt11_Deque_base*FilePath*_M_allocate_map*
   fun:_ZNSt11_Deque_base*FilePath*_M_initialize_map*
   fun:_ZNSt11_Deque_baseI*FilePath*
   fun:_ZNSt5dequeI*FilePath*
   fun:_ZNSt5stackI*FilePath*deque*
   fun:_ZN9file_util14FileEnumeratorC1E*
   fun:_ZN7history20ExpireHistoryBackend25DoExpireHistoryIndexFilesEv
}
{
   bug_87423
   Memcheck:Uninitialized
   fun:_ZNK3net15HttpBasicStream23LogNumRttVsBytesMetricsEv
   fun:_ZN3net22HttpNetworkTransaction18DoReadBodyCompleteEi
   fun:_ZN3net22HttpNetworkTransaction6DoLoopEi
   fun:_ZN3net22HttpNetworkTransaction4ReadEPNS_8IOBufferEiP14CallbackRunnerI6Tuple1IiEE
   fun:_Z15ReadTransactionPN3net15HttpTransactionEPSs
   fun:_ZN3net73HttpNetworkTransactionTest_ErrorResponseTofHttpsConnectViaHttpsProxy_Test8TestBodyEv
}
{
   bug_90215_c
   Memcheck:Leak
   ...
   fun:_ZN3net13URLRequestJob21NotifyRestartRequiredEv
   fun:_ZN8appcache21AppCacheURLRequestJob13BeginDeliveryEv
}
{
   bug_90215_d
   Memcheck:Leak
   ...
   fun:_ZN8appcache19AppCacheStorageImpl23RunOnePendingSimpleTaskEv
}
{
   bug_90215_e
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8appcache15AppCacheService10InitializeE*
   fun:_ZN21ChromeAppCacheService20InitializeOnIOThreadE*
}
{
   bug_90215_f
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN26TransportSecurityPersisterC1EPN3net22TransportSecurityStateERKN4base8FilePathEb
   fun:_ZNK13ProfileIOData4InitEPSt3mapISs10linked_ptrIN3net20URLRequestJobFactory15ProtocolHandlerEESt4lessISsESaISt4pairIKSsS5_EEE
   fun:_ZN12_GLOBAL__N_114FactoryForMain6CreateEv
   fun:_ZN29ChromeURLRequestContextGetter20GetURLRequestContextEv
   fun:_ZN7content21ChromeAppCacheService20InitializeOnIOThreadERKN4base8FilePathEPNS_15ResourceContextEPN3net23URLRequestContextGetterE13scoped_refptrIN5quota20SpecialStoragePolicyEE
}
{
   bug_90240
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN2pp5proxy26PPP_Instance_Private_Proxy22OnMsgGetInstanceObjectEiNS0_24SerializedVarReturnValueE
}
{
   bug_90487a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPN5quota11QuotaClientEEE8allocateEjPKv
   fun:_ZNSt10_List_baseIPN5quota11QuotaClientESaIS2_EE11_M_get_nodeEv
   fun:_ZNSt4listIPN5quota11QuotaClientESaIS2_EE14_M_create_nodeERKS2_
   fun:_ZNSt4listIPN5quota11QuotaClientESaIS2_EE9_M_insertESt14_List_iteratorIS2_ERKS2_
   fun:_ZNSt4listIPN5quota11QuotaClientESaIS2_EE9push_backERKS2_
   fun:_ZN5quota12QuotaManager14RegisterClientEPNS_11QuotaClientE
   fun:_ZN5quota17QuotaManagerProxy14RegisterClientEPNS_11QuotaClientE
}
{
   bug_93250a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*SHA1Fingerprint*
   fun:_ZN3net16CertVerifyResultaSERKS0_
   fun:_ZN3net12CertVerifier12HandleResultEPNS_15X509CertificateERKSsiiRKNS_16CertVerifyResultE
   fun:_ZN3net18CertVerifierWorker7DoReplyEv
}
{
   bug_93250b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMNS_6subtle18TaskClosureAdapterEFvvEPS2_EENS_8internal20InvokerStorageHolderINS6_15InvokerStorage1IT_T0_EEEES9_RKSA_
   fun:_ZN4base11MessageLoop8PostTaskERKN15tracked_objects8LocationEP4Task
   fun:_ZN3net18CertVerifierWorker6FinishEv
   fun:_ZN3net18CertVerifierWorker3RunEv
}
{
   bug_93730_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN14ServiceProcess10InitializeEP16MessageLoopForUIRK11CommandLineP19ServiceProcessState
   fun:_Z18ServiceProcessMainRK18MainFunctionParams
   ...
   fun:ChromeMain
   fun:main
}
{
   bug_93730_b
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN4base13LaunchProcessERKSt6vectorISsSaISsEERKNS_13LaunchOptionsEPi
   fun:_ZN4base13LaunchProcessERK11CommandLineRKNS_13LaunchOptionsEPi
   fun:_ZN21ServiceProcessControl8Launcher5DoRunEv
}
{
   bug_93730_c
   Memcheck:Leak
   fun:_Znw*
   fun:_Z17NewRunnableMethodIN21ServiceProcessControl8LauncherEMS1_FvvEEP14CancelableTaskPT_T0_
   fun:_ZN21ServiceProcessControl8Launcher5DoRunEv
}
{
   bug_93730_d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC11SyncChannelC1ERKNS_13ChannelHandleENS_7Channel4ModeEPNS4_8ListenerEPN4base16MessageLoopProxyEbPNS8_13WaitableEventE
   fun:_ZN16ServiceIPCServer13CreateChannelEv
   fun:_ZN16ServiceIPCServer4InitEv
   fun:_ZN14ServiceProcess10InitializeEP16MessageLoopForUIRK11CommandLineP19ServiceProcessState
   fun:_Z18ServiceProcessMainRK18MainFunctionParams
   ...
   fun:ChromeMain
   fun:main
}
{
   bug_94764
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8remoting13ClientSession11UnpressKeysEv
   fun:_ZN8remoting34ClientSessionTest_UnpressKeys_Test8TestBodyEv
}
{
   bug_95448
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsPN4base5ValueEEEE8allocateEjPKv
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE14_M_create_nodeERKS5_
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE10_M_insert_EPKSt18_Rb_tree_node_baseSE_RKS5_
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS5_ERKS5_
   fun:_ZNSt3mapISsPN4base5ValueESt4lessISsESaISt4pairIKSsS2_EEE6insertESt17_Rb_tree_iteratorIS7_ERKS7_
   fun:_ZNSt3mapISsPN4base5ValueESt4lessISsESaISt4pairIKSsS2_EEEixERS6_
   fun:_ZN4base15DictionaryValue23SetWithoutPathExpansionERKSsPNS_5ValueE
   fun:_ZN4base15DictionaryValue3SetERKSsPNS_5ValueE
   fun:_ZN4base15DictionaryValue9SetStringERKSsRKSbItNS_20string16_char_traitsESaItEE
   fun:_ZN11PluginPrefs23CreatePluginFileSummaryERKN6webkit13WebPluginInfoE
   fun:_ZN11PluginPrefs19OnUpdatePreferencesESt6vectorIN6webkit13WebPluginInfoESaIS2_EES0_INS1_5npapi11PluginGroupESaIS6_EE
}
{
   bug_98867
   Memcheck:Jump
   obj:*
   obj:*
   obj:*
}
{
   bug_99307
   Memcheck:Uninitialized
   fun:modp_b64_encode
   fun:_ZN4base12Base64Encode*
   fun:_ZN11web_ui_util15GetImageDataUrlERK8SkBitmap
   fun:_ZN12_GLOBAL__N_121NetworkInfoDictionary8set_iconERK8SkBitmap
}
{
   bug_100982
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blink12RenderRegion22setRenderBoxRegionInfoEPKNS_9RenderBoxEiib
   fun:_ZNK7blink9RenderBox19renderBoxRegionInfoEPNS_12RenderRegionEiNS0_24RenderBoxRegionInfoFlagsE
   ...
   fun:_ZN5blink11RenderBlock5paintERNS_9PaintInfoERKNS_8IntPointE
}
{
   bug_101750
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF7HashSetIPN7blink16SVGStyledElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEEnwEj
   fun:_ZN5blink21SVGDocumentExtensions18addPendingResourceERKN3WTF12AtomicStringEPNS_16SVGStyledElementE
}
{
   bug_101781_d
   Memcheck:Uninitialized
   fun:_ZN7testing8internal11CmpHelperGEIddEENS_15AssertionResultEPKcS4_RKT_RKT0_
   fun:_ZN3gfx31JPEGCodec_EncodeDecodeRGBA_Test8TestBodyEv
}
{
   bug_102327a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN15tracked_objects10ThreadData10InitializeEv
   fun:_ZN15tracked_objects10ThreadData30InitializeAndSetTrackingStatusEb
   fun:_ZN15tracked_objects10ThreadData29ShutdownSingleThreadedCleanupEb
}
{
   bug_102327d
   Memcheck:Uninitialized
   fun:_ZN15tracked_objects9DeathData11RecordDeathEiii
   fun:_ZN15tracked_objects10ThreadData11TallyADeathERKNS_6BirthsEii
   fun:_ZN15tracked_objects10ThreadData31TallyRunOnNamedThreadIfTrackingERKN4base12TrackingInfoERKNS_11TrackedTimeES7_
}
{
   Intentional leak of stl map during thread cleanup in profiler
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK15tracked_objects10ThreadData26OnThreadTerminationCleanupEv
}
{
   bug_102831_a
   Memcheck:Leak
   ...
   fun:_ZN17PluginLoaderPosix19LoadPluginsInternalEv
}
{
   bug_104447
   Memcheck:Leak
   ...
   fun:HB_OpenTypeShape
   fun:arabicSyriacOpenTypeShape
   fun:HB_ArabicShape
   fun:HB_ShapeItem
   fun:_ZN5blink21ComplexTextController11shapeGlyphsEv
   fun:_ZN5blink21ComplexTextController13nextScriptRunEv
   fun:_ZN5blink21ComplexTextController14widthOfFullRunEv
   fun:_ZNK7blink4Font24floatWidthForComplexTextERKNS_7TextRunEPN3WTF7HashSetIPKNS_14SimpleFontDataENS4_7PtrHashIS8_EENS4_10HashTraitsIS8_EEEEPNS_13GlyphOverflowE
   fun:_ZNK7blink4Font5widthERKNS_7TextRunERiRN3WTF6StringE
   fun:_ZN5blink14SVGTextMetricsC1EPNS_19RenderSVGInlineTextERKNS_7TextRunE
   fun:_ZN5blink14SVGTextMetrics21measureCharacterRangeEPNS_19RenderSVGInlineTextEjj
   fun:_ZNK7blink30SVGTextLayoutAttributesBuilder25propagateLayoutAttributesEPNS_12RenderObjectERN3WTF6VectorINS_23SVGTextLayoutAttributesELm0EEERjRt
}
{
   bug_104806_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*tracked_objects*ThreadData*TallyABirth*
}
{
   bug_104806_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*tracked_objects*ThreadData*TallyADeath*
}
{
   bug_105744b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNSt6vector*9push_back*
   fun:_ZN4skia19ConvolutionFilter1D9AddFilterEiPKsi
   fun:_ZN4skia12_GLOBAL__N_112ResizeFilter14ComputeFiltersEiiiffPNS_19ConvolutionFilter1DE
   fun:_ZN4skia12_GLOBAL__N_112ResizeFilterC1ENS_15ImageOperations12ResizeMethodEiiiiRK7SkIRect
   fun:_ZN4skia15ImageOperations11ResizeBasicERK8SkBitmapNS0_12ResizeMethodEiiRK7SkIRect
   fun:_ZN4skia15ImageOperations6ResizeERK8SkBitmapNS0_12ResizeMethodEiiRK7SkIRect
   fun:_ZN4skia15ImageOperations6ResizeERK8SkBitmapNS0_12ResizeMethodEii
   fun:_ZN24ChromeRenderViewObserver21CaptureFrameThumbnailEPN5blink7WebViewEiiP8SkBitmapP14ThumbnailScore
   fun:_ZN24ChromeRenderViewObserver16CaptureThumbnailEv
   fun:_ZN24ChromeRenderViewObserver15CapturePageInfoEib
}
{
   bug_105907
   Memcheck:Uninitialized
   ...
   fun:_ZN4skia14BGRAConvolve2DEPKhibRKNS_19ConvolutionFilter1DES4_iPhb
   fun:_ZN4skia15ImageOperations11ResizeBasicE*
   fun:_ZN4skia15ImageOperations6ResizeE*
}
{
   bug_106912
   Memcheck:Leak
   ...
   fun:*tracked_objects*ThreadData*InitializeThreadContext*
   fun:*base*PlatformThread*SetName*
}
{
   bug_111669
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8appcache17AppCacheDiskCache10ActiveCall17OnAsyncCompletionEi
}
{
   bug_112278
   Memcheck:Uninitialized
   fun:fetch_texel_2d_f_rgba8888
   ...
   fun:sample_nearest_2d
   fun:fetch_texel_lod
   fun:fetch_texel
   fun:_mesa_execute_program
   fun:run_program*
   fun:_swrast_exec_fragment_program
   fun:shade_texture_span
   fun:_swrast_write_rgba_span
   fun:general_triangle
   ...
   fun:_swrast_Triangle
   fun:triangle_rgba
   ...
   fun:run_render
   fun:_tnl_run_pipeline
   fun:_tnl_draw_prims
   fun:_tnl_vbo_draw_prims
}
{
   bug_122457
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN5blink12MHTMLArchiveEEnwEm
   fun:_ZN5blink12MHTMLArchive6createEv
   ...
   fun:_ZN5blink11MHTMLParser22parseArchiveWithHeaderEPNS_10MIMEHeaderE
   fun:_ZN5blink11MHTMLParser12parseArchiveEv
   fun:_ZN5blink12MHTMLArchive6createERKNS_4KURLEPNS_12SharedBufferE
}
{
   bug_122717_use_after_free
   Memcheck:Unaddressable
   fun:__pthread_mutex_unlock_usercnt
   fun:_ZN4base8internal8LockImpl6UnlockEv
   fun:_ZN4base4Lock7ReleaseEv
   fun:_ZN4base8AutoLockD1Ev
   fun:_ZN5gdata15GDataFileSystem21RunTaskOnIOThreadPoolERKN4base8CallbackIFvvEEE
}
{
   bug_122717_leak
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN7content13BrowserThread16PostTaskAndReplyENS0_2IDERKN15tracked_objects8LocationERKN4base8CallbackIFvvEEESB_
}
{
   bug_123307
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF16fastZeroedMallocEm
   ...
   fun:_ZN5blink12_GLOBAL__N_111V8ObjectMapIN2v86ObjectEjE3setERKNS2_6HandleIS3_EERKj
   fun:_ZN5blink12_GLOBAL__N_110Serializer10greyObjectERKN2v86HandleINS2_6ObjectEEE
   fun:_ZN5blink12_GLOBAL__N_110Serializer11doSerializeEN2v86HandleINS2_5ValueEEEPNS1_9StateBaseE
   fun:_ZN5blink12_GLOBAL__N_110Serializer9serializeEN2v86HandleINS2_5ValueEEE
   fun:_ZN5blink21SerializedScriptValueC1EN2v86HandleINS1_5ValueEEEPN3WTF6VectorINS5_6RefPtrINS_11MessagePortEEELm1EEEPNS6_INS7_INS5_11ArrayBufferEEELm1EEERb
   fun:_ZN5blink21SerializedScriptValue6createEN2v86HandleINS1_5ValueEEEPN3WTF6VectorINS5_6RefPtrINS_11MessagePortEEELm1EEEPNS6_INS7_INS5_11ArrayBufferEEELm1EEERb
   fun:_ZN5blinkL25handlePostMessageCallbackERKN2v89ArgumentsEb
   fun:_ZN5blink11V8DOMWindow19postMessageCallbackERKN2v89ArgumentsE
   fun:_ZN2v88internalL19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   fun:_ZN2v88internalL21Builtin_HandleApiCallENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
}
{
   bug_124488
   Memcheck:Leak
   fun:malloc
   fun:strdup
   ...
   fun:_ZN34CopyTextureCHROMIUMResourceManager10InitializeEv
   fun:_ZN3gpu5gles216GLES2DecoderImpl10InitializeERK13scoped_refptrIN3gfx9GLSurfaceEERKS2_INS3_9GLContextEERKNS3_4SizeERKNS0_18DisallowedFeaturesEPKcRKSt6vectorIiSaIiEE
   fun:_ZN6webkit3gpu18GLInProcessContext10InitializeERKN3gfx4SizeEPS1_PKcPKiNS2_13GpuPreferenceE
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN5blink20WebGraphicsContext3D10AttributesEPS3_
}
{
   bug_124496
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN8notifier26ProxyResolvingClientSocket23ProcessProxyResolveDoneEi
}
{
   bug_127716
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gfx5ImageC1ERK8SkBitmap
   fun:_ZN16BrowserThemePack16LoadRawBitmapsToE*
   fun:_ZN16BrowserThemePack18BuildFromExtensionEPK9Extension
   fun:_ZN45BrowserThemePackTest_CanBuildAndReadPack_Test8TestBodyEv
}
{
   bug_130362
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12invalidation20NewPermanentCallbackINS_22InvalidationClientImplES1_St4pairINS_6StatusESsEEEPN4base8CallbackIFvT1_EEEPT_MT0_FvS7_E
   fun:_ZN12invalidation22InvalidationClientImpl34ScheduleStartAfterReadingStateBlobEv
   fun:_ZN12invalidation22InvalidationClientImpl5StartEv
   fun:_ZN6syncer24SyncInvalidationListener5StartERKSsS2_S2_RKSt3mapIN8syncable9ModelTypeElSt4lessIS5_ESaISt4pairIKS5_lEEERKN12browser_sync10WeakHandleINS_24InvalidationStateTrackerEEEPNS0_8ListenerEPNS_11StateWriterE
   fun:_ZN6syncer20InvalidationNotifier17UpdateCredentialsERKSsS2_
   fun:_ZN6syncer31NonBlockingInvalidationNotifier4Core17UpdateCredentialsERKSsS3_
}
{
   bug_130449
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12invalidation20NewPermanentCallbackINS_22InvalidationClientImplES1_St4pairINS_6StatusESsEEEPN4base8CallbackIFvT1_EEEPT_MT0_FvS7_E
   fun:_ZN12invalidation22InvalidationClientImpl34ScheduleStartAfterReadingStateBlobEv
   fun:_ZN12invalidation22InvalidationClientImpl5StartEv
   fun:_ZN6syncer24SyncInvalidationListener5StartERKSsS2_S2_RKSt3mapIN8syncable9ModelTypeElSt4lessIS5_ESaISt4pairIKS5_lEEERKN12browser_sync10WeakHandleINS_24InvalidationStateTrackerEEEPNS0_8ListenerE
   fun:_ZN6syncer20InvalidationNotifier17UpdateCredentialsERKSsS2_
   fun:_ZN6syncer31NonBlockingInvalidationNotifier4Core17UpdateCredentialsERKSsS3_
}
{
   bug_130619
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blink9ClipRects6createERKS0_
   fun:_ZN5blink11RenderLayer15updateClipRectsEPKS0_PNS_12RenderRegionENS_13ClipRectsTypeENS_29OverlayScrollbarSizeRelevancyE
   ...
   fun:_ZNK7blink11RenderLayer15parentClipRectsEPKS0_PNS_12RenderRegionENS_13ClipRectsTypeERNS_9ClipRectsENS_29OverlayScrollbarSizeRelevancyE
   fun:_ZNK7blink11RenderLayer18backgroundClipRectEPKS0_PNS_12RenderRegionENS_13ClipRectsTypeENS_29OverlayScrollbarSizeRelevancyE
}
{
   bug_138058
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink12WebVTTParser22constructTreeFromTokenEPNS_8DocumentE
   fun:_ZN5blink12WebVTTParser33createDocumentFragmentFromCueTextERKN3WTF6StringE
   fun:_ZN5blink12TextTrackCue12getCueAsHTMLEv
   fun:_ZN5blink12TextTrackCue17updateDisplayTreeEf
   fun:_ZN5blink16HTMLMediaElement25updateActiveTextTrackCuesEf
}
{
   bug_138060
   Memcheck:Uninitialized
   fun:_NPN_EvaluateHelper
   fun:_NPN_Evaluate
   fun:_ZN5blink11WebBindings8evaluateEP4_NPPP8NPObjectP9_NPStringP10_NPVariant
   fun:_ZL13executeScriptPK12PluginObjectPKc
   fun:NPP_Destroy
   fun:_ZN6webkit5npapi14PluginInstance11NPP_DestroyEv
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl15DestroyInstanceEv
   fun:_ZN6webkit5npapi21WebPluginDelegateImplD0Ev
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl15PluginDestroyedEv
   fun:_ZN6webkit5npapi13WebPluginImpl22TearDownPluginInstanceEPN5blink12WebURLLoaderE
   fun:_ZN6webkit5npapi13WebPluginImpl12SetContainerEPN5blink18WebPluginContainerE
   fun:_ZN6webkit5npapi13WebPluginImpl7destroyEv
   fun:_ZN5blink22WebPluginContainerImplD0Ev
   fun:_ZN3WTF10RefCountedIN7blink6WidgetEE5derefEv
   fun:_ZNSt4pairIN3WTF6RefPtrIN7blink6WidgetEEEPNS2_9FrameViewEED1Ev
   fun:_ZN3WTF9HashTableINS_6RefPtrIN7blink6WidgetEEESt4pairIS4_PNS2_9FrameViewEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_E15deallocateTableEPS8_i
   fun:_ZN3WTF9HashTableINS_6RefPtrIN7blink6WidgetEEESt4pairIS4_PNS2_9FrameViewEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_ED1Ev
   fun:_ZN3WTF7HashMapINS_6RefPtrIN7blink6WidgetEEEPNS2_9FrameViewENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEED1Ev
   fun:_ZN5blink12RenderWidget28resumeWidgetHierarchyUpdatesEv
   fun:_ZN5blink7Element6detachEv
   fun:_ZN5blink13ContainerNode14detachChildrenEv
   fun:_ZN5blink13ContainerNode6detachEv
}
{
   bug_138220_a
   Memcheck:Uninitialized
   fun:_ZNK7blink16HTMLInputElement8dataListEv
   fun:_ZNK7blink16HTMLInputElement4listEv
   fun:_ZN5blink21RenderSliderContainer6layoutEv
   fun:_ZN5blink11RenderBlock16layoutBlockChildEPNS_9RenderBoxERNS0_10MarginInfoERNS_20FractionalLayoutUnitES6_
   fun:_ZN5blink11RenderBlock19layoutBlockChildrenEbRNS_20FractionalLayoutUnitE
   fun:_ZN5blink11RenderBlock11layoutBlockEbNS_20FractionalLayoutUnitE
   fun:_ZN5blink11RenderBlock6layoutEv
   fun:_ZN5blink12RenderSlider6layoutEv
}
{
   bug_138220_b
   Memcheck:Uninitialized
   fun:_ZNK7blink16HTMLInputElement8dataListEv
   fun:_ZNK7blink16HTMLInputElement4listEv
   fun:_ZN5blink11RenderTheme16paintSliderTicksEPNS_12RenderObjectERKNS_9PaintInfoERKNS_7IntRectE
   fun:_ZN5blink24RenderThemeChromiumLinux16paintSliderTrackEPNS_12RenderObjectERKNS_9PaintInfoERKNS_7IntRectE
   fun:_ZN5blink11RenderTheme5paintEPNS_12RenderObjectERKNS_9PaintInfoERKNS_7IntRectE
   fun:_ZN5blink9RenderBox19paintBoxDecorationsERNS_9PaintInfoERKNS_21FractionalLayoutPointE
   fun:_ZN5blink11RenderBlock11paintObjectERNS_9PaintInfoERKNS_21FractionalLayoutPointE
}
{
   bug_138233_a
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN7blink17ScriptProfileNodeEEnwEm
   fun:_ZN5blink17ScriptProfileNode6createEPKN2v814CpuProfileNodeE
   fun:_ZNK7blink13ScriptProfile4headEv
   fun:_ZN5blink23ScriptProfileV8InternalL14headAttrGetterEN2v85LocalINS1_6StringEEERKNS1_12AccessorInfoE
   fun:_ZN2v88internal8JSObject23GetPropertyWithCallbackEPNS0_6ObjectES3_PNS0_6StringE
   fun:_ZN2v88internal6Object11GetPropertyEPS1_PNS0_12LookupResultEPNS0_6StringEP18PropertyAttributes
   fun:_ZN2v88internal6LoadIC4LoadENS0_16InlineCacheStateENS0_6HandleINS0_6ObjectEEENS3_INS0_6StringEEE
   fun:_ZN2v88internal11LoadIC_MissENS0_9ArgumentsEPNS0_7IsolateE
}
{
   bug_138233_b
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN7blink17ScriptProfileNodeEEnwEm
   fun:_ZN5blink17ScriptProfileNode6createEPKN2v814CpuProfileNodeE
   fun:_ZNK7blink17ScriptProfileNode8childrenEv
   fun:_ZN5blink27ScriptProfileNodeV8InternalL16childrenCallbackERKN2v89ArgumentsE
}
{
   bug_138712
   Memcheck:Uninitialized
   fun:_ZN7testing8internal11CmpHelperGEIddEENS_15AssertionResultEPKcS4_RKT_RKT0_
   fun:_ZN3gfx30JPEGCodec_EncodeDecodeRGB_Test8TestBodyEv
}
{
   bug_144118_b
   Memcheck:Unaddressable
   fun:_ZNK3WTF6OwnPtrIN5blink14ScrollbarGroupEEcvMS3_PS2_Ev
   fun:_ZN5blink22WebPluginContainerImpl14reportGeometryEv
   fun:_ZN5blink22WebPluginContainerImpl12setFrameRectERKN7blink7IntRectE
   ...
   fun:_ZN9TestShell4dumpEv
}
{
   bug_144913_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8chromeos17DBusThreadManager10InitializeEv
   fun:_ZN8chromeos23KioskModeIdleLogoutTest5SetUpEv
}
{
   bug_144913_c
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN8chromeos21DBusThreadManagerImplC1ENS_28DBusClientImplementationTypeE
   fun:_ZN8chromeos17DBusThreadManager10InitializeEv
   fun:_ZN8chromeos23KioskModeIdleLogoutTest5SetUpEv
}
{
   bug_144930_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZL21cachedDeviceLuminancef
}
{
   bug_145650a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN14WebDataService10AddKeywordERK15TemplateURLData
   fun:_ZN18TemplateURLService11AddNoNotifyEP11TemplateURLb
}
{
   bug_145650b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN14WebDataService13RemoveKeywordEl
   fun:_ZN18TemplateURLService14RemoveNoNotifyEP11TemplateURL
   fun:_ZN18TemplateURLService6RemoveEP11TemplateURL
   fun:_ZN9protector71DefaultSearchProviderChangeTest_CurrentSearchProviderRemovedByUser_Test19RunTestOnMainThreadEv
}
{
   bug_145650c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN14WebDataService13UpdateKeywordERK15TemplateURLData
   fun:_ZN18TemplateURLService32SetDefaultSearchProviderNoNotifyEP11TemplateURL
}
{
   bug_125692a
   Memcheck:Uninitialized
   fun:_ZN2v88internal11StoreBuffer28IteratePointersInStoreBufferEPFvPPNS0_10HeapObjectES3_E
   fun:_ZN2v88internal11StoreBuffer25IteratePointersToNewSpaceEPFvPPNS0_10HeapObjectES3_E
   fun:_ZN2v88internal20MarkCompactCollector29EvacuateNewSpaceAndCandidatesEv
   fun:_ZN2v88internal20MarkCompactCollector11SweepSpacesEv
   fun:_ZN2v88internal20MarkCompactCollector14CollectGarbageEv
   fun:_ZN2v88internal4Heap11MarkCompactEPNS0_8GCTracerE
}
{
   bug_125692b
   Memcheck:Uninitialized
   fun:_ZN2v88internal11StoreBuffer7CompactEv
   fun:_ZN2v88internal11StoreBuffer19PrepareForIterationEv
   fun:_ZN2v88internal11StoreBuffer25IteratePointersToNewSpaceEPFvPPNS0_10HeapObjectES3_E
   fun:_ZN2v88internal20MarkCompactCollector29EvacuateNewSpaceAndCandidatesEv
   fun:_ZN2v88internal20MarkCompactCollector11SweepSpacesEv
   fun:_ZN2v88internal20MarkCompactCollector14CollectGarbageEv
   fun:_ZN2v88internal4Heap11MarkCompactEPNS0_8GCTracerE
   fun:_ZN2v88internal4Heap24PerformGarbageCollectionENS0_16GarbageCollectorEPNS0_8GCTracerE
   fun:_ZN2v88internal4Heap14CollectGarbageENS0_15AllocationSpaceENS0_16GarbageCollectorEPKcS5_
   fun:_ZN2v88internal4Heap14CollectGarbageENS0_15AllocationSpaceEPKc
   fun:_ZN2v88internal4Heap17CollectAllGarbageEiPKc
   fun:_ZN2v88internal4Heap16IdleNotificationEi
   fun:_ZN2v88internal2V816IdleNotificationEi
   fun:_ZN2v82V816IdleNotificationEi
   fun:_ZN16RenderThreadImpl11IdleHandlerEv
}
{
   bug_145693
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN10extensions18PermissionsUpdater17RecordOAuth2GrantEPKNS_9ExtensionE
   fun:_ZN10extensions18PermissionsUpdater22GrantActivePermissionsEPKNS_9ExtensionEb
   fun:_ZN10extensions12CrxInstaller25ReportSuccessFromUIThreadEv
}
{
   bug_145695
   Memcheck:Leak
   fun:malloc
   fun:NaClDescImcBoundDescAcceptConn
   fun:RevRpcHandlerBase
   fun:NaClThreadInterfaceStart
}
{
   bug_145696
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN10extensions9TabHelper23OnInlineWebstoreInstallEiiRKSsRK4GURL
}
{
   bug_145697
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN18SecurityFilterPeer40CreateSecurityFilterPeerForDeniedRequestEN12ResourceType4TypeEPN11webkit_glue20ResourceLoaderBridge4PeerEi
   fun:_ZN12_GLOBAL__N_124RendererResourceDelegate17OnRequestCompleteEPN11webkit_glue20ResourceLoaderBridge4PeerEN12ResourceType4TypeERKN3net16URLRequestStatusE
   fun:_ZN7content18ResourceDispatcher17OnRequestCompleteEiRKN3net16URLRequestStatusERKSsRKN4base9TimeTicksE
}
{
   bug_145699
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN17OAuth2ApiCallFlow24CreateAccessTokenFetcherEv
   fun:_ZN17OAuth2ApiCallFlow20BeginMintAccessTokenEv
   fun:_ZN17OAuth2ApiCallFlow12BeginApiCallEv
   fun:_ZN17OAuth2ApiCallFlow5StartEv
   fun:_ZN19OAuth2MintTokenFlow13FireAndForgetEv
}
{
   bug_145703
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7content16SiteInstanceImpl10GetProcessEv
   fun:_ZN7content*Render*SiteInstance*
   fun:_ZN7content*Render*SiteInstance*
   ...
   fun:_ZN7content15WebContentsImpl4InitERKNS_11WebContents12CreateParamsE
}
{
   bug_145708
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN27ExtensionDevToolsClientHostC1EPN7content11WebContentsERKSsS4_i
   fun:_ZN22AttachDebuggerFunction7RunImplEv
   fun:_ZN17ExtensionFunction3RunEv
   fun:_ZN27ExtensionFunctionDispatcher8DispatchERK31ExtensionHostMsg_Request_ParamsPN7content14RenderViewHostE
   fun:_ZN10extensions13ExtensionHost9OnRequestERK31ExtensionHostMsg_Request_Params
}
{
   bug_145712
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blink25NotificationPresenterImpl17requestPermissionEPN7blink22ScriptExecutionContextEN3WTF10PassRefPtrINS1_12VoidCallbackEEE
   fun:_ZN5blink18NotificationCenter17requestPermissionEN3WTF10PassRefPtrINS_12VoidCallbackEEE
   fun:_ZN5blink20V8NotificationCenter25requestPermissionCallbackERKN2v89ArgumentsE
}
{
   bug_145723
   Memcheck:Leak
   fun:_Znw*
   fun:_Z20NewExtensionFunctionI25TabsExecuteScriptFunctionEP17ExtensionFunctionv
   fun:_ZN25ExtensionFunctionRegistry11NewFunctionERKSs
   fun:_ZN27ExtensionFunctionDispatcher23CreateExtensionFunctionERK31ExtensionHostMsg_Request_ParamsPKN10extensions9ExtensionEiRKNS3_10ProcessMapEPNS3_12ExtensionAPIEPvPN3IPC6SenderEPN7content14RenderViewHostEi
   fun:_ZN27ExtensionFunctionDispatcher8DispatchERK31ExtensionHostMsg_Request_ParamsPN7content14RenderViewHostE
   fun:_ZN10extensions13ExtensionHost9OnRequestERK31ExtensionHostMsg_Request_Params
}
{
   bug_145735
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv
   fun:_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm
   fun:_ZNSt12_Vector_baseIcSaIcEEC2EmRKS0_
   fun:_ZNSt6vectorIcSaIcEEC1EmRKcRKS0_
   fun:_ZN4base5files12_GLOBAL__N_121InotifyReaderCallbackEPNS1_13InotifyReaderEii
}
{
   bug_146950
   Memcheck:Leak
   fun:malloc
   fun:get_peer_sock_name
   fun:_xcb_get_auth_info
   fun:xcb_connect_to_display_with_auth_info
   fun:_XConnectXCB
   fun:XOpenDisplay
   fun:_ZN4base18MessagePumpAuraX1118GetDefaultXDisplayEv
}
{
   bug_162825
   Memcheck:Uninitialized
   fun:bcmp
   fun:_ZNK3gpu5gles221ShaderTranslatorCache26ShaderTranslatorInitParamsltERKS2_
   fun:_ZNKSt4lessIN3gpu5gles221ShaderTranslatorCache26ShaderTranslatorInitParams*
   ...
   fun:*ShaderTranslatorInitParams*
   ...
   fun:_ZN3gpu5gles216GLES2DecoderImpl26InitializeShaderTranslatorEv
}
{
   bug_163922
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN10extensions16SettingsFrontendC1ERK13scoped_refptrINS_22SettingsStorageFactoryEEP7Profile
   fun:_ZN10extensions16SettingsFrontend6CreateEP7Profile
   fun:_ZN16ExtensionServiceC1E*
   fun:_ZN10extensions19ExtensionSystemImpl6Shared4InitEb
   fun:_ZN10extensions19ExtensionSystemImpl21InitForRegularProfileEb
   fun:_ZN14ProfileManager22DoFinalInitForServicesEP7Profileb
   fun:_ZN14ProfileManager11DoFinalInitEP7Profileb
   fun:_ZN14ProfileManager10AddProfileEP7Profile
   fun:_ZN14ProfileManager10GetProfileE*
}
{
   bug_163924
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN28JSONAsynchronousUnpackerImpl22StartProcessOnIOThreadEN7content13BrowserThread2IDERKSs
}
{
   bug_164176
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN18BrowserProcessImpl21PreMainMessageLoopRunEv
   fun:_ZN22ChromeBrowserMainParts25PreMainMessageLoopRunImplEv
   fun:_ZN22ChromeBrowserMainParts21PreMainMessageLoopRunEv
   fun:_ZN7content15BrowserMainLoop13CreateThreadsEv
   fun:_ZN7content21BrowserMainRunnerImpl10InitializeERKNS_18MainFunctionParamsE
   fun:_ZN7content11BrowserMainERKNS_18MainFunctionParamsE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl3RunEv
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
   fun:ChromeMain
}
{
   bug_164178
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net25MultiThreadedCertVerifier6VerifyEPNS_15X509CertificateERKSsiPNS_6CRLSetEPNS_16CertVerifyResultERKN4base8CallbackIFviEEEPPvRKNS_11BoundNetLogE
   fun:_ZN3net25SingleRequestCertVerifier6VerifyEPNS_15X509CertificateERKSsiPNS_6CRLSetEPNS_16CertVerifyResultERKN4base8CallbackIFviEEERKNS_11BoundNetLogE
   fun:_ZN3net18SSLClientSocketNSS12DoVerifyCertEi
   fun:_ZN3net18SSLClientSocketNSS15DoHandshakeLoopEi
   fun:_ZN3net18SSLClientSocketNSS21OnHandshakeIOCompleteEi
}
{
   bug_164179
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net10URLFetcher6CreateERK4GURLNS0_11RequestTypeEPNS_18URLFetcherDelegateE
   fun:_ZN18WebResourceService10StartFetchEv
}
{
   bug_166819
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK3sql10Connection21GetUntrackedStatementEPKc
   fun:_ZNK3sql10Connection21DoesTableOrIndexExistEPKcS2_
   fun:_ZNK3sql10Connection14DoesTableExistEPKc
   fun:_ZN3sql9MetaTable14DoesTableExistEPNS_10ConnectionE
   ...
   fun:_ZN7history16TopSitesDatabase4InitE*
   fun:_ZN7history15TopSitesBackend16InitDBOnDBThreadE*
}
{
   bug_166819b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK3sql10Connection21GetUntrackedStatementEPKc
   fun:_ZNK3sql10Connection21DoesTableOrIndexExistEPKcS2_
   fun:_ZNK3sql10Connection14DoesTableExistEPKc
   fun:_ZN7history17ShortcutsDatabase11EnsureTableEv
   fun:_ZN7history17ShortcutsDatabase4InitEv
   fun:_ZN7history16ShortcutsBackend12InitInternalEv
}
{
   bug_167175a
   Memcheck:Leak
   ...
   fun:g_*
   ...
   fun:_ZN16BrowserWindowGtk11InitWidgetsEv
   fun:_ZN16BrowserWindowGtk4InitEv
   fun:_ZN13BrowserWindow19CreateBrowserWindowEP7Browser
}
{
   bug_167175b
   Memcheck:Leak
   fun:malloc
   obj:/lib/libpng12.so.0.42.0
   fun:png_create_read_struct_2
   ...
   fun:_ZN15ReloadButtonGtkC1EP18LocationBarViewGtkP7Browser
   fun:_ZN17BrowserToolbarGtk4InitEP10_GtkWindow
   fun:_ZN16BrowserWindowGtk11InitWidgetsEv
   fun:_ZN16BrowserWindowGtk4InitEv
   fun:_ZN13BrowserWindow19CreateBrowserWindowEP7Browser
}
{
   bug_167175d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISbItN4base20string16_char_traitsESaItEEE8allocateEmPKv
   fun:_ZNSt12_Vector_baseISbItN4base20string16_char_traitsESaItEESaIS3_EE11_M_allocateEm
   ...
   fun:_ZN15WrenchMenuModel5BuildEbb
   fun:_ZN15WrenchMenuModelC1EPN2ui19AcceleratorProviderEP7Browserbb
   fun:_ZN17BrowserToolbarGtkC1EP7BrowserP16BrowserWindowGtk
   fun:_ZN16BrowserWindowGtk11InitWidgetsEv
   fun:_ZN16BrowserWindowGtk4InitEv
   fun:_ZN13BrowserWindow19CreateBrowserWindowEP7Browser
}
{
   bug_171722
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net12_GLOBAL__N_120URLRequestFtpJobTest9AddSocketEPNS_13MockReadWriteILNS_17MockReadWriteTypeE0EEEmPNS2_ILS3_1EEEm
}
{
   bug_172005
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7leveldb10VersionSet11LogAndApplyEPNS_11VersionEditEPNS_4port5MutexE
   fun:_ZN7leveldb2DB4OpenERKNS_7OptionsERKSsPPS0_
   fun:_ZN11dom_storage22SessionStorageDatabase9TryToOpenEPPN7leveldb2DBE
   fun:_ZN11dom_storage22SessionStorageDatabase8LazyOpenEb
   fun:_ZN11dom_storage22SessionStorageDatabase24ReadNamespacesAndOriginsEPSt3mapISsSt6vectorI4GURLSaIS3_EESt4lessISsESaISt4pairIKSsS5_EEE
   fun:_ZN11dom_storage17DomStorageContext36FindUnusedNamespacesInCommitSequenceERKSt3setISsSt4lessISsESaISsEES7_
}
{
   bug_172005b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7leveldb6DBImplC1ERKNS_7OptionsERKSs
   fun:_ZN7leveldb2DB4OpenERKNS_7OptionsERKSsPPS0_
   fun:_ZN11dom_storage22SessionStorageDatabase9TryToOpenEPPN7leveldb2DBE
   fun:_ZN11dom_storage22SessionStorageDatabase8LazyOpenEb
   fun:_ZN11dom_storage22SessionStorageDatabase24ReadNamespacesAndOriginsEPSt3mapISsSt6vectorI4GURLSaIS3_EESt4lessISsESaISt4pairIKSsS5_EEE
   fun:_ZN11dom_storage17DomStorageContext36FindUnusedNamespacesInCommitSequenceERKSt3setISsSt4lessISsESaISsEES7_
}
{
   bug_175823
   Memcheck:Leak
   ...
   fun:_ZN18ValueStoreFrontend*
}
{
   bug_176616_a
   Memcheck:Uninitialized
   fun:_ZN13WebTestRunner16WebTestProxyBase19didCreateDataSourceEPN5blink8WebFrameEPNS1_13WebDataSourceE
   fun:_ZN13WebTestRunner12WebTestProxyI11WebViewHostP9TestShellE19didCreateDataSourceEPN5blink8WebFrameEPNS5_13WebDataSourceE
   fun:_ZN5blink21FrameLoaderClientImpl20createDocumentLoaderERKN7blink15ResourceRequestERKNS1_14SubstituteDataE
   fun:_ZN5blink11FrameLoader4initEv
   fun:_ZN5blink5Frame4initEv
   fun:_ZN5blink12WebFrameImpl21initializeAsMainFrameEPN7blink4PageE
   fun:_ZN5blink11WebViewImpl19initializeMainFrameEPNS_14WebFrameClientE
   fun:_ZN9TestShell15createNewWindowERKN5blink6WebURLEP16DRTDevToolsAgentPN13WebTestRunner17WebTestInterfacesE
   fun:_ZN9TestShell16createMainWindowEv
   fun:_ZN9TestShell10initializeEP25MockWebKitPlatformSupport
}
{
   bug_176616_b
   Memcheck:Uninitialized
   fun:_ZN13WebTestRunner10TestRunner5resetEv
   fun:_ZN13WebTestRunner14TestInterfaces8resetAllEv
   fun:_ZN13WebTestRunner17WebTestInterfaces8resetAllEv
   fun:_ZN9TestShell19resetTestControllerEv
   fun:_ZL7runTestR9TestShellR10TestParamsRKSsb
}
{
   bug_176619_a
   Memcheck:Uninitialized
   fun:_ZN3WTF6StringC1EPKt
   fun:_ZN5blink12WebVTTParser22constructTreeFromTokenEPNS_8DocumentE
   fun:_ZN5blink12WebVTTParser33createDocumentFragmentFromCueTextERKN3WTF6StringE
   fun:_ZN5blink12TextTrackCue20createWebVTTNodeTreeEv
   fun:_ZN5blink12TextTrackCue22createCueRenderingTreeEv
   fun:_ZN5blink12TextTrackCue17updateDisplayTreeEf
}
{
   bug_176619_b
   Memcheck:Uninitialized
   fun:_ZN5blink12WebVTTParser13collectDigitsERKN3WTF6StringEPj
   fun:_ZN5blink12WebVTTParser16collectTimeStampERKN3WTF6StringEPj
   fun:_ZN5blink12WebVTTParser22constructTreeFromTokenEPNS_8DocumentE
   fun:_ZN5blink12WebVTTParser33createDocumentFragmentFromCueTextERKN3WTF6StringE
   fun:_ZN5blink12TextTrackCue20createWebVTTNodeTreeEv
   fun:_ZN5blink12TextTrackCue22createCueRenderingTreeEv
   fun:_ZN5blink12TextTrackCue17updateDisplayTreeEf
}
{
   bug_176621
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN13WebTestRunner10TestPlugin6createEPN5blink8WebFrameERKNS1_15WebPluginParamsEPNS_15WebTestDelegateE
   fun:_ZN13WebTestRunner16WebTestProxyBase12createPluginEPN5blink8WebFrameERKNS1_15WebPluginParamsE
   fun:_ZN13WebTestRunner12WebTestProxyI11WebViewHostP9TestShellE12createPluginEPN5blink8WebFrameERKNS5_15WebPluginParamsE
   fun:_ZN5blink21FrameLoaderClientImpl12createPluginERKN7blink7IntSizeEPNS1_17HTMLPlugInElementERKNS1_4KURLERKN3WTF6VectorINSA_6String*
   fun:_ZN5blink14SubframeLoader10loadPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7*
}
{
   bug_176891a
   Memcheck:Leak
   fun:calloc
   fun:nss_ZAlloc
   fun:nssCryptokiObject_Create
   fun:create_objects_from_handles
   fun:find_objects
   fun:find_objects_by_template
   fun:nssToken_FindCertificateByEncodedCertificate
   fun:PK11_FindCertFromDERCertItem
   fun:_ZN24mozilla_security_manager12_GLOBAL__N_125nsPKCS12Blob_ImportHelper*
}
{
   bug_176891b
   Memcheck:Leak
   ...
   fun:nssPKIObject_Create
   fun:nssTrustDomain_FindTrustForCertificate
   fun:STAN_DeleteCertTrustMatchingSlot
   fun:SEC_DeletePermCertificate
}
{
   bug_177213
   Memcheck:Leak
   ...
   fun:_ZN10extensionsL9SerializeERKSt6vectorINS_10UserScriptESaIS1_EE
}
{
   bug_179758_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base54WeakPtrTest_NonOwnerThreadCanCopyAndAssignWeakPtr_Test8TestBodyEv
}
{
   bug_179758_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base58WeakPtrTest_NonOwnerThreadCanCopyAndAssignWeakPtrBase_Test8TestBodyEv
}
{
   bug_181680b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blink11ScriptState10forContextEN2v86HandleINS1_7ContextEEE
   fun:_ZN5blink17ScriptDebugServer18handleProgramBreakEN2v86HandleINS1_6ObjectEEENS2_INS1_5ValueEEENS2_INS1_5ArrayEEE
}
{
   bug_195160_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIiEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE14_M_create_nodeERKi
   fun:_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE10_M_insert_EPKSt18_Rb_tree_node_baseS8_RKi
   fun:_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE16_M_insert_uniqueERKi
   fun:_ZNSt3setIiSt4lessIiESaIiEE6insertERKi
   fun:_ZN10extensions10URLMatcher14UpdateTriggersEv
   fun:_ZN10extensions10URLMatcher28UpdateInternalDatastructuresEv
   fun:_ZN10extensions10URLMatcher16AddConditionSetsERKSt6vectorI13scoped_refptrINS_22URLMatcherConditionSetEESaIS4_EE
   fun:_ZN12_GLOBAL__N_113FilterBuilder5BuildEv
   fun:_ZN12_GLOBAL__N_134LoadWhitelistsOnBlockingPoolThreadE12ScopedVectorI19ManagedModeSiteListE
}
{
   bug_195160_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPN10extensions13StringPatternEEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeIPN10extensions13StringPatternES2_St9_IdentityIS2_ENS0_26URLMatcherConditionFactory27StringPatternPointerCompareESaIS2_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeIPN10extensions13StringPatternES2_St9_IdentityIS2_ENS0_26URLMatcherConditionFactory27StringPatternPointerCompareESaIS2_EE14_M_create_nodeERKS2_
   fun:_ZNSt8_Rb_treeIPN10extensions13StringPatternES2_St9_IdentityIS2_ENS0_26URLMatcherConditionFactory27StringPatternPointerCompareESaIS2_EE10_M_insert_EPKSt18_Rb_tree_node_baseSB_RKS2_
   fun:_ZNSt8_Rb_treeIPN10extensions13StringPatternES2_St9_IdentityIS2_ENS0_26URLMatcherConditionFactory27StringPatternPointerCompareESaIS2_EE16_M_insert_uniqueERKS2_
   fun:_ZNSt3setIPN10extensions13StringPatternENS0_26URLMatcherConditionFactory27StringPatternPointerCompareESaIS2_EE6insertERKS2_
   fun:_ZN10extensions26URLMatcherConditionFactory15CreateConditionENS_19URLMatcherCondition9CriterionERKSs
   fun:_ZN10extensions26URLMatcherConditionFactory35CreateHostSuffixPathPrefixConditionERKSsS2_
   fun:_ZN6policy12URLBlacklist18CreateConditionSetEPN10extensions10URLMatcherEiRKSsS5_btS5_
   fun:_ZN12_GLOBAL__N_113FilterBuilder10AddPatternERKSsi
   fun:_ZN12_GLOBAL__N_113FilterBuilder11AddSiteListEP19ManagedModeSiteList
   fun:_ZN12_GLOBAL__N_134LoadWhitelistsOnBlockingPoolThreadE12ScopedVectorI19ManagedModeSiteListE
}
{
   bug_195160_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN4base26PostTaskAndReplyWithResultI10scoped_ptrIN20ManagedModeURLFilter8ContentsENS_14DefaultDeleterIS3_EEES6_EEbPNS_10TaskRunnerERKN15tracked_objects8LocationERKNS_8CallbackIFT_vEEERKNSD_IFvT0_EEE
   fun:_ZN20ManagedModeURLFilter14LoadWhitelistsE12ScopedVectorI19ManagedModeSiteListE
}
{
   bug_222876
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN21WebDataServiceWrapperC1EP7Profile
   fun:_ZNK21WebDataServiceFactory23BuildServiceInstanceForEPN7content14BrowserContextE
   fun:_ZN33BrowserContextKeyedServiceFactory27GetServiceForBrowserContextEPN7content14BrowserContextEb
   fun:_ZN21WebDataServiceFactory13GetForProfileEP7ProfileNS0_17ServiceAccessTypeE
   ...
   fun:_ZN12TokenService10InitializeEPKcP7Profile
}
{
   bug_222883
   Memcheck:Uninitialized
   fun:_ZN2v88internal15ScavengeVisitor15ScavengePointerEPPNS0_6Object*
   fun:_ZN2v88internal15ScavengeVisitor13VisitPointersEPPNS0_6ObjectES4_
   fun:_ZNK2v88internal13StandardFrame18IterateExpressionsEPNS0_13ObjectVisitorE
   ...
   fun:_ZN2v88internal4Heap8ScavengeEv
   fun:_ZN2v88internal4Heap24PerformGarbageCollectionENS0_16GarbageCollector*
}
{
   bug_225028
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN31SafeBrowsingDatabaseFactoryImpl26CreateSafeBrowsingDatabaseEbbbb
   fun:_ZN20SafeBrowsingDatabase6CreateEbbbb
   fun:_ZN27SafeBrowsingDatabaseManager11GetDatabaseEv
}
{
   bug_226254
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMN10extensions16UserScriptMaster14ScriptReloader*
   fun:_ZN10extensions16UserScriptMaster14ScriptReloader9StartLoad*
   fun:_ZN10extensions16UserScriptMaster9StartLoadEv
   fun:_ZN10extensions16UserScriptMaster7ObserveEiRKN7content18NotificationSourceERKNS1_19NotificationDetailsE
}
{
   bug_234845
   Memcheck:Leak
   fun:malloc
   fun:PORT_Alloc_Util
   fun:pk11_CreateSymKey
   fun:PK11_KeyGenWithTemplate
   fun:pk11_TokenKeyGenWithFlagsAndKeyType
   fun:pk11_RawPBEKeyGenWithKeyType
   fun:PK11_PBEKeyGen
   fun:PK11_ExportEncryptedPrivKeyInfo
   fun:_ZN6crypto12ECPrivateKey25ExportEncryptedPrivateKeyERKSsiPSt6vectorIhSaIhEE
}
{
   bug_235584
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4Bind*
   fun:_ZN3net18SSLClientSocketNSS4Core21OnHandshakeIOCompleteEi
   fun:_ZN3net18SSLClientSocketNSS4Core28OnGetDomainBoundCertCompleteEi
}
{
   bug_236791
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3ash4test53FocusCyclerTest_CycleFocusThroughWindowWithPanes_Test8TestBodyEv
}
{
   bug_239141
   Memcheck:Leak
   fun:malloc
   ...
   fun:_ZN3WTF9BitVector13OutOfLineBits6createEm
   fun:_ZN3WTF9BitVector15resizeOutOfLineEm
   fun:_ZN3WTF9BitVector10ensureSizeEm
   fun:_ZN3WTF9BitVectorC*
   fun:_ZN5blink10UseCounter17recordMeasurementENS0_7FeatureE
}
{
   bug_242672
   Memcheck:Leak
   fun:malloc
   ...
   fun:_ZN3WTF9BitVector13OutOfLineBits6createEm
   fun:_ZN3WTF9BitVector15resizeOutOfLineEm
   fun:_ZN3WTF9BitVector10ensureSizeEm
   fun:_ZN5blink10UseCounterC1Ev
   fun:_ZN5blink4PageC1ERNS0_11PageClientsE
}
{
   bug_245714
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content17WorkerServiceImplC1Ev
   fun:_ZN22DefaultSingletonTraitsIN7content17WorkerServiceImplEE3NewEv
   fun:_ZN9SingletonIN7content17WorkerServiceImplE22DefaultSingletonTraitsIS1_ES1_E3getEv
   fun:_ZN7content17WorkerServiceImpl11GetInstanceEv
   fun:_ZN7content19WorkerMessageFilter16OnChannelClosingEv
   fun:_ZN3IPC12ChannelProxy7Context15OnChannelClosedEv
}
{
   bug_245714b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content17WorkerServiceImplC1Ev
   fun:_ZN22DefaultSingletonTraitsIN7content17WorkerServiceImplEE3NewEv
   fun:_ZN9SingletonIN7content17WorkerServiceImplE22DefaultSingletonTraitsIS1_ES1_E3getEv
   fun:_ZN7content17WorkerServiceImpl11GetInstanceEv
   fun:_ZN7content22ResourceRequestDetailsC1EPKN3net10URLRequestEi
   fun:_ZN7content26ResourceDispatcherHostImpl18DidReceiveResponseEPNS_14ResourceLoaderE
   fun:_ZN7content14ResourceLoader23CompleteResponseStartedEv
   fun:_ZN7content14ResourceLoader17OnResponseStartedEPN3net10URLRequestE
   fun:_ZN3net10URLRequest21NotifyResponseStartedEv
}
{
   bug_245714c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content17WorkerServiceImplC1Ev
   fun:_ZN22DefaultSingletonTraitsIN7content17WorkerServiceImplEE3NewEv
   fun:_ZN9SingletonIN7content17WorkerServiceImplE22DefaultSingletonTraitsIS1_ES1_E3getEv
   fun:_ZN7content17WorkerServiceImpl11GetInstanceEv
   fun:_ZN7content22ResourceRequestDetailsC1EPKN3net10URLRequestEi
   fun:_ZN7content23ResourceRedirectDetailsC1EPKN3net10URLRequestEiRK4GURL
   fun:_ZN7content26ResourceDispatcherHostImpl18DidReceiveRedirectEPNS_14ResourceLoaderERK4GURL
   fun:_ZN7content14ResourceLoader18OnReceivedRedirectEPN3net10URLRequestERK4GURLPb
   fun:_ZN3net10URLRequest22NotifyReceivedRedirectERK4GURLPb
   fun:_ZN3net13URLRequestJob21NotifyHeadersCompleteEv
   fun:_ZN3net17URLRequestHttpJob21NotifyHeadersCompleteEv
   fun:_ZN3net17URLRequestHttpJob14SaveNextCookieEv
   fun:_ZN3net17URLRequestHttpJob35SaveCookiesAndNotifyHeadersCompleteEi
   fun:_ZN3net17URLRequestHttpJob16OnStartCompletedEi
}
{
   bug_245828
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN7content13BrowserThread16PostTaskAndReplyENS0_2IDERKN15tracked_objects8LocationERKN4base8CallbackIFvvEEESB_
}
{
   bug_245866
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base23EnsureProcessTerminatedEi
   fun:_ZN7content6Zygote17HandleReapRequestEiRK6Pickle14PickleIterator
   fun:_ZN7content6Zygote24HandleRequestFromBrowserEi
   fun:_ZN7content6Zygote15ProcessRequestsEv
   fun:_ZN7content10ZygoteMainERKNS_18MainFunctionParamsEPNS_18ZygoteForkDelegateE
   fun:_ZN7content9RunZygoteERKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl3RunEv
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
}
{
   bug_250529_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN14TestingProfile20CreateRequestContextEv
   fun:_ZN12_GLOBAL__N_130ProfileSyncServiceTypedUrlTest5SetUpEv
}
{
   bug_250529_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN14TestingProfile20CreateRequestContextEv
   fun:_ZN30ProfileSyncServicePasswordTest5SetUpEv
}
{
   bug_250533_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net18HttpNetworkSessionC1ERKNS0_6ParamsE
   fun:_ZN11jingle_glue26ProxyResolvingClientSocketC1EPN3net19ClientSocketFactoryERK13scoped_refptrINS1_23URLRequestContextGetterEERKNS1_9SSLConfigERKNS1_12HostPortPairE
   fun:_ZN11jingle_glue23XmppClientSocketFactory27CreateTransportClientSocketERKN3net12HostPortPairE
   fun:_ZN11jingle_glue17ChromeAsyncSocket7ConnectERKN9talk_base13SocketAddressE
}
{
   bug_251004_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN3net10FileStream7Context14CloseAndDeleteEv
}
{
   bug_251034
   Memcheck:Leak
   ...
   fun:_ZN3gpu5gles216ShaderTranslator4InitE12ShShaderType12ShShaderSpecPK18ShBuiltInResourcesNS0_25ShaderTranslatorInterface22GlslImplementationTypeENS7_27GlslBuiltInFunctionBehaviorE
   fun:_ZN3gpu5gles221ShaderTranslatorCache13GetTranslatorE12ShShaderType12ShShaderSpecPK18ShBuiltInResourcesNS0_25ShaderTranslatorInterface22GlslImplementationTypeENS7_27GlslBuiltInFunctionBehaviorE
   fun:_ZN3gpu5gles216GLES2DecoderImpl26InitializeShaderTranslatorEv
   fun:_ZN3gpu5gles216GLES2DecoderImpl10InitializeERK13scoped_refptrIN3gfx9GLSurfaceEERKS2_INS3_9GLContextEEbRKNS3_4SizeERKNS0_18DisallowedFeaturesEPKcRKSt6vectorIiSaIiEE
   fun:_ZN3gpu22InProcessCommandBuffer21InitializeOnGpuThreadEbmRKN3gfx4SizeEPKcRKSt6vectorIiSaIiEENS1_13GpuPreferenceE
}
{
   bug_252054
   Memcheck:Unaddressable
   fun:_ZNK7blink32PlatformSpeechSynthesisUtterance6clientEv
   fun:_ZN5blink15SpeechSynthesis17didFinishSpeakingEN3WTF10PassRefPtrINS_32PlatformSpeechSynthesisUtteranceEEE
   fun:_ZN5blink29PlatformSpeechSynthesizerMock16speakingFinishedEPNS_5TimerIS0_EE
   fun:_ZN5blink5TimerINS_29PlatformSpeechSynthesizerMockEE5firedEv
   fun:_ZN5blink12ThreadTimers24sharedTimerFiredInternalEv
   fun:_ZN5blink12ThreadTimers16sharedTimerFiredEv
   fun:_ZN11webkit_glue25WebKitPlatformSupportImpl9DoTimeoutEv
}
{
   bug_252036
   Memcheck:Uninitialized
   fun:_ZN2cc9Scheduler27SetupNextBeginFrameIfNeededEv
   fun:_ZN2cc9Scheduler23ProcessScheduledActionsEv
}
{
   bug_252241_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7content20WebKitTestController20PrepareForLayoutTestERK4GURLRKN4base8FilePathEbRKSs
   fun:_Z16ShellBrowserMainRKN7content18MainFunctionParams*
   fun:_ZN7content17ShellMainDelegate10RunProcessERKSsRKNS_18MainFunctionParamsE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl3RunEv
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
}
{
   bug_252241_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content19ContentMainDelegate26CreateContentUtilityClientEv
   fun:_ZN7content24ContentClientInitializer3SetERKSsPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl10InitializeEiPPKcPNS_19ContentMainDelegateE
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
}
{
   bug_252641_a
   Memcheck:Uninitialized
   fun:pthread_rwlock_init$UNIX2003
   fun:_ZN3re25MutexC2Ev
   fun:_ZN3re25MutexC1Ev
   ...
   fun:_ZN11leveldb_env19ParseMethodAndErrorEPKcPNS_8MethodIDEPi
}
{
   bug_252641_b
   Memcheck:Uninitialized
   fun:pthread_rwlock_init$UNIX2003
   fun:_ZN3re25MutexC2Ev
   fun:_ZN3re25MutexC1Ev
   ...
   fun:_ZN3gpu12_GLOBAL__N_114StringMismatchERKSsS2_
}
{
   bug_258132a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5ppapi5proxy15PPP_Class_Proxy19CreateProxiedObjectEPK18PPB_Var_DeprecatedPNS0_10DispatcherEill
   fun:_ZN5ppapi5proxy24PPB_Var_Deprecated_Proxy27OnMsgCreateObjectDeprecatedEillNS0_24SerializedVarReturnValueE
}
{
   bug_258132b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5ppapi5proxy26PluginProxyMultiThreadTest7RunTestEv
   fun:_ZN5ppapi*ThreadAwareCallback*Test_*
}
{
   bug_259357d
   Memcheck:Uninitialized
   ...
   fun:_ZN3gpu5gles239ShaderTranslatorTest_OptionsString_Test8TestBodyEv
}
{
   bug_259357f
   Memcheck:Uninitialized
   fun:_ZNK3gpu12AsyncAPIMock6IsArgsclEPKv
   fun:_ZNK7testing8internal12TrulyMatcherIN3gpu12AsyncAPIMock6IsArgsEE15MatchAndExplainIPKvEEbRT_PNS_19MatchResultListenerE
   fun:_ZNK7testing18PolymorphicMatcherINS_8internal12TrulyMatcherIN3gpu12AsyncAPIMock6IsArgsEEEE15MonomorphicImplIPKvE15MatchAndExplainESA_PNS_19MatchResultListenerE
   fun:_ZNK7testing8internal11MatcherBaseIPKvE15MatchAndExplainES3_PNS_19MatchResultListenerE
   fun:_ZNK7testing8internal11MatcherBaseIPKvE7MatchesES3_
   fun:_ZN7testing8internal11TuplePrefixILm3EE7MatchesINSt3tr15tupleIINS_7MatcherIjEES7_NS6_IPKvEEEEENS5_IIjjS9_EEEEEbRKT_RKT0_
   fun:_ZN7testing8internal12TupleMatchesINSt3tr15tupleIINS_7MatcherIjEES5_NS4_IPKvEEEEENS3_IIjjS7_EEEEEbRKT_RKT0_
   fun:_ZNK7testing8internal16TypedExpectationIFN3gpu5error5ErrorEjjPKvEE7MatchesERKNSt3tr15tupleIIjjS6_EEE
   fun:_ZNK7testing8internal16TypedExpectationIFN3gpu5error5ErrorEjjPKvEE21ShouldHandleArgumentsERKNSt3tr15tupleIIjjS6_EEE
   fun:_ZNK7testing8internal18FunctionMockerBaseIFN3gpu5error5ErrorEjjPKvEE29FindMatchingExpectationLockedERKNSt3tr15tupleIIjjS6_EEE
   fun:_ZN7testing8internal18FunctionMockerBaseIFN3gpu5error5ErrorEjjPKvEE30UntypedFindMatchingExpectationES6_PS6_PbPSoSB_
   fun:_ZN7testing8internal25UntypedFunctionMockerBase17UntypedInvokeWithEPKv
   fun:_ZN7testing8internal18FunctionMockerBaseIFN3gpu5error5ErrorEjjPKvEE10InvokeWithERKNSt3tr15tupleIIjjS6_EEE
   fun:_ZN7testing8internal14FunctionMockerIFN3gpu5error5ErrorEjjPKvEE6InvokeEjjS6_
   fun:_ZN3gpu12AsyncAPIMock9DoCommandEjjPKv
   fun:_ZN3gpu13CommandParser14ProcessCommandEv
   fun:_ZN3gpu12GpuScheduler10PutChangedEv
}
{
   bug_259789b
   Memcheck:Uninitialized
   fun:_ZN5blink12_GLOBAL__N_116adjustAttributesERKNS_17GraphicsContext3D10AttributesEPNS_8SettingsE
   fun:_ZN5blink21WebGLRenderingContext6createEPNS_17HTMLCanvasElementEPNS_22WebGLContextAttributesE
   fun:_ZN5blink17HTMLCanvasElement10getContextERKN3WTF6StringEPNS_23CanvasContextAttributesE
}
{
   bug_273398
   Memcheck:Leak
   ...
   fun:_ZN6Pickle6ResizeEm
   fun:_ZN6PickleC1Ev
   fun:_ZN7content14ZygoteHostImpl20GetTerminationStatusEibPi
   fun:_ZN7content20ChildProcessLauncher25GetChildTerminationStatusEbPi
}
{
   bug_288804
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKN3net12HostPortPairESt3mapINS3_15SpdySettingsIdsES2_INS3_17SpdySettingsFlagsEjESt4lessIS7_ESaIS2_IKS7_S9_EEEEEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeIN3net12HostPortPairESt4pairIKS1_St3mapINS0_15SpdySettingsIdsES2_INS0_17SpdySettingsFlagsEjESt4lessIS5_ESaIS2_IKS5_S7_EEEESt10_Select1stISE_ES8_IS1_ESaISE_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeIN3net12HostPortPairESt4pairIKS1_St3mapINS0_15SpdySettingsIdsES2_INS0_17SpdySettingsFlagsEjESt4lessIS5_ESaIS2_IKS5_S7_EEEESt10_Select1stISE_ES8_IS1_ESaISE_EE14_M_create_nodeERKSE_
   fun:_ZNSt8_Rb_treeIN3net12HostPortPairESt4pairIKS1_St3mapINS0_15SpdySettingsIdsES2_INS0_17SpdySettingsFlagsEjESt4lessIS5_ESaIS2_IKS5_S7_EEEESt10_Select1stISE_ES8_IS1_ESaISE_EE13_M_clone_nodeEPKSt13_Rb_tree_nodeISE_E
   fun:_ZNSt8_Rb_treeIN3net12HostPortPairESt4pairIKS1_St3mapINS0_15SpdySettingsIdsES2_INS0_17SpdySettingsFlagsEjESt4lessIS5_ESaIS2_IKS5_S7_EEEESt10_Select1stISE_ES8_IS1_ESaISE_EE7_M_copyEPKSt13_Rb_tree_nodeISE_EPSL_
   fun:_ZNSt8_Rb_treeIN3net12HostPortPairESt4pairIKS1_St3mapINS0_15SpdySettingsIdsES2_INS0_17SpdySettingsFlagsEjESt4lessIS5_ESaIS2_IKS5_S7_EEEESt10_Select1stISE_ES8_IS1_ESaISE_EEaSERKSJ_
   fun:_ZNSt3mapIN3net12HostPortPairES_INS0_15SpdySettingsIdsESt4pairINS0_17SpdySettingsFlagsEjESt4lessIS2_ESaIS3_IKS2_S5_EEES6_IS1_ESaIS3_IKS1_SB_EEEaSERKSG_
   fun:_ZN18chrome_browser_net27HttpServerPropertiesManager24UpdatePrefsFromCacheOnIOERKN4base8CallbackIFvvEEE
   fun:_ZN18chrome_browser_net27HttpServerPropertiesManager24UpdatePrefsFromCacheOnIOEv
}
{
   bug_290407
   Memcheck:Leak
   fun:calloc
   fun:_swrast_new_soft_renderbuffer
   fun:_mesa_BindRenderbufferEXT
   fun:shared_dispatch_stub_939
   fun:_ZN3gfx9GLApiBase23glBindRenderbufferEXTFnEjj
   fun:_ZN3gpu5gles216GLES2DecoderImpl18DoBindRenderbufferEjj
}
{
   bug_293024_b
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF24ThreadSafeRefCountedBasenwEm
   fun:_ZN5blink12_GLOBAL__N_131AllowFileSystemMainThreadBridge6createEPN7blink17WorkerGlobalScopeEPNS_13WebWorkerBaseERKN3WTF6StringE
   fun:_ZN5blink22WorkerFileSystemClient15allowFileSystem*
   ...
   fun:_ZN2v88internal25FunctionCallbackArguments4CallEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEE
}
{
   bug_298143
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink25TypeConversionsV8Internal*AttributeGetterE*
}
{
   bug_298788
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN10extensions19TestExtensionSystem22CreateExtensionServiceEPKN4base11CommandLineERKNS1_8FilePathEb
   fun:_ZN10extensions12_GLOBAL__N_130ExtensionActionIconFactoryTest5SetUpEv
}
{
   bug_299804
   Memcheck:Uninitialized
   fun:_ZN24GrConfigConversionEffect30TestForPreservingPMConversionsEP9GrContextPNS_12PMConversionES3_
   fun:_ZN12_GLOBAL__N_119test_pm_conversionsEP9GrContextPiS2_
   fun:_ZN9GrContext19createPMToUPMEffectEP9GrTexturebRK8SkMatrix
   fun:_ZN9GrContext22readRenderTargetPixelsEP14GrRenderTargetiiii13GrPixelConfigPvmj
   fun:_ZN11SkGpuDevice12onReadPixelsE*
   fun:_ZN12SkBaseDevice10readPixelsE*
   fun:_ZN8SkCanvas10readPixelsE*
   fun:_ZN*DeferredDevice12onReadPixelsE*
   fun:_ZN12SkBaseDevice10readPixelsE*
   fun:_ZN8SkCanvas10readPixelsE*
   fun:_ZN5blink15GraphicsContext10readPixelsE*
   ...
   fun:_ZN*blink24CanvasRenderingContext2D12getImageDataE*
   ...
   fun:_ZN5blink34CanvasRenderingContext2DV8InternalL18getImageDataMethodERKN2v820FunctionCallbackInfoINS1_5ValueEEE
   fun:_ZN5blink34CanvasRenderingContext2DV8InternalL26getImageDataMethodCallbackERKN2v820FunctionCallbackInfoINS1_5ValueEEE
}
{
   bug_309477
   Memcheck:Uninitialized
   fun:_ZN13WebTestRunner11EventSender5resetEv
   fun:_ZN13WebTestRunner14TestInterfaces26resetTestHelperControllersEv
   fun:_ZN13WebTestRunner14TestInterfaces8resetAllEv
   ...
   fun:_ZN7content26ShellRenderProcessObserver17WebKitInitializedEv
   fun:_ZN7content16RenderThreadImpl23EnsureWebKitInitializedEv
   fun:_ZN7content16RenderThreadImpl15OnCreateNewViewERK18ViewMsg_New_Params
}
{
   bug_317166
   Memcheck:Leak
   fun:malloc
   fun:_dl_close_worker
   fun:_dl_close
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlclose
   obj:/usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
   fun:snd_config_searcha_hooks
   fun:snd_config_searchva_hooks
   obj:/usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
   fun:snd_config_search_definition
   obj:/usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
   fun:_ZN5media11AlsaWrapper7PcmOpenEPP8_snd_pcmPKc15_snd_pcm_streami
   fun:_ZN9alsa_utilL10OpenDeviceEPN5media11AlsaWrapperEPKc15_snd_pcm_streamii15_snd_pcm_formati
   fun:_ZN9alsa_util18OpenPlaybackDeviceEPN5media11AlsaWrapperEPKcii15_snd_pcm_formati
   fun:_ZN5media19AlsaPcmOutputStream16AutoSelectDeviceEj
   fun:_ZN5media19AlsaPcmOutputStream4OpenEv
   fun:_ZN5media25AudioOutputDispatcherImpl19CreateAndOpenStreamEv
   fun:_ZN5media25AudioOutputDispatcherImpl10OpenStreamEv
   fun:_ZN5media20AudioOutputResampler10OpenStreamEv
   fun:_ZN5media16AudioOutputProxy4OpenEv
   fun:_ZN5media18AudioStreamHandler20AudioStreamContainer4PlayEv
}
{
   bug_318221
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base23EnsureProcessTerminatedEi
}
{
   bug_321976
   Memcheck:Leak
   ...
   fun:nssList_Create
   fun:nssTrustDomain_UpdateCachedTokenCerts
}
{
   bug_331925
   Memcheck:Leak
   ...
   fun:_ZN3net27TestURLRequestContextGetter20GetURLRequestContextEv
   fun:_ZN3net14URLFetcherCore30StartURLRequestWhenAppropriateEv
   fun:_ZN3net14URLFetcherCore19DidInitializeWriterEi
   fun:_ZN3net14URLFetcherCore15StartOnIOThreadEv
}
{
   bug_332330
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN5blink8ResourcenwEm
   fun:_ZN5blinkL14createResourceENS_8Resource4TypeERKNS_15ResourceRequestERKN3WTF6StringE
   fun:_ZN5blink15ResourceFetcher12loadResourceENS_8Resource4TypeERNS_12FetchRequestERKN3WTF6StringE
   fun:_ZN5blink15ResourceFetcher15requestResourceENS_8Resource4TypeERNS_12FetchRequestE
   fun:_ZN5blink15ResourceFetcher16fetchRawResourceERNS_12FetchRequestE
   fun:_ZN5blink24DocumentThreadableLoader11loadRequestERKNS_15ResourceRequestENS_19SecurityCheckPolicyE
}
{
   bug_340952
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blink15DOMWrapperWorldC2Eii
   fun:_ZN5blink15DOMWrapperWorldC1Eii
   fun:_ZN5blink15DOMWrapperWorld6createEii
   fun:_ZN5blink15DOMWrapperWorld9mainWorldEv
   ...
   fun:_ZN7content22BufferedDataSourceTestC2Ev
}
{
   bug_340752
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink4Heap19checkAndMarkPointerEPNS_7VisitorEPh
   fun:_ZN5blink11ThreadState10visitStackEPNS_7VisitorE
   ...
   fun:_ZN5blink4Heap14collectGarbageENS_11ThreadState10StackState*
}
{
   bug_342591
   Memcheck:Param
   write(buf)
   obj:*libpthread*
   fun:_ZN3IPC7Channel11ChannelImpl23ProcessOutgoingMessagesEv
   fun:_ZN3IPC7Channel11ChannelImpl4SendEPNS_7MessageE
   fun:_ZN3IPC7Channel4SendEPNS_7MessageE
   fun:_ZN3IPC12ChannelProxy7Context13OnSendMessageE10scoped_ptrINS_7MessageEN4base14DefaultDeleterIS3_EEE
}
{
   bug_345432
   Memcheck:Leak
   ...
   fun:_ZN7content14GpuChannelHost7ConnectERKN3IPC13ChannelHandle*
   fun:_ZN7content14GpuChannelHost6CreateEPNS_21GpuChannelHostFactoryERKN3gpu7GPUInfoERKN3IPC13ChannelHandle*
   fun:_ZN7content28BrowserGpuChannelHostFactory21GpuChannelEstablishedEv
   fun:_ZN7content28BrowserGpuChannelHostFactory16EstablishRequest12FinishOnMainEv
   fun:_ZN7content28BrowserGpuChannelHostFactory16EstablishRequest4WaitEv
}
{
   bug_346336_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content16SiteInstanceImpl10GetProcessEv
   fun:_ZN7content22RenderFrameHostManager21CreateRenderFrameHostEPNS_12SiteInstanceEiibb
   fun:_ZN7content22RenderFrameHostManager4InitEPNS_14BrowserContextEPNS_12SiteInstanceEii
   fun:_ZN7content15WebContentsImpl4InitERKNS_11WebContents12CreateParamsE
   fun:_ZN7content15WebContentsImpl16CreateWithOpenerERKNS_11WebContents12CreateParamsEPS0_
   fun:_ZN7content11WebContents6CreateERKNS0_12CreateParamsE
   fun:_ZN7content5Shell15CreateNewWindowEPNS_14BrowserContextERK4GURLPNS_12SiteInstanceEiRKN3gfx4SizeE
   fun:_ZN7content20WebKitTestController20PrepareForLayoutTestERK4GURLRKN4base8FilePathEbRKSs
   fun:_ZN12_GLOBAL__N_110RunOneTestERKSsPbRK10scoped_ptrIN7content17BrowserMainRunnerEN4base14DefaultDeleterIS5_EEE
   fun:_Z16ShellBrowserMainRKN7content18MainFunctionParamsERK10scoped_ptrINS_17BrowserMainRunnerEN4base14DefaultDeleterIS4_EEE
   fun:_ZN7content17ShellMainDelegate10RunProcessERKSsRKNS_18MainFunctionParamsE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl3RunEv
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
}
{
   bug_347683
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK13LoginDatabase9GetLoginsERKN8autofill12PasswordFormEPSt6vectorIPS1_SaIS5_EE
   fun:_ZN50LoginDatabaseTest_UpdateIncompleteCredentials_Test8TestBodyEv
}
{
   bug_347967
   Memcheck:Uninitialized
   fun:unpack_RGB*888
   fun:_mesa_unpack_rgba_row
   fun:slow_read_rgba_pixels
   fun:read_rgba_pixels
   fun:_mesa_readpixels
   ...
   fun:shared_dispatch_stub_*
   ...
   fun:*gpu*gles*GLES2DecoderImpl*DoCommand*
   fun:*gpu*CommandParser*ProcessCommand*
   fun:*gpu*GpuScheduler*PutChanged*
}
{
   bug_348863
   Memcheck:Unaddressable
   fun:_ZNK7blink32PlatformSpeechSynthesisUtterance6clientEv
   fun:_ZN5blink15SpeechSynthesis17didFinishSpeakingEN3WTF10PassRefPtrINS_32PlatformSpeechSynthesisUtteranceEEE
   fun:_ZN5blink29PlatformSpeechSynthesizerMock16speakingFinishedEPNS_5TimerIS0_EE
   fun:_ZN5blink5TimerINS_29PlatformSpeechSynthesizerMockEE5firedEv
   fun:_ZN5blink12ThreadTimers24sharedTimerFiredInternalEv
   fun:_ZN5blink12ThreadTimers16sharedTimerFiredEv
   fun:_ZN7content17BlinkPlatformImpl9DoTimeoutEv
}
{
   bug_350809
   Memcheck:Uninitialized
   fun:_ZN5blink23ReplaceSelectionCommand7doApplyEv
   fun:_ZN5blink20CompositeEditCommand5applyEv
   fun:_ZN5blink6Editor28replaceSelectionWithFragmentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbb
   fun:_ZN5blink6Editor24replaceSelectionWithTextERKN3WTF6StringEbb
}
{
  bug_361594
  Memcheck:Uninitialized
  ...
  fun:*SkA8_Shader_Blitter*blitH*
  ...
  fun:*content*ScreenshotData*EncodeOnWorker*
}
{
  bug_363819
  Memcheck:Uninitialized
  fun:strlen
  fun:*
  fun:_ZN3net12_GLOBAL__N_114TestHttpClient4ReadEPSs
  fun:_ZN3net*HttpServerTest*
}
{
  bug_364274
  Memcheck:Uninitialized
  fun:_ZN5blink21RenderLayerCompositor14updateIfNeededEv
}
{
   bug_364724
   Memcheck:Param
   write(buf)
   obj:/lib/x86_64-linux-gnu/libpthread-2.15.so
   fun:_ZN3IPC12ChannelPosix23ProcessOutgoingMessagesEv
   fun:_ZN3IPC12ChannelPosix29OnFileCanWriteWithoutBlockingEi
   ...
   fun:_ZN4base19MessagePumpLibevent21FileDescriptorWatcher29OnFileCanWriteWithoutBlockingEiPS0_
   ...
   fun:event_process_active
   fun:event_base_loop
}
{
   bug_364724b
   Memcheck:Uninitialized
   fun:_ZN4base17MD5DigestToBase16ERKNS_9MD5DigestE
   fun:_ZN7content16WebKitTestRunner17CaptureDumpPixelsERK8SkBitmap
}
{
   bug_364724c
   Memcheck:Param
   write(buf)
   obj:/lib/x86_64-linux-gnu/libpthread-2.15.so
   fun:_ZN3IPC12ChannelPosix23ProcessOutgoingMessagesEv
   fun:_ZN3IPC12ChannelPosix4SendEPNS_7MessageE
   fun:_ZN3IPC12ChannelProxy7Context13OnSendMessageE10scoped_ptrINS_7MessageEN4base14DefaultDeleterIS3_EEE
}
{
   bug_364821
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN5blink11ScriptStateEEnwEm
   fun:_ZN5blink11ScriptState6createEN2v86HandleINS1_7ContextEEEN3WTF10PassRefPtrINS_15DOMWrapperWorldEEE
   ...
   fun:_ZN3WTF15FunctionWrapperIMN5blink12WorkerThreadEFvvEEclEPS2_
}
{
   bug_365258
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN5blink8ResourcenwEm
   fun:_ZN5blinkL14createResourceENS_8Resource4TypeERKNS_15ResourceRequestERKN3WTF6StringE
   fun:_ZN5blink15ResourceFetcher18revalidateResourceERKNS_12FetchRequestEPNS_8ResourceE
   fun:_ZN5blink15ResourceFetcher15requestResourceENS_8Resource4TypeERNS_12FetchRequestE
   fun:_ZN5blink15ResourceFetcher11fetchScriptERNS_12FetchRequestE
   fun:_ZN5blink12ScriptLoader11fetchScriptERKN3WTF6StringE
   fun:_ZN5blink12ScriptLoader13prepareScriptERKN3WTF12TextPositionENS0_17LegacyTypeSupportE
   fun:_ZN5blink16HTMLScriptRunner9runScriptEPNS_7ElementERKN3WTF12TextPositionE
   fun:_ZN5blink16HTMLScriptRunner7executeEN3WTF10PassRefPtrINS_7ElementEEERKNS1_12TextPositionE
   fun:_ZN5blink18HTMLDocumentParser30runScriptsForPausedTreeBuilderEv
   fun:_ZN5blink18HTMLDocumentParser38processParsedChunkFromBackgroundParserEN3WTF10PassOwnPtrINS0_11ParsedChunkEEE
   fun:_ZN5blink18HTMLDocumentParser23pumpPendingSpeculationsEv
   fun:_ZN5blink18HTMLDocumentParser41didReceiveParsedChunkFromBackgroundParserEN3WTF10PassOwnPtrINS0_11ParsedChunkEEE
   fun:_ZN3WTF15FunctionWrapperIMN7blink18HTMLDocumentParserEFvNS_10PassOwnPtrINS2_11ParsedChunkEEEEEclERKNS_7WeakPtrIS2_EES5_
   fun:_ZN3WTF17BoundFunctionImplINS_15FunctionWrapperIMN7blink18HTMLDocumentParserEFvNS_10PassOwnPtrINS3_11ParsedChunkEEEEEEFvNS_7WeakPtrIS3_EES6_EEclEv
   fun:_ZNK3WTF8FunctionIFvvEEclEv
   fun:_ZN3WTFL18callFunctionObjectEPv
}
{
   bug_367809_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4mojo6common13HandleWatcher5StartERKNS_6HandleEjmRKN4base8CallbackIFviEEE
   fun:_ZN4mojo8internal12_GLOBAL__N_19AsyncWaitEP15MojoAsyncWaiterjjmPFvPviES4_
   fun:_ZN4mojo8internal9Connector14WaitToReadMoreEv
   fun:_ZN4mojo8internal9ConnectorC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN4mojo8internal6RouterC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN4mojo9RemotePtrINS_11ShellClientEE5StateC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEPNS_5ShellEPNS_12ErrorHandlerEP15MojoAsyncWaiter
   fun:_ZN4mojo9RemotePtrINS_11ShellClientEE5resetENS_16ScopedHandleBaseINS_15InterfaceHandleIS1_EEEEPNS_5ShellEPNS_12ErrorHandlerEP15MojoAsyncWaiter
   fun:_ZN7content19MojoApplicationHost4InitEv
}
{
   bug_367809_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4mojo8internal12_GLOBAL__N_19AsyncWaitEP15MojoAsyncWaiterjjmPFvPviES4_
   fun:_ZN4mojo8internal9Connector14WaitToReadMoreEv
   fun:_ZN4mojo8internal9ConnectorC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN4mojo8internal6RouterC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN4mojo9RemotePtrINS_11ShellClientEE5StateC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEPNS_5ShellEPNS_12ErrorHandlerEP15MojoAsyncWaiter
   fun:_ZN4mojo9RemotePtrINS_11ShellClientEE5resetENS_16ScopedHandleBaseINS_15InterfaceHandleIS1_EEEEPNS_5ShellEPNS_12ErrorHandlerEP15MojoAsyncWaiter
   fun:_ZN7content19MojoApplicationHost4InitEv
}
{
   bug_367809_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4mojo8internal10SharedDataIPNS0_6RouterEEC1ERKS3_
   fun:_ZN4mojo8internal6RouterC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN4mojo9RemotePtrINS_11ShellClientEE5StateC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEPNS_5ShellEPNS_12ErrorHandlerEP15MojoAsyncWaiter
   fun:_ZN4mojo9RemotePtrINS_11ShellClientEE5resetENS_16ScopedHandleBaseINS_15InterfaceHandleIS1_EEEEPNS_5ShellEPNS_12ErrorHandlerEP15MojoAsyncWaiter
   fun:_ZN7content19MojoApplicationHost4InitEv
}
{
   bug_367809_d
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7content21RenderProcessHostImpl4InitEv
   ...
   fun:_ZN7content5Shell7LoadURLERK4GURL
   fun:_ZN7content20WebKitTestController20PrepareForLayoutTestERK4GURLRKN4base8FilePathEbRKSs
   fun:_ZN12_GLOBAL__N_110RunOneTestERKSsPbRK10scoped_ptrIN7content17BrowserMainRunnerEN4base14DefaultDeleterIS5_EEE
}
{
   bug_369843
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content27ServiceWorkerContextWrapper12InitInternalE*
}
{
  bug_371844
  Memcheck:Uninitialized
  fun:bcmp
  fun:_ZNK7content15GamepadProvider8PadState5MatchERKN5blink10WebGamepadE
  fun:_ZN7content15GamepadProvider6DoPollEv
}
{
   bug_371860
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN8feedback16FeedbackDataTestC1Ev
   fun:_ZN8feedback*FeedbackDataTest*
   fun:_ZN7testing8internal15TestFactoryImplIN8feedback*
}
{
   bug_372487_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4mojo10BindToPipeIN7content19MojoApplicationHost9ShellImplEEEPT_S5_NS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN7content19MojoApplicationHost4InitEv
   fun:_ZN7content21RenderProcessHostImpl4InitEv
   fun:_ZN7content18RenderViewHostImpl16CreateRenderViewERKSbItN4base20string16_char_traitsESaItEEiib
   fun:_ZN7content15WebContentsImpl32CreateRenderViewForRenderManagerEPNS_14RenderViewHostEiPNS_26CrossProcessFrameConnectorE
   fun:_ZN7content22RenderFrameHostManager14InitRenderViewEPNS_14RenderViewHostEi
   fun:_ZN7content22RenderFrameHostManager8NavigateERKNS_19NavigationEntryImplE
   fun:_ZN7content13NavigatorImpl15NavigateToEntryEPNS_19RenderFrameHostImplERKNS_19NavigationEntryImplENS_20NavigationController10ReloadTypeE
   fun:_ZN7content13NavigatorImpl22NavigateToPendingEntryEPNS_19RenderFrameHostImplENS_20NavigationController10ReloadTypeE
   fun:_ZN7content15WebContentsImpl22NavigateToPendingEntryENS_20NavigationController10ReloadTypeE
   fun:_ZN7content24NavigationControllerImpl22NavigateToPendingEntryENS_20NavigationController10ReloadTypeE
   fun:_ZN7content24NavigationControllerImpl9LoadEntryEPNS_19NavigationEntryImplE
   fun:_ZN7content24NavigationControllerImpl17LoadURLWithParamsERKNS_20NavigationController13LoadURLParamsE
   fun:_ZN7content5Shell15LoadURLForFrameERK4GURLRKSs
   fun:_ZN7content5Shell7LoadURLERK4GURL
   fun:_ZN7content20WebKitTestController20PrepareForLayoutTestERK4GURLRKN4base8FilePathEbRKSs
   fun:_ZN12_GLOBAL__N_110RunOneTestERKSsPbRK10scoped_ptrIN7content17BrowserMainRunnerEN4base14DefaultDeleterIS5_EEE
   fun:_Z16ShellBrowserMainRKN7content18MainFunctionParamsERK10scoped_ptrINS_17BrowserMainRunnerEN4base14DefaultDeleterIS4_EEE
   fun:_ZN7content17ShellMainDelegate10RunProcessERKSsRKNS_18MainFunctionParamsE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
}
{
   bug_372487_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4mojo8internal6RouterC1ENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN4mojo8internal18InterfaceImplStateINS_5ShellEE4BindENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN4mojo10BindToPipeIN7content19MojoApplicationHost9ShellImplEEEPT_S5_NS_16ScopedHandleBaseINS_17MessagePipeHandleEEEP15MojoAsyncWaiter
   fun:_ZN7content19MojoApplicationHost4InitEv
   fun:_ZN7content21RenderProcessHostImpl4InitEv
   fun:_ZN7content18RenderViewHostImpl16CreateRenderViewERKSbItN4base20string16_char_traitsESaItEEiib
   fun:_ZN7content15WebContentsImpl32CreateRenderViewForRenderManagerEPNS_14RenderViewHostEiPNS_26CrossProcessFrameConnectorE
   fun:_ZN7content22RenderFrameHostManager14InitRenderViewEPNS_14RenderViewHostEi
   fun:_ZN7content22RenderFrameHostManager8NavigateERKNS_19NavigationEntryImplE
   fun:_ZN7content13NavigatorImpl15NavigateToEntryEPNS_19RenderFrameHostImplERKNS_19NavigationEntryImplENS_20NavigationController10ReloadTypeE
   fun:_ZN7content13NavigatorImpl22NavigateToPendingEntryEPNS_19RenderFrameHostImplENS_20NavigationController10ReloadTypeE
   fun:_ZN7content15WebContentsImpl22NavigateToPendingEntryENS_20NavigationController10ReloadTypeE
   fun:_ZN7content24NavigationControllerImpl22NavigateToPendingEntryENS_20NavigationController10ReloadTypeE
   fun:_ZN7content24NavigationControllerImpl9LoadEntryEPNS_19NavigationEntryImplE
   fun:_ZN7content24NavigationControllerImpl17LoadURLWithParamsERKNS_20NavigationController13LoadURLParamsE
   fun:_ZN7content5Shell15LoadURLForFrameERK4GURLRKSs
   fun:_ZN7content5Shell7LoadURLERK4GURL
}
{
   bug_379943
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7content20StoragePartitionImpl6CreateEPNS_14BrowserContextEbRKN4base8FilePathE
   fun:_ZN7content23StoragePartitionImplMap3GetERKSsS2_b
   fun:_ZN7content12_GLOBAL__N_129GetStoragePartitionFromConfigEPNS_14BrowserContext*
   fun:_ZN7content14BrowserContext19GetStoragePartitionEPS0_PNS_12SiteInstanceE
   fun:_ZN7content14BrowserContext26GetDefaultStoragePartitionEPS0_
   ...
   fun:_ZN7content21ShellBrowserMainParts21PreMainMessageLoopRunEv
   fun:_ZN7content15BrowserMainLoop21PreMainMessageLoopRunEv
}
{
   bug_380575
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsPN3net20URLRequestJobFactory15ProtocolHandlerEEEE8allocateEmPKv
   ...
   fun:_ZNSt3mapISsPN3net20URLRequestJobFactory15ProtocolHandlerESt4lessISsESaISt4pairIKSsS3_EEEixERS7_
   fun:_ZN3net24URLRequestJobFactoryImpl18SetProtocolHandlerERKSsPNS_20URLRequestJobFactory15ProtocolHandlerE
   ...
   fun:_ZN7content28ShellURLRequestContextGetter20GetURLRequestContextEv
}
{
   bug_381065
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN5blink18ModulesInitializer4initEv
   fun:_ZN5blink19initializeWithoutV8EPNS_8PlatformE
   fun:_ZN5blink10initializeEPNS_8PlatformE
   fun:_ZN7content27TestBlinkWebUnitTestSupportC2Ev
   fun:_ZN7content27TestBlinkWebUnitTestSupportC1Ev
   fun:_ZN7content17UnitTestTestSuiteC2EPN4base9TestSuiteE
   fun:_ZN7content17UnitTestTestSuiteC1EPN4base9TestSuiteE
}
{
   bug_381156
   Memcheck:Uninitialized
   ...
   fun:_ZN*14SkTDynamicHashI10SkFlatData*
   fun:_ZN16SkFlatDictionaryI7SkPaintNS0_16FlatteningTraitsEE24findAndReturnMutableFlatERKS0_
   fun:_ZN16SkFlatDictionaryI7SkPaintNS0_16FlatteningTraitsEE17findAndReturnFlatERKS0_
   fun:_ZN15SkPictureRecord16getFlatPaintDataERK7SkPaint
   fun:_ZN15SkPictureRecord11addPaintPtrEPK7SkPaint
   fun:_ZN15SkPictureRecord8addPaintERK7SkPaint
   fun:_ZN15SkPictureRecord8drawPathERK6SkPathRK7SkPaint
   fun:_ZN12SkBBoxRecord8drawPathERK6SkPathRK7SkPaint
   fun:_ZN5blink15GraphicsContext8drawPathERK6SkPathRK7SkPaint
   fun:_ZN5blink15GraphicsContext10strokePathERKNS_4PathE
   fun:_ZNK7blink14RenderSVGShape11strokeShapeEPNS_15GraphicsContextE
   fun:_ZNK7blink13RenderSVGPath11strokeShapeEPNS_15GraphicsContextE
   fun:_ZN5blink27RenderSVGResourceSolidColor17postApplyResourceEPNS_12RenderObjectERPNS_15GraphicsContextEtPKNS_4PathEPKNS_14RenderSVGShapeE
   fun:_ZN5blink14RenderSVGShape11strokeShapeEPNS_11RenderStyleEPNS_15GraphicsContextE
   fun:_ZN5blink14RenderSVGShape5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink9RenderBox5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink13RenderSVGRoot13paintReplacedERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink14RenderReplaced5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink11RenderBlock18paintAsInlineBlockEPNS_12RenderObjectERNS_9PaintInfoERKNS_11LayoutPointE
}
{
   bug_385381
   Memcheck:Unaddressable
   fun:_ZN5blink23FrameLoaderStateMachine9advanceToENS0_5StateE
   fun:_ZN5blink11FrameLoader4initEv
   fun:_ZN5blink10LocalFrame4initEv
   fun:_ZN5blink17WebLocalFrameImpl22initializeAsChildFrameEPN7blink9FrameHostEPNS1_10FrameOwnerERKN3WTF12AtomicStringES9_
   fun:_ZN5blink17WebLocalFrameImpl16createChildFrameERKN7blink16FrameLoadRequestEPNS1_21HTMLFrameOwnerElementE
}
{
   bug_385396a
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink11RenderLayer7hitTestERKNS_14HitTestRequestERKNS_15HitTestLocationERNS_13HitTestResultE
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERKNS_15HitTestLocationERNS_13HitTestResultE
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERNS_13HitTestResultE
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
}
{
   bug_385396b
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink11LayoutPointC*ERKNS_8IntPointE
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
}
{
   bug_385396c
   Memcheck:Uninitialized
   fun:_ZNK5blink7IntRect8containsEii
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
}
{
   bug_385396d
   Memcheck:Uninitialized
   fun:_ZNK7blink10LayoutUnit5floorEv
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
   fun:_ZN5blink18PageWidgetDelegate16handleInputEventEPN7blink4PageERNS_22PageWidgetEventHandlerERKNS_13WebInputEventE
}
{
   bug_385396e
   Memcheck:Uninitialized
   fun:_ZN5blink15roundedIntPointERKNS_11LayoutPointE
   fun:_ZNK5blink15HitTestLocation12roundedPointEv
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERKNS_15HitTestLocationERNS_13HitTestResultE
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERNS_13HitTestResultE
   fun:_ZN5blink12EventHandler20hitTestResultAtPointERKNS_11LayoutPointEjRKNS_10LayoutSizeE
   fun:_ZN5blink12EventHandler18targetGestureEventERKNS_20PlatformGestureEventEb
}
{
   bug_387435
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content16WebURLLoaderImplC1Ev
   fun:_ZN7content17BlinkPlatformImpl15createURLLoaderEv
   fun:_ZN5blink10PingLoaderC1EPNS_10LocalFrameERNS_15ResourceRequestERKNS_18FetchInitiatorInfoENS_17StoredCredentialsE
   fun:_ZN5blink10PingLoader5startEPNS_10LocalFrameERNS_15ResourceRequestERKNS_18FetchInitiatorInfoENS_17StoredCredentialsE
   fun:_ZN5blink10PingLoader9loadImageEPNS_10LocalFrameERKNS_4KURLE
   fun:_ZN5blink15ResourceFetcher10fetchImageERNS_12FetchRequestE
   fun:_ZN5blink11ImageLoader19doUpdateFromElementEb
   fun:_ZN5blink11ImageLoader4Task3runEv
}
{
   bug_386418
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10WorkerPool16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_b
   fun:_ZN3net16HostResolverImpl16LoopbackProbeJobC1ERKN4base7WeakPtrIS0_EE
   fun:_ZN3net16HostResolverImplC1ERKNS_12HostResolver7OptionsEPNS_6NetLogE
   fun:_ZN8chromeos24HostResolverImplChromeOSC1E13*
}
{
   bug_387993
   Memcheck:Uninitialized
   fun:_ZN11SkBaseMutex7acquireEv
   fun:_ZN18SkAutoMutexAcquireC2EP11SkBaseMutex
   fun:_ZN18SkAutoMutexAcquireC1EP11SkBaseMutex
   fun:_ZN12SkGlyphCache10VisitCacheEP10SkTypefacePK12SkDescriptorPFbPKS_PvES7_
   fun:_ZN12SkGlyphCache11DetachCacheEP10SkTypefacePK12SkDescriptor
   fun:_ZL14DetachDescProcP10SkTypefacePK12SkDescriptorPv
   fun:_ZNK7SkPaint14descriptorProcEPK18SkDevicePropertiesPK8SkMatrixPFvP10SkTypefacePK12SkDescriptorPvESB_b
   fun:_ZNK7SkPaint11detachCacheEPK18SkDevicePropertiesPK8SkMatrixb
   fun:_ZN16SkAutoGlyphCacheC2ERK7SkPaintPK18SkDevicePropertiesPK8SkMatrix
   fun:_ZN16SkAutoGlyphCacheC1ERK7SkPaintPK18SkDevicePropertiesPK8SkMatrix
}
{
   bug_388013
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blinkL33createInjectedScriptHostV8WrapperEPNS_18InjectedScriptHostEPN2v87IsolateE
   fun:_ZN5blink21InjectedScriptManager20createInjectedScriptERKN3WTF6StringEPNS_11ScriptStateEi
   fun:_ZN5blink21InjectedScriptManager17injectedScriptForEPNS_11ScriptStateE
   fun:_ZN5blink22InspectorDebuggerAgent17currentCallFramesEv
   fun:_ZN5blink22InspectorDebuggerAgent8didPauseEPNS_11ScriptStateERKNS_11ScriptValueES5_RKN3WTF6VectorINS6_6StringELm0ENS6_16DefaultAllocatorEEE
   ...
   fun:_ZN2v88internal5Debug17CallEventCallbackENS_10DebugEventENS0_6HandleINS0_6ObjectEEES5_PNS_5Debug10ClientDataE
   fun:_ZN2v88internal5Debug17ProcessDebugEventENS_10DebugEventENS0_6HandleINS0_8JSObjectEEEb
   fun:_ZN2v88internal5Debug12OnDebugBreakENS0_6HandleINS0_6ObjectEEEb
}
{
   bug_388013_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blinkL33createInjectedScriptHostV8WrapperEPNS_18InjectedScriptHostEPN2v87IsolateE
   fun:_ZN5blink21InjectedScriptManager20createInjectedScriptERKN3WTF6StringEPNS_11ScriptStateEi
   fun:_ZN5blink21InjectedScriptManager17injectedScriptForEPNS_11ScriptStateE
   fun:_ZN5blink18WorkerRuntimeAgent21injectedScriptForEvalEPN3WTF6StringEPKi
   fun:_ZN5blink21InspectorRuntimeAgent8evaluateEPN3WTF6String*
   fun:_ZThn32_N5blink21InspectorRuntimeAgent8evaluateEPN3WTF6String*
   fun:_ZN5blink30InspectorBackendDispatcherImpl16Runtime_evaluateElPNS_10JSONObjectEPNS_9JSONArrayE
   fun:_ZN5blink30InspectorBackendDispatcherImpl8dispatchERKN3WTF6StringE
   fun:_ZN5blink25WorkerInspectorController27dispatchMessageFromFrontendERKN3WTF6StringE
   fun:_ZN5blinkL30dispatchOnInspectorBackendTaskEPNS_16ExecutionContextERKN3WTF6StringE
}
{
   bug_388668
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN20data_reduction_proxy69DataReductionProxyUsageStatsTest_isDataReductionProxyUnreachable_Test8TestBodyEv
}
{
   bug_392912
   Memcheck:Uninitialized
   fun:_ZNK8SkStroke10strokePathERK6SkPathPS0_
   fun:_ZNK11SkStrokeRec11applyToPathEP6SkPathRKS0_
   fun:_ZNK7SkPaint11getFillPathERK6SkPathPS0_PK6SkRect
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixbb
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixb
   fun:_ZN14SkBitmapDevice8drawPathERK6SkDrawRK6SkPathRK7SkPaintPK8SkMatrixb
   fun:_ZN8SkCanvas8drawPathERK6SkPathRK7SkPaint
}
{
   bug_392936
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10WorkerPool16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_b
   fun:_ZN3net16HostResolverImpl16LoopbackProbeJobC2ERKN4base7WeakPtrIS0_EE
   fun:_ZN3net16HostResolverImplC1ERKNS_12HostResolver7OptionsEPNS_6NetLogE
   fun:_ZN8chromeos24HostResolverImplChromeOSC1E13scoped_refptrIN4base16MessageLoopProxyEEPNS_19NetworkStateHandlerERKN3net12HostResolver7OptionsEPNS7_6NetLogE
   fun:_ZN8chromeos24HostResolverImplChromeOS25CreateHostResolverForTestE13scoped_refptrIN4base16MessageLoopProxyEEPNS_19NetworkStateHandlerE
   fun:_ZN28HostResolverImplChromeOSTest22InitializeHostResolverEv
}
{
   bug_394558
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN32ProfileSyncComponentsFactoryMockC1Ev
}
{
   bug_394624
   Memcheck:Leak
   ...
   fun:_ZN3net24URLRequestJobFactoryImpl18SetProtocolHandlerERKSsPNS_20URLRequestJobFactory15ProtocolHandlerE
   ...
   fun:_ZN7content28ShellURLRequestContextGetter20GetURLRequestContextEv
   fun:_ZN7content21ChromeAppCacheService20InitializeOnIOThreadERKN4base8FilePathEPNS_15ResourceContextEPN3net23URLRequestContextGetterE13scoped_refptrIN5quota20SpecialStoragePolicyEE
}
{
   bug_396658
   Memcheck:Uninitialized
   ...
   fun:wk_png_write_find_filter
   fun:wk_png_write_row
}
{
   bug_397066_a
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink13InlineFlowBox9addToLineEPNS_9InlineBoxE
   ...
   fun:_ZN5blink15RenderBlockFlow13constructLineERNS_11BidiRunListINS_7BidiRunEEERKNS_8LineInfoE
   fun:_ZN5blink15RenderBlockFlow27createLineBoxesFromBidiRunsEjRNS_11BidiRunListINS_7BidiRunEEERKNS_14InlineIteratorERNS_8LineInfoERNS_21VerticalPositionCacheEPS2_RN3WTF6VectorINS_15WordMeasurementELm64ENSD_16DefaultAllocatorEEE
   fun:_ZN5blink15RenderBlockFlow26layoutRunsAndFloatsInRangeERNS_15LineLayoutStateERNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEERKS4_RKNS_10BidiStatusE
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutStateE
   fun:_ZN5blink15RenderBlockFlow20layoutInlineChildrenEbRNS_10LayoutUnitES2_S1_
   ...
   fun:_ZN5blink15RenderBlockFlow11layoutBlockEb
}
{
   bug_397066_b
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink13InlineFlowBox24computeLogicalBoxHeightsEPNS_13RootInlineBoxERNS_10LayoutUnitES4_RiS5_RbS6_bRN3WTF7HashMapIPKNS_13InlineTextBoxESt4pairINS7_6VectorIPKNS_14SimpleFontDataELm0ENS7_16DefaultAllocatorEEENS_13GlyphOverflowEENS7_7PtrHashISB_EENS7_10HashTraitsISB_EENSN_ISK_EESH_EENS_12FontBaselineERNS_21VerticalPositionCacheE
   fun:_ZN5blink13RootInlineBox26alignBoxesInBlockDirectionENS_10LayoutUnitERN3WTF7HashMapIPKNS_13InlineTextBoxESt4pairINS2_6VectorIPKNS_14SimpleFontDataELm0ENS2_16DefaultAllocatorEEENS_13GlyphOverflowEENS2_7PtrHashIS6_EENS2_10HashTraitsIS6_EENSI_ISF_EESC_EERNS_21VerticalPositionCacheE
   ...
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutStateE
   fun:_ZN5blink15RenderBlockFlow20layoutInlineChildrenEbRNS_10LayoutUnitES2_S1_
   fun:_ZN5blink15RenderBlockFlow15layoutBlockFlowEbRNS_10LayoutUnitERNS_18SubtreeLayoutScopeE
   fun:_ZN5blink15RenderBlockFlow11layoutBlockEb
}
{
   bug_397066_c
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink13InlineFlowBox26placeBoxesInBlockDirectionENS_10LayoutUnitES1_ibRS1_S2_S2_RbS2_S2_S3_S3_NS_12FontBaselineE
   fun:_ZN5blink13RootInlineBox26alignBoxesInBlockDirectionENS_10LayoutUnitERN3WTF7HashMapIPKNS_13InlineTextBoxESt4pairINS2_6VectorIPKNS_14SimpleFontDataELm0ENS2_16DefaultAllocatorEEENS_13GlyphOverflowEENS2_7PtrHashIS6_EENS2_10HashTraitsIS6_EENSI_ISF_EESC_EERNS_21VerticalPositionCacheE
   ...
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutStateE
   fun:_ZN5blink15RenderBlockFlow20layoutInlineChildrenEbRNS_10LayoutUnitES2_S1_
   fun:_ZN5blink15RenderBlockFlow15layoutBlockFlowEbRNS_10LayoutUnitERNS_18SubtreeLayoutScopeE
   fun:_ZN5blink15RenderBlockFlow11layoutBlockEb
}
{
   bug_397066_d
   Memcheck:Uninitialized
   fun:_ZN5blink13InlineFlowBox45clearDescendantsHaveSameLineHeightAndBaselineEv
   fun:_ZN5blink13InlineFlowBox9addToLineEPNS_9InlineBoxE
   ...
   fun:_ZN5blink15RenderBlockFlow13constructLineERNS_11BidiRunListINS_7BidiRunEEERKNS_8LineInfoE
   fun:_ZN5blink15RenderBlockFlow27createLineBoxesFromBidiRuns*
}
{
   bug_397066_e
   Memcheck:Uninitialized
   fun:_ZN5blink13InlineFlowBox9addToLineEPNS_9InlineBox*
   fun:_ZN5blink15RenderBlockFlow*
   ...
   fun:_ZN5blink15RenderBlockFlow27createLineBoxesFromBidiRunsEjRNS*
   fun:_ZN5blink15RenderBlockFlow26layoutRunsAndFloatsInRangeERNS_15LineLayoutStateERNS_12BidiResolver*
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutState*
}
{
   bug_397066_f
   Memcheck:Uninitialized
   fun:_ZNK5blink13InlineFlowBox35constrainToLineTopAndBottomIfNeededERNS_10LayoutRectE
   fun:_ZN5blink13InlineFlowBox28paintBoxDecorationBackgroundERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13RootInlineBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZNK5blink17RenderLineBoxList5paintEPNS_20RenderBoxModelObjectERNS_9PaintInfoERKNS_11LayoutPointE
}
{
   bug_397075_a
   Memcheck:Uninitialized
   fun:_ZN2v88internal6Object11SetPropertyEPNS0_14LookupIteratorENS0_6HandleIS1_EENS0_10StrictModeENS1_14StoreFromKeyedE
   fun:_ZN2v88internal6Object11SetPropertyENS0_6HandleIS1_EENS2_INS0_4NameEEES3_NS0_10StrictModeENS1_14StoreFromKeyedE
   fun:_ZN2v88internal7Runtime17SetObjectPropertyEPNS0_7IsolateENS0_6HandleINS0_6ObjectEEES6_S6_NS0_10StrictModeE
   fun:_ZN2v86Object3SetENS_6HandleINS_5ValueEEES3_
   fun:_ZN18WebCoreTestSupport21injectInternalsObjectEN2v85LocalINS0_7ContextEEE
   fun:_ZN5blink17WebTestingSupport21injectInternalsObjectEPNS_13WebLocalFrameE
   fun:_ZN7content16WebKitTestRunner20DidClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZN7content14RenderViewImpl20didClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZN7content15RenderFrameImpl20didClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZThn16_N7content15RenderFrameImpl20didClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZN5blink21FrameLoaderClientImpl39dispatchDidClearWindowObjectInMainWorldEv
   fun:_ZN5blink11FrameLoader39dispatchDidClearWindowObjectInMainWorldEv
   fun:_ZN5blink16ScriptController11windowShellERNS_15DOMWrapperWorldE
   fun:_ZN5blink11toV8ContextEPNS_10LocalFrameERNS_15DOMWrapperWorldE
   fun:_ZNK5blink17WebLocalFrameImpl22mainWorldScriptContextEv
   fun:_ZN5blink17WebTestingSupport20resetInternalsObjectEPNS_13WebLocalFrameE
   fun:_ZN7content16WebKitTestRunner5ResetEv
   fun:_ZN7content26ShellContentRendererClient17RenderViewCreatedEPNS_10RenderViewE
   fun:_ZN7content14RenderViewImpl10InitializeEPNS_20RenderViewImplParamsE
   fun:_ZN7content14RenderViewImpl6CreateEibRKNS_19RendererPreferencesERKNS_14WebPreferencesEiiilRKSbItN4base20string16_char_traitsESaItEEbbibbiRKN5blink13WebScreenInfoE17AccessibilityMode
   fun:_ZN7content16RenderThreadImpl15OnCreateNewViewERK18ViewMsg_New_Params
}
{
   bug_397075_b
   Memcheck:Uninitialized
   fun:_ZN2v88internal6Object11SetPropertyEPNS0_14LookupIteratorENS0_6HandleIS1_EENS0_10StrictModeENS1_14StoreFromKeyedE
   fun:_ZN2v88internal6Object11SetPropertyENS0_6HandleIS1_EENS2_INS0_4NameEEES3_NS0_10StrictModeENS1_14StoreFromKeyedE
   ...
   fun:_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_
   fun:_ZN2v88internal9Execution4CallEPNS0_7IsolateENS0_6HandleINS0_6ObjectEEES6_iPS6_b
}
{
   bug_398349_a
   Memcheck:Uninitialized
   fun:_ZN2v88internal19JSObjectWalkVisitorINS0_29AllocationSiteCreationContextEE13StructureWalkENS0_6HandleINS0_8JSObjectEEE
   fun:_ZN2v88internal8JSObject8DeepWalkENS0_6HandleIS1_EEPNS0_29AllocationSiteCreationContextE
   fun:_ZN2v88internal27Runtime_CreateObjectLiteralEiPPNS0_6ObjectEPNS0_7IsolateE
}
{
   bug_398349_b
   Memcheck:Uninitialized
   fun:_ZN2v88internal19JSObjectWalkVisitorINS0_26AllocationSiteUsageContextEE13StructureWalkENS0_6HandleINS0_8JSObjectEEE
   fun:_ZN2v88internal8JSObject8DeepCopyENS0_6HandleIS1_EEPNS0_26AllocationSiteUsageContextENS1_13DeepCopyHintsE
   fun:_ZN2v88internal27Runtime_CreateObjectLiteralEiPPNS0_6ObjectEPNS0_7IsolateE
}
{
   bug_399853_a
   Memcheck:Uninitialized
   fun:_ZNK8SkStroke10strokePathERK6SkPathPS0_
   fun:_ZNK11SkStrokeRec11applyToPathEP6SkPathRKS0_
   fun:_ZNK7SkPaint11getFillPathERK6SkPathPS0_PK6SkRect
}
{
   bug_399853_b
   Memcheck:Uninitialized
   fun:_ZNK8SkStroke10strokePathERK6SkPathPS0_
   fun:_ZNK11SkStrokeRec11applyToPathEP6SkPathRKS0_
   fun:_ZN15SkScalerContext15internalGetPathERK7SkGlyphP6SkPathS4_P8SkMatrix
}
{
   bug_400547
   Memcheck:Uninitialized
   fun:_ZNK5blink22GraphicsLayerDebugInfo17appendOwnerNodeIdEPNS_10JSONObjectE
   fun:_ZNK5blink22GraphicsLayerDebugInfo19appendAsTraceFormatEPNS_9WebStringE
   fun:_ZNK7content15TracedDebugInfo19AppendAsTraceFormatEPSs
   fun:_ZNK2cc9LayerImpl11AsValueIntoEPN4base5debug11TracedValueE
   fun:_ZNK2cc*LayerImpl11AsValueIntoEPN4base5debug11TracedValueE
}
{
   bug_402257_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN10extensions11ApiTestBase15RegisterModulesEv
   fun:_ZN10extensions11ApiTestBase5SetUpEv
   fun:_ZN10extensions16DataReceiverTest5SetUpEv
}
{
   bug_402257_b
   Memcheck:Leak
   ...
   fun:_ZN10extensions12_GLOBAL__N_111TestNatives24GetObjectTemplateBuilderEPN2v87IsolateE
   fun:_ZN3gin13WrappableBase14GetWrapperImplEPN2v87IsolateEPNS_11WrapperInfoE
   fun:_ZN3gin9WrappableIN10extensions12_GLOBAL__N_111TestNativesEE10GetWrapperEPN2v87IsolateE
   fun:_ZN3gin12CreateHandleIN10extensions12_GLOBAL__N_111TestNativesEEENS_6HandleIT_EEPN2v87IsolateEPS5_
   fun:_ZN10extensions12_GLOBAL__N_111TestNatives6CreateEPN2v87IsolateERKN4base8CallbackIFvvEEE
   fun:_ZN10extensions11ApiTestBase7RunTestERKSsS2_
   fun:_ZN10extensions29DataReceiverTest_Receive_Test8TestBodyEv
}
{
   bug_402257_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gin13HandleWrapper6CreateEPN2v87IsolateEj
   fun:_ZN3gin9ConverterIN4mojo6HandleEvE4ToV8EPN2v87IsolateERKS2_
   fun:_ZN3gin11ConvertToV8IN4mojo6HandleEEEN2v86HandleINS3_5ValueEEEPNS3_7IsolateET_
   fun:_ZN3gin10Dictionary3SetIN4mojo6HandleEEEbRKSsT_
   fun:_ZN4mojo2js12_GLOBAL__N_114CreateDataPipeERKN3gin9ArgumentsE
}
{
   bug_403774
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN5blink18ModulesInitializer4initEv
   fun:_ZN5blink19initializeWithoutV8EPNS_8PlatformE
   fun:_ZN5blink10initializeEPNS_8PlatformE
   fun:_ZN7content25TestWebKitPlatformSupportC2Ev
   fun:_ZN7content25TestWebKitPlatformSupportC1Ev
   fun:_ZN7content17UnitTestTestSuiteC2EPN4base9TestSuiteE
   fun:_ZN7content17UnitTestTestSuiteC1EPN4base9TestSuiteE
}
{
   bug_403775
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN28NotificationConversionHelper28GfxImageToNotificationBitmapEPKN3gfx5ImageEPN10extensions3api13notifications18NotificationBitmapE
   fun:_ZN28NotificationConversionHelper33NotificationToNotificationOptionsERK12NotificationPN10extensions3api13notifications19NotificationOptionsE
   fun:_ZN71NotificationConversionHelperTest_NotificationToNotificationOptions_Test8TestBodyEv
}
{
   bug_404182
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8app_list4test12_GLOBAL__N_122AppListViewTestContext16RunStartPageTestEv
}
{
   bug_405865
   Memcheck:Uninitialized
   fun:_ZNK5blink13InlineFlowBox20computeMaxLogicalTopERf
   ...
   fun:_ZNK5blink13RootInlineBox13maxLogicalTopEv
   fun:_ZN5blinkL22computeUnderlineOffsetENS_21TextUnderlinePositionERKNS_11FontMetricsEPKNS_13InlineTextBoxEf
   fun:_ZN5blink20InlineTextBoxPainter15paintDecorationEPNS_15GraphicsContextERKNS_10FloatPointENS_14TextDecorationE
   fun:_ZN5blink20InlineTextBoxPainter5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink13InlineTextBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
}
{
   bug_415092
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base22PosixDynamicThreadPool7AddTaskEPNS_11PendingTaskE
   fun:_ZN4base22PosixDynamicThreadPool8PostTaskERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEE
   fun:_ZN4base12_GLOBAL__N_114WorkerPoolImpl8PostTaskERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEEb
   fun:_ZN4base10WorkerPool8PostTaskERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEEb
}
{
   bug_416729
   Memcheck:Unaddressable
   fun:_ZNK5blink6MemberINS_38PlatformSpeechSynthesisUtteranceClientEEcvPS1_Ev
   fun:_ZNK5blink32PlatformSpeechSynthesisUtterance6clientEv
   fun:_ZN5blink15SpeechSynthesis17didFinishSpeakingEPNS_32PlatformSpeechSynthesisUtteranceE
   ...
   fun:_ZN5blink29PlatformSpeechSynthesizerMock16speakingFinishedEPNS_5TimerIS0_EE
   fun:_ZN5blink5TimerINS_29PlatformSpeechSynthesizerMockEE5firedEv
   fun:_ZN5blink12ThreadTimers24sharedTimerFiredInternalEv
   fun:_ZN5blink12ThreadTimers16sharedTimerFiredEv
   ...
   fun:_ZN7content17BlinkPlatformImpl9DoTimeoutEv
}
{
   bug_417048a
   Memcheck:Uninitialized
   ...
   fun:_ZNK5blink17RenderLineBoxList7hitTestEPNS_20RenderBoxModelObjectERKNS_14HitTestRequestERNS_13HitTestResultERKNS_15HitTestLocationERKNS_11LayoutPointENS_13HitTestActionE
   fun:_ZN5blink*Render*_14HitTestRequestERNS_13HitTestResultERKNS_15HitTestLocationERKNS_11LayoutPointENS_13HitTestActionE
}
{
   bug_417048b
   Memcheck:Uninitialized
   fun:_ZN5blink13InlineFlowBox45clearDescendantsHaveSameLineHeightAndBaselineEv
   ...
   fun:_ZN5blinkL25setLogicalWidthForTextRunEPNS_13RootInlineBoxEPNS_7BidiRunEPNS_10RenderTextEfRKNS*
   fun:_ZN5blink15RenderBlockFlow41computeInlineDirectionPositionsForSegmentEPNS_13RootInlineBoxERKNS*
   fun:_ZN5blink15RenderBlockFlow38computeInlineDirectionPositionsForLineEPNS_13RootInlineBoxERKNS*
}
{
   bug_417048c
   Memcheck:Uninitialized
   fun:_ZNK5blink13InlineFlowBox35constrainToLineTopAndBottomIfNeededERNS_10LayoutRectE
   fun:_ZN5blink13InlineFlowBox28paintBoxDecorationBackgroundERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13RootInlineBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZNK5blink18LineBoxListPainter5paintEPNS_20RenderBoxModelObjectERNS_9PaintInfoERKNS_11LayoutPointE
}
{
   bug_417048d
   Memcheck:Uninitialized
   ...
   fun:_ZNK5blink13RootInlineBox13maxLogicalTopEv
   fun:_ZN5blinkL22computeUnderlineOffsetENS_21TextUnderlinePositionERKNS_11FontMetricsEPKNS_13InlineTextBoxEf
   fun:_ZN5blink13InlineTextBox15paintDecorationEPNS_15GraphicsContextERKNS_10FloatPointENS_14TextDecorationE
   fun:_ZN5blink13InlineTextBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13RootInlineBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZNK5blink17RenderLineBoxList5paintEPNS_20RenderBoxModelObjectERNS_9PaintInfoERKNS_11LayoutPointE
}
{
   bug_417119
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7storage27TaskRunnerBoundObserverListINS_18FileUpdateObserverEPS1_EaSERKS3_
   fun:_ZN7storage26FileSystemOperationContext20set_update_observersERKNS_27TaskRunnerBoundObserverListINS_18FileUpdateObserverEPS2_EE
   fun:_ZNK7storage32SandboxFileSystemBackendDelegate32CreateFileSystemOperationContextERKNS_13FileSystemURLEPNS_17FileSystemContextEPN4base4File5ErrorE
   fun:_ZNK7storage24SandboxFileSystemBackend25CreateFileSystemOperationERKNS_13FileSystemURLEPNS_17FileSystemContextEPN4base4File5ErrorE
   fun:_ZN7storage17FileSystemContext25CreateFileSystemOperationERKNS_13FileSystemURLEPN4base4File5ErrorE
}
{
   bug_417526
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN16sync_file_system13drive_backend14SyncEngineTest5SetUpEv
}
{
   bug_422485
   Memcheck:Overlap
   fun:memcpy@@GLIBC_2.14
   fun:_ZNK8SkBitmap12copyPixelsToEPvmmb
   fun:_ZN5blink19ImageFrameGenerator14decodeAndScaleERK11SkImageInfomPvm
   fun:_ZN5blink22DecodingImageGenerator11onGetPixelsERK11SkImageInfoPvmPjPi
   fun:_ZN16SkImageGenerator9getPixelsERK11SkImageInfoPvmPjPi
}
{
   bug_424056a
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF13CStringBuffer19createUninitializedEm
   fun:_ZN3WTF7CString16newUninitializedEmRPc
   fun:_ZN3WTF15TextCodecLatin112encodeCommonIhEENS_7CStringEPKT_mNS_19UnencodableHandlingE
   fun:_ZN3WTF15TextCodecLatin16encodeEPKhmNS_19UnencodableHandlingE
}
{
   bug_424056b
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF13CStringBuffer19createUninitializedEm
   fun:_ZN3WTF7CString4initEPKcm
   fun:_ZN3WTF7CStringC1EPKcm
   fun:_ZN3WTF13TextCodecUTF812encodeCommonIhEENS_7CStringEPKT_m
   fun:_ZN3WTF13TextCodecUTF86encodeEPKhmNS_19UnencodableHandlingE
   fun:_ZNK3WTF12TextEncoding6encodeERKNS_6StringENS_19UnencodableHandlingE
}
{
   bug_424575
   Memcheck:Uninitialized
   fun:_ZN7content13NavigatorImpl23RecordNavigationMetricsERKNS_20LoadCommittedDetailsERK44FrameHostMsg_DidCommitProvisionalLoad_ParamsPNS_12SiteInstanceE
   fun:_ZN7content13NavigatorImpl11DidNavigateEPNS_19RenderFrameHostImplERK44FrameHostMsg_DidCommitProvisionalLoad_Params
   fun:_ZN7content19RenderFrameHostImpl26OnDidCommitProvisionalLoadERKN3IPC7MessageE
   fun:_ZN7content19TestRenderFrameHost26SendNavigateWithParametersEiRK4GURLN2ui14PageTransitionES3_iPKN4base8FilePathERKSt6vectorIS1_SaIS1_EE
   fun:_ZN7content19TestRenderFrameHost41SendNavigateWithTransitionAndResponseCodeEiRK4GURLN2ui14PageTransitionEi
   fun:_ZN7content19TestRenderFrameHost26SendNavigateWithTransitionEiRK4GURLN2ui14PageTransitionE
}
{
   bug_431209a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8remoting13ClipboardAuraC1E13scoped_refptrIN4base22SingleThreadTaskRunnerEE
   fun:_ZN8remoting17ClipboardAuraTest5SetUpEv
}
{
   bug_431209b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2ui9Clipboard6CreateEv
   fun:_ZN2ui9Clipboard19GetForCurrentThreadEv
   fun:_ZN2ui21ScopedClipboardWriterD1Ev
   fun:_ZN8remoting13ClipboardAura4Core20InjectClipboardEventERKNS_8protocol14ClipboardEventE
}
{
   bug_431213
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gin22CreateFunctionTemplateIF*LocalINS6_16FunctionTemplateEEEPNS6_7IsolateEN4base8CallbackIT_EEi
   fun:_ZN3gin12_GLOBAL__N_114CallbackTraitsIMN*CreateTemplateEPN2v87IsolateES6_
   fun:_ZN3gin21ObjectTemplateBuilder9SetMethodIMN*0_RKN4base16BasicStringPieceISsEERKT_
   fun:_ZN*24GetObjectTemplateBuilderEPN2v87IsolateE
}
{
   bug_436110
   Memcheck:Param
   socketcall.sendto(msg)
   fun:send
   fun:_ZN4mojo8embedder20PlatformChannelWriteENS0_14PlatformHandleEPKvm
   fun:_ZN4mojo6system12_GLOBAL__N_115RawChannelPosix11WriteNoLockEPmS3_
   fun:_ZN4mojo6system12_GLOBAL__N_115RawChannelPosix29OnFileCanWriteWithoutBlockingEi
   fun:_ZThn112_N4mojo6system12_GLOBAL__N_115RawChannelPosix29OnFileCanWriteWithoutBlockingEi
   fun:_ZN4base19MessagePumpLibevent21FileDescriptorWatcher29OnFileCanWriteWithoutBlockingEiPS0_
   fun:_ZN4base19MessagePumpLibevent22OnLibeventNotificationEisPv
   fun:event_process_active
   fun:event_base_loop
   fun:_ZN4base19MessagePumpLibevent3RunEPNS_11MessagePump8DelegateE
   fun:_ZN4base11MessageLoop10RunHandlerEv
}
{
   bug_436110_a
   Memcheck:Param
   socketcall.sendto(msg)
   fun:send
   fun:_ZN4mojo8embedder20PlatformChannelWriteENS0_14PlatformHandleEPKvm
   fun:_ZN4mojo6system12_GLOBAL__N_115RawChannelPosix11WriteNoLockEPmS3_
   fun:_ZN4mojo6system10RawChannel12WriteMessageE10scoped_ptrINS0_16MessageInTransitEN4base14DefaultDeleterIS3_EEE
   fun:_ZN4mojo6system7Channel12WriteMessageE10scoped_ptrINS0_16MessageInTransitEN4base14DefaultDeleterIS3_EEE
   fun:_ZN4mojo6system15ChannelEndpoint18WriteMessageNoLockE10scoped_ptrINS0_16MessageInTransitEN4base14DefaultDeleterIS3_EEE
   fun:_ZN4mojo6system15ChannelEndpoint14EnqueueMessageE10scoped_ptrINS0_16MessageInTransitEN4base14DefaultDeleterIS3_EEE
   fun:_ZN4mojo6system24ProxyMessagePipeEndpoint14EnqueueMessageE10scoped_ptrINS0_16MessageInTransitEN4base14DefaultDeleterIS3_EEE
   fun:_ZN4mojo6system11MessagePipe14EnqueueMessageEj10scoped_ptrINS0_16MessageInTransitEN4base14DefaultDeleterIS3_EEEPSt6vectorINS0_19DispatcherTransportESaIS9_EE
   fun:_ZN4mojo6system11MessagePipe12WriteMessageEjNS0_11UserPointerIKvEEjPSt6vectorINS0_19DispatcherTransportESaIS6_EEj
   fun:_ZN4mojo6system21MessagePipeDispatcher22WriteMessageImplNoLockENS0_11UserPointerIKvEEjPSt6vectorINS0_19DispatcherTransportESaIS6_EEj
   fun:_ZN4mojo6system10Dispatcher12WriteMessageENS0_11UserPointerIKvEEjPSt6vectorINS0_19DispatcherTransportESaIS6_EEj
   fun:_ZN4mojo6system4Core12WriteMessageEjNS0_11UserPointerIKvEEjNS2_IKjEEjj
   fun:MojoWriteMessage
}
{
   bug_436110_b
   Memcheck:Param
   sendmsg(msg.msg_iov[0])
   obj:/lib/x86_64-linux-gnu/libpthread-2.15.so
   fun:_ZN4mojo8embedder33PlatformChannelSendmsgWithHandlesENS0_14PlatformHandleEP5iovecmPS1_m
   ...
   fun:MojoWriteMessage
}
{
   bug_436172
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC11SyncChannelC1EPNS_8ListenerERK13scoped_refptrIN4base22SingleThreadTaskRunnerEEPNS4_13WaitableEventE
   ...
   fun:_ZN7content28BrowserGpuChannelHostFactory16EstablishRequest12FinishOnMainEv
}
{
   bug_436172_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC7Channel6CreateERKNS_13ChannelHandleENS0_4ModeEPNS_8ListenerE
   fun:_ZN3IPC12_GLOBAL__N_122PlatformChannelFactory12BuildChannelEPNS_8ListenerE
   fun:_ZN3IPC12ChannelProxy7Context13CreateChannelE10scoped_ptrINS_14ChannelFactoryEN4base14DefaultDeleterIS3_EEE
   ...
   fun:_ZN7content28BrowserGpuChannelHostFactory16EstablishRequest12FinishOnMainEv
}
{
   bug_436172_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC12ChannelProxy7ContextC1EPNS_8ListenerERK13scoped_refptrIN4base22SingleThreadTaskRunnerEE
   fun:_ZN3IPC11SyncChannel11SyncContextC1EPNS_8ListenerERK13scoped_refptrIN4base22SingleThreadTaskRunnerEEPNS5_13WaitableEventE
   fun:_ZN3IPC11SyncChannelC1EPNS_8ListenerERK13scoped_refptrIN4base22SingleThreadTaskRunnerEEPNS4_13WaitableEventE
   fun:_ZN3IPC11SyncChannel6CreateEPNS_8ListenerERK13scoped_refptrIN4base22SingleThreadTaskRunnerEEPNS4_13WaitableEventE
   ...
   fun:_ZN7content28BrowserGpuChannelHostFactory16EstablishRequest12FinishOnMainEv
}
{
   bug_436172_d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content14GpuChannelHost7ConnectERKN3IPC13ChannelHandleEPN4base13WaitableEventE
   fun:_ZN7content14GpuChannelHost6CreateEPNS_21GpuChannelHostFactoryERKN3gpu7GPUInfoERKN3IPC13ChannelHandleEPN4base13WaitableEventEPNS3_22GpuMemoryBufferManagerE
   fun:_ZN7content28BrowserGpuChannelHostFactory21GpuChannelEstablishedEv
   fun:_ZN7content28BrowserGpuChannelHostFactory16EstablishRequest12FinishOnMainEv
}
{
   Expected_leak_due_to_gpu_thread_leaked_by_lazy_instance
   Memcheck:Leak
   fun:calloc
   fun:pthread_setspecific
   ...
   fun:_ZN3gpu22InProcessCommandBuffer21InitializeOnGpuThreadERKNS0_27InitializeOnGpuThreadParamsE
}
{
   bug_441333
   Memcheck:Uninitialized
   fun:av_packet_unpack_dictionary
   fun:add_metadata_from_side_data
   fun:avcodec_decode_*
   fun:avcodec_decode_*
}
{
   bug_448700_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN10extensions11ApiTestBase15RegisterModulesEv
   fun:_ZN10extensions11ApiTestBase5SetUpEv
}
{
   bug_448700_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN10extensions12_GLOBAL__N_111TestNatives24GetObjectTemplateBuilderEPN2v87IsolateE
   fun:_ZN3gin13WrappableBase14GetWrapperImplEPN2v87IsolateEPNS_11WrapperInfoE
   fun:_ZN3gin9WrappableIN10extensions12_GLOBAL__N_111TestNativesEE10GetWrapperEPN2v87IsolateE
   fun:_ZN3gin12CreateHandleIN10extensions12_GLOBAL__N_111TestNativesEEENS_6HandleIT_EEPN2v87IsolateEPS5_
   fun:_ZN10extensions12_GLOBAL__N_111TestNatives6CreateEPN2v87IsolateERKN4base8CallbackIFvvEEE
   fun:_ZN10extensions11ApiTestBase7RunTestERKSsS2_
   fun:_ZN10extensions30MojoPrivateApiTest_Define_Test8TestBodyEv
}
{
   bug_449156_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7leveldb2DB4OpenERKNS_7OptionsERKSsPPS0_
   fun:_ZN7storage21SandboxOriginDatabase4InitENS0_10InitOptionENS0_14RecoveryOptionE
   fun:_ZN7storage21SandboxOriginDatabase16GetPathForOriginERKSsPN4base8FilePathE
   fun:_ZN7storage32SandboxPrioritizedOriginDatabase16GetPathForOriginERKSsPN4base8FilePathE
   fun:_ZN7storage18ObfuscatedFileUtil21GetDirectoryForOriginERK4GURLbPN4base4File5ErrorE
   fun:_ZN7storage18ObfuscatedFileUtil28GetDirectoryForOriginAndTypeERK4GURLRKSsbPN4base4File5ErrorE
   fun:_ZN7storage12_GLOBAL__N_130OpenFileSystemOnFileTaskRunnerEPNS_18ObfuscatedFileUtilERK4GURLNS_14FileSystemTypeENS_18OpenFileSystemModeEPN4base4File5ErrorE
}
{
   bug_449156_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7storage18ObfuscatedFileUtil8MarkUsedEv
   fun:_ZN7storage18ObfuscatedFileUtil20GetDirectoryDatabaseERKNS_13FileSystemURLEb
}
{
   bug_449175_a
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN4mojo6system17UserPointerReaderIKjE4InitEPS2_mb
   fun:_ZN4mojo6system17UserPointerReaderIKjEC2ENS0_11UserPointerIS2_EEm
   fun:_ZN4mojo6system4Core8WaitManyENS0_11UserPointerIKjEES4_jmNS2_IjEENS2_I22MojoHandleSignalsStateEE
   fun:MojoWaitMany
   fun:_ZN4mojo8WaitManyI*
   fun:_ZN4mojo6common15MessagePumpMojo14DoInternalWorkERKNS1_8RunStateEb
   fun:_ZN4mojo6common15MessagePumpMojo9DoRunLoopEPNS1_8RunStateEPN4base11MessagePump8DelegateE
   fun:_ZN4mojo6common15MessagePumpMojo3RunEPN4base11MessagePump8DelegateE
   fun:_ZN4base11MessageLoop10RunHandlerEv
   fun:_ZN4base7RunLoop3RunEv
   fun:_ZN4base11MessageLoop3RunEv
   fun:_ZN4base6Thread3RunEPNS_11MessageLoopE
   fun:_ZN4base6Thread10ThreadMainEv
   fun:_ZN4base12_GLOBAL__N_110ThreadFuncEPv
}
{
   bug_449175_b
   Memcheck:Leak
   fun:calloc
   fun:pthread_setspecific
   fun:_ZN4base8internal19ThreadLocalPlatform14SetValueInSlotEjPv
   fun:_ZN4base18ThreadLocalPointerIN4mojo6common15MessagePumpMojoEE3SetEPS3_
   fun:_ZN4mojo6common15MessagePumpMojoC1Ev
   fun:_ZN4mojo6common15MessagePumpMojo6CreateEv
}
{
   bug_449551
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN8app_list4test17SearchHistoryTest5SetUpEv
}
{
   bug_450228
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi10linked_ptrIN4base19SequencedWorkerPool6WorkerEEEEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeIiSt4pairIKi10linked_ptrIN4base19SequencedWorkerPool6WorkerEEESt10_Select1stIS7_ESt4lessIiESaIS7_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeIiSt4pairIKi10linked_ptrIN4base19SequencedWorkerPool6WorkerEEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_create_nodeIJS0_IiS6_EEEEPSt13_Rb_tree_nodeIS7_EDpOT_
   fun:_ZNSt8_Rb_treeIiSt4pairIKi10linked_ptrIN4base19SequencedWorkerPool6WorkerEEESt10_Select1stIS7_ESt4lessIiESaIS7_EE10_M_insert_IS0_IiS6_EEESt17_Rb_tree_iteratorIS7_EPKSt18_Rb_tree_node_baseSK_OT_
   fun:_ZNSt8_Rb_treeIiSt4pairIKi10linked_ptrIN4base19SequencedWorkerPool6WorkerEEESt10_Select1stIS7_ESt4lessIiESaIS7_EE16_M_insert_uniqueIS0_IiS6_EEES0_ISt17_Rb_tree_iteratorIS7_EbEOT_
   fun:_ZNSt3mapIi10linked_ptrIN4base19SequencedWorkerPool6WorkerEESt4lessIiESaISt4pairIKiS4_EEE6insertIS7_IiS4_EvEES7_ISt17_Rb_tree_iteratorIS9_EbEOT_
   fun:_ZN4base19SequencedWorkerPool5Inner10ThreadLoopEPNS0_6WorkerE
   fun:_ZN4base19SequencedWorkerPool6Worker3RunEv
   fun:_ZN4base12SimpleThread10ThreadMainEv
   fun:_ZN4base12_GLOBAL__N_110ThreadFuncEPv
}
{
   bug_455732
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4mojo7BindingINS_15ServiceProviderEE4BindENS_16ScopedHandleBaseINS_17MessagePipeHandleEEEPK15MojoAsyncWaiter
   fun:_ZN4mojo7BindingINS_15ServiceProviderEE4BindENS_16InterfaceRequestIS1_EEPK15MojoAsyncWaiter
   fun:_ZN7content19ServiceRegistryImpl4BindEN4mojo16InterfaceRequestINS1_15ServiceProviderEEE
   fun:_ZN7content12_GLOBAL__N_120ApplicationSetupImpl24ExchangeServiceProvidersEN4mojo16InterfaceRequestINS2_15ServiceProviderEEENS2_12InterfacePtrIS4_EE
   fun:_ZN7content20ApplicationSetupStub6AcceptEPN4mojo7MessageE
   fun:_ZN4mojo8internal6Router21HandleIncomingMessageEPNS_7MessageE
   fun:_ZN4mojo8internal6Router26HandleIncomingMessageThunk6AcceptEPNS_7MessageE
   fun:_ZN7content32ApplicationSetupRequestValidator6AcceptEPN4mojo7MessageE
   fun:_ZN4mojo8internal22MessageHeaderValidator6AcceptEPNS_7MessageE
   fun:_ZN4mojo22ReadAndDispatchMessageENS_17MessagePipeHandleEPNS_15MessageReceiverEPb
   fun:_ZN4mojo8internal9Connector17ReadSingleMessageEPi
   fun:_ZN4mojo8internal9Connector24ReadAllAvailableMessagesEv
   fun:_ZN4mojo8internal9Connector13OnHandleReadyEi
   fun:_ZN4mojo8internal9Connector17CallOnHandleReadyEPvi
   fun:_ZN4mojo8internal12_GLOBAL__N_113OnHandleReadyEPNS_6common13HandleWatcherEPFvPviES5_i
}
