# 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
}
{
   bug_464462
   Memcheck:Uninitialized
   fun:_ZN7content14ManifestParser16ParseIconDensityERKN4base15DictionaryValueE
   fun:_ZN7content14ManifestParser10ParseIconsERKN4base15DictionaryValueE
   fun:_ZN7content14ManifestParser5ParseEv
   fun:_ZN7content18ManifestParserTest21ParseManifestWithURLsERKN4base16BasicStringPieceISsEERK4GURLS8_
   fun:_ZN7content18ManifestParserTest13ParseManifestERKN4base16BasicStringPieceISsEE
   fun:_ZN7content45ManifestParserTest_IconDensityParseRules_Test8TestBodyEv
}

#-----------------------------------------------------------------------
# 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_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_PK6SkRectf
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixbbP9SkBlitter
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixb
   fun:_ZN14SkBitmapDevice8drawPathERK6SkDrawRK6SkPathRK7SkPaintPK8SkMatrixb
}
{
   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
}
{
   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_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gin22CreateFunctionTemplateIF*LocalINS6_16FunctionTemplateEEEPNS6_7IsolateEN4base8CallbackIT_EEi
   fun:_ZN3gin12_GLOBAL__N_114CallbackTraitsIMN*CreateTemplateEPN2v87IsolateES6_
   fun:_ZN3gin21ObjectTemplateBuilder9SetMethodIMN*0_RKN4base16BasicStringPieceISsEERKT_
   fun:_ZN*24GetObjectTemplateBuilderEPN2v87IsolateE
}
{
   bug_431213_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gin22CreateFunctionTemplateIF*IsolateEN4base8CallbackIT_EEi
   fun:_ZN3gin12_GLOBAL__N_114CallbackTraitsIF*
   fun:_ZN3gin21ObjectTemplateBuilder9SetMethod*RKN4base16BasicStringPieceISsEERKT_
   fun:_ZN4mojo2js*GetModuleEPN2v87IsolateE
}
{
   bug_431213_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gin22CreateFunctionTemplateIF*IsolateEN4base8CallbackIT_EEi
   fun:_ZN3gin12_GLOBAL__N_114CallbackTraitsI*
   fun:_ZN3gin21ObjectTemplateBuilder9SetMethod*RKN4base16BasicStringPieceISsEERKT_
   fun:_ZN10extensions19TestServiceProvider24GetObjectTemplateBuilderEPN2v87IsolateE
}
{
   bug_431213_d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gin22CreateFunctionTemplateIF*IsolateEN4base8CallbackIT_EEi
   fun:_ZN3gin12_GLOBAL__N_114CallbackTraitsI*
   fun:_ZN3gin21ObjectTemplateBuilder9SetMethod*RKN4base16BasicStringPieceISsEERKT_
   fun:_ZN10extensions12_GLOBAL__N_111TestNatives24GetObjectTemplateBuilderEPN2v87IsolateE
}
{
   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
}
{
   bug_457557
   Memcheck:Leak
   fun:calloc
   fun:pthread_setspecific
   fun:_ZN4base8internal19ThreadLocalPlatform14SetValueInSlotEjPv
   fun:_ZN4base18ThreadLocalPointerIvE3SetEPv
   fun:_ZN4base18ThreadLocalBoolean3SetEb
   fun:_ZN4base12_GLOBAL__N_112WorkerThread10ThreadMainEv
   fun:_ZN4base12_GLOBAL__N_110ThreadFuncEPv
}

