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

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

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

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

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

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

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

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

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

{
   # webkit leak?  See http://crbug.com/9503
   bug_9503
   Memcheck:Leak
   ...
   fun:_ZN19TestWebViewDelegate24UpdateSelectionClipboardEb
}
{
   # very common in ui tests
   bug_16091
   Memcheck:Leak
   ...
   fun:_ZN4base11MessageLoop22AddDestructionObserverEPNS0_19DestructionObserverE
   ...
   fun:_ZN3IPC11SyncChannel11SyncContext15OnChannelOpenedEv
}
{
   # very common in ui tests
   bug_16092
   Memcheck:Leak
   fun:*
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
   fun:_ZN4base6Thread10ThreadMainEv
}
{
   # very common in ui tests
   bug_16092b
   Memcheck:Leak
   ...
   fun:_ZNSt11_Deque_baseIN4base11PendingTaskESaIS1_EE17_M_initialize_mapE*
   ...
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
}
{
   # very common in ui tests
   bug_16092c
   Memcheck:Leak
   ...
   fun:_ZNSt14priority_queueIN11MessageLoop11PendingTaskESt6vectorIS1_SaIS1_EESt4lessIS1_EEC1ERKS6_RKS4_
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
   fun:_ZN4base6Thread10ThreadMainEv
}
{
   # also bug 17979.  It's a nest of leaks.
   bug_17385
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC12ChannelProxy7Context13CreateChannel*Channel4ModeE
   fun:_ZN3IPC12ChannelProxy4Init*
   ...
   fun:_ZN3IPC11SyncChannel*Channel4Mode*Listener*
}
{
   bug_17540
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base19MessagePumpLibevent19WatchFileDescriptor*FileDescriptorWatcherEPNS0_7WatcherE
   fun:_ZN4base16MessageLoopForIO19WatchFileDescriptor*MessagePumpLibevent21FileDescriptorWatcherEPNS2_7WatcherE
   ...
   fun:_ZN3IPC*Channel*ConnectEv
   fun:_ZN3IPC12ChannelProxy7Context15OnChannelOpenedEv
}
{
   # slight variant of the above
   bug_19371a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base13WaitableEvent7EnqueueEPNS0_6WaiterE
   fun:_ZN4base13WaitableEvent9TimedWaitERKNS_9TimeDeltaE
   fun:_ZN4base18MessagePumpDefault3RunEPNS_11MessagePump8DelegateE
}
{
   bug_19775_a
   Memcheck:Leak
   ...
   fun:malloc
   fun:sqlite3MemMalloc
   fun:mallocWithAlarm
   fun:sqlite3Malloc
   ...
   fun:sqlite3VdbeExec
   fun:sqlite3Step
   fun:sqlite3_step
   fun:sqlite3_exec
   fun:_ZN3sql10Connection7Execute*
   ...
   fun:_ZN7history*Database*Create*
}
{
   bug_19775_c
   Memcheck:Leak
   ...
   fun:openDatabase
   fun:sqlite3_open
   fun:_ZN3sql10Connection12OpenInternalERKSs
}
{
   bug_19775_g
   Memcheck:Leak
   fun:malloc
   fun:sqlite3MemMalloc
   fun:mallocWithAlarm
   fun:sqlite3Malloc
   fun:sqlite3ParserAlloc
   fun:sqlite3RunParser
   fun:sqlite3Prepare
   fun:sqlite3LockAndPrepare
   fun:sqlite3_prepare*
}
{
   bug_19775_h
   Memcheck:Leak
   ...
   fun:malloc
   fun:sqlite3MemMalloc
   fun:mallocWithAlarm
   fun:sqlite3Malloc
   ...
   fun:yy_reduce
}
# The following three suppressions are related to the workers code.
{
   bug_27837
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19WebSharedWorkerStub9OnConnectEii
}
{
   bug_32085
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIN7content21NotificationRegistrar6RecordEE8allocate*
   fun:_ZNSt12_Vector_baseIN7content21NotificationRegistrar6RecordESaIS*
   fun:_ZNSt6vectorIN7content21NotificationRegistrar6RecordESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S*
   fun:_ZNSt6vectorIN7content21NotificationRegistrar6RecordESaIS*
   fun:_ZN7content21NotificationRegistrar3Add*
}
{
   bug_32273_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC12ChannelProxy4SendEPNS_7MessageE
   fun:_ZN3IPC11SyncChannel15SendWithTimeoutEPNS_7MessageEi
   fun:_ZN3IPC11SyncChannel4SendEPNS_7MessageE
   fun:_ZN11ChildThread4SendEPN3IPC7MessageE
   fun:_ZN12RenderThread4SendEPN3IPC7MessageE
   fun:_ZN12RenderWidget4SendEPN3IPC7MessageE
   fun:_ZN12RenderWidget16DoDeferredUpdateEv
   fun:_ZN12RenderWidget20CallDoDeferredUpdateEv
}
{
   bug_32273_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN24BrowserRenderProcessHost4SendEPN3IPC7MessageE
   fun:_ZN16RenderWidgetHost4SendEPN3IPC7MessageE
}
{
   bug_32624_b
   Memcheck:Leak
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:secmod_ModuleInit
}
{
   bug_32624_c
   Memcheck:Leak
   ...
   fun:malloc
   ...
   fun:PORT_Alloc_Util
   ...
   fun:PK11_InitPin
}
{
   bug_32624_f
   Memcheck:Leak
   ...
   fun:CERT_PKIXVerifyCert
   fun:_ZN3net12_GLOBAL__N_114PKIXVerifyCertE*
}
{
   bug_32624_g
   Memcheck:Leak
   ...
   fun:CERT_VerifySignedData
   fun:cert_VerifyCertChain
   fun:CERT_VerifyCertChain
   fun:CERT_VerifyCert
}
{
   bug_42842
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19TestWebViewDelegate12createWorkerEPN5blink8WebFrameEPNS0_15WebWorkerClientE
   fun:_ZN5blink19WebWorkerClientImpl24createWorkerContextProxyEPN7blink6WorkerE
   fun:_ZN5blink18WorkerContextProxy6createEPNS_6WorkerE
   fun:_ZN5blink6WorkerC1EPNS_22ScriptExecutionContextE
   fun:_ZN5blink6Worker6createERKN3WTF6StringEPNS_22ScriptExecutionContextERi
   fun:_ZN5blink8V8Worker19constructorCallbackERKN2v89ArgumentsE
}
{
   bug_42942_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3sql10Connection18GetCachedStatementERKNS_11StatementIDEPKc
   fun:_ZN3sql9MetaTable19PrepareGetStatementEPNS_9StatementEPKc
   fun:_ZN3sql9MetaTable8GetValueEPKcPi
   fun:_ZN3sql9MetaTable26GetCompatibleVersionNumberEv
   ...
   fun:_ZN3net13CookieMonster9InitStoreEv
}
{
   bug_42942_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3sql10Connection18GetCachedStatementERKNS_11StatementIDEPKc
   fun:_ZN3sql9MetaTable19PrepareSetStatementEPNS_9StatementEPKc
   fun:_ZN3sql9MetaTable8SetValueEPKci
   fun:_ZN3sql9MetaTable16SetVersionNumberEi
   ...
   fun:_ZN3net13CookieMonster9InitStoreEv
}
{
   bug_64887_a
   Memcheck:Uninitialized
   ...
   fun:*vfprintf
   ...
   fun:_ZN7testing*PrintByteSegmentInObjectTo*
   ...
   fun:_ZN7testing*PrintBytesInObjectTo*
   fun:_ZN7testing9internal220PrintBytesInObjectToEPKh*
   fun:_ZN7testing9internal220TypeWithoutFormatter*
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcE*
}
{
   bug_64887_b
   Memcheck:Uninitialized
   ...
   fun:_ZNSolsEx
   fun:_ZN7testing9internal220TypeWithoutFormatterIN5media7PreloadELNS0_8TypeKindE1EE10PrintValueERKS3_PSo
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcEN5media7PreloadEEERSt13basic_ostreamIT_T0_ESA_RKT1_
   fun:_ZN16testing_internal26DefaultPrintNonContainerToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal14DefaultPrintToIN5media7PreloadEEEvcNS0_13bool_constantILb0EEERKT_PSo
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal16UniversalPrinterIN5media7PreloadEE5PrintERKS3_PSo
   fun:_ZN7testing8internal18TuplePrefixPrinter*
   fun:_ZN7testing8internal12PrintTupleToINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKNSt3tr15tupleIT*
   fun:_ZN7testing8internal16UniversalPrinterINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal14UniversalPrintINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZNK7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE32UntypedDescribeUninterestingCallEPKvPSo
   fun:_ZN7testing8internal25UntypedFunctionMockerBase17UntypedInvokeWithEPKv
   fun:_ZN7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE10InvokeWithERKNSt3tr15tupleIS3*
   fun:_ZN7testing8internal14FunctionMockerIFvN5media7PreloadEEE6InvokeES3_
   fun:_ZN5media11MockDemuxer10SetPreloadENS_7PreloadE
}
{
   bug_64887_c
   Memcheck:Uninitialized
   ...
   fun:_ZNSolsEx
   fun:_ZN7testing9internal220TypeWithoutFormatterIN5media7PreloadELNS0_8TypeKindE1EE10PrintValueERKS3_PSo
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcEN5media7PreloadEEERSt13basic_ostreamIT_T0_ESA_RKT1_
   fun:_ZN16testing_internal26DefaultPrintNonContainerToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal14DefaultPrintToIN5media7PreloadEEEvcNS0_13bool_constantILb0EEERKT_PSo
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKT_PSo
   fun:_ZN7testing8internal16UniversalPrinterIN5media7PreloadEE5PrintERKS3_PSo
   fun:_ZN7testing8internal18TuplePrefixPrinter*
   fun:_ZN7testing8internal12PrintTupleToINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal7PrintToIN5media7PreloadEEEvRKNSt3tr15tupleIT*
   fun:_ZN7testing8internal16UniversalPrinterINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZN7testing8internal14UniversalPrintINSt3tr15tupleIN5media7PreloadENS2*
   fun:_ZNK7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE32UntypedDescribeUninterestingCallEPKvPSo
   fun:_ZN7testing8internal25UntypedFunctionMockerBase17UntypedInvokeWithEPKv
   fun:_ZN7testing8internal18FunctionMockerBaseIFvN5media7PreloadEEE10InvokeWithERKNSt3tr15tupleIS3*
   fun:_ZN7testing8internal14FunctionMockerIFvN5media7PreloadEEE6InvokeES3_
   fun:_ZN5media11MockDemuxer10SetPreloadENS_7PreloadE
}
{
   bug_65940_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC12ChannelProxy7Context13CreateChannelERKNS_13ChannelHandleERKNS_7Channel4ModeE
   fun:_ZN3IPC12ChannelProxy4InitERKNS_13ChannelHandleENS_7Channel4ModeEP11MessageLoopb
   fun:_ZN3IPC12ChannelProxyC2ERKNS_13ChannelHandleENS_7Channel4ModeEP11MessageLoopPNS0_7ContextEb
   fun:_ZN3IPC11SyncChannelC1ERKNS_13ChannelHandleENS_7Channel4ModeEPNS4_8ListenerEP11MessageLoopbPN4base13WaitableEventE
}
{
   bug_65940_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC11SyncChannelC1ERKNS_13ChannelHandleENS_7Channel4ModeEPNS_8ListenerEPN4base22SingleThreadTaskRunnerEbPNS8_13WaitableEventE
   fun:_ZN7content11ChildThread4InitEv
   fun:_ZN7content11ChildThreadC2ERKSs
}
{
   bug_65940_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEEE8allocateEmPKv
   fun:_ZNSt12_Vector_baseI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEESaIS4_EE11_M_allocateEm
   fun:_ZNSt6vectorI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_
   fun:_ZNSt6vectorI13scoped_refptrIN3IPC12ChannelProxy13MessageFilterEESaIS4_EE9push_backERKS4_
   fun:_ZN3IPC12ChannelProxy7Context11OnAddFilterEv
}
{
   bug_65940_d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content11ChildThread4InitEv
   fun:_ZN7content11ChildThreadC*
   ...
   fun:_ZN7content21WebRTCAudioDeviceTest5SetUpEv
}
{
   bug_65940_e
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content16RenderThreadImpl4InitEv
   fun:_ZN7content16RenderThreadImplC*
   ...
   fun:_ZN7content21WebRTCAudioDeviceTest5SetUpEv
}
{
   bug_66853_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11ProfileImpl14GetHostZoomMapEv
   ...
   fun:_ZNK17ProfileImplIOData6Handle27GetMainRequestContextGetterEv
   fun:_ZN11ProfileImpl17GetRequestContextEv
   fun:_ZN19SafeBrowsingService5StartEv
   fun:_ZN19SafeBrowsingService10InitializeEv
   fun:_ZN22ResourceDispatcherHost10InitializeEv
   fun:_ZN18BrowserProcessImpl28CreateResourceDispatcherHostEv
   fun:_ZN18BrowserProcessImpl24resource_dispatcher_hostEv
   fun:_ZN16ExtensionService4InitEv
   fun:_ZN11ProfileImpl14InitExtensionsE*
   fun:_ZN14ProfileManager10AddProfileEP7Profileb
}
{
   bug_67142
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN16ChildProcessHost13CreateChannelEv
   fun:_ZN14GpuProcessHost4InitEv
}
{
   bug_67261
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3sql10Connection18GetUniqueStatementEPKc
   fun:_ZN3sql10Connection18GetCachedStatementERKNS_11StatementIDEPKc
   fun:_ZN8appcache16AppCacheDatabase22PrepareCachedStatementERKN3sql11StatementIDEPKcPNS1_9StatementE
}
{
   bug_67553
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNSt3mapISs13scoped_refptrIK9ExtensionESt4lessISsESaISt4pairIKSsS3_EEEixERS7_
   fun:_ZN16ExtensionInfoMap12AddExtensionEPK9Extension
}
{
   bug_68553
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net25DiskCacheBasedSSLHostInfoC1ERKSsRKNS_9SSLConfigEPNS_12CertVerifierEPNS_9HttpCacheE
   fun:_ZN3net9HttpCache25SSLHostInfoFactoryAdaptor10GetForHostERKSsRKNS_9SSLConfigE
   fun:_ZN3net13SSLConnectJob12DoTCPConnectEv
   fun:_ZN3net13SSLConnectJob6DoLoopEi
   fun:_ZN3net13SSLConnectJob15ConnectInternalEv
   fun:_ZN3net10ConnectJob7ConnectEv
   fun:_ZN3net8internal26ClientSocketPoolBaseHelper21RequestSocketInternalERKSsPKNS1_7RequestE
   fun:_ZN3net8internal26ClientSocketPoolBaseHelper13RequestSocketERKSsPKNS1_7RequestE
   fun:_ZN3net20ClientSocketPoolBaseINS_15SSLSocketParamsEE13RequestSocketERKSsRK13scoped_refptrIS1_ENS_15RequestPriorityEPNS_18ClientSocketHandleEP14CallbackRunnerI6Tuple1IiEERKNS_11BoundNetLogE
   fun:_ZN3net19SSLClientSocketPool13RequestSocketERKSsPKvNS_15RequestPriorityEPNS_18ClientSocketHandleEP14CallbackRunnerI6Tuple1IiEERKNS_11BoundNetLogE
   fun:_ZN3net18ClientSocketHandle4InitINS_15SSLSocketParamsENS_19SSLClientSocketPoolEEEiRKSsRK13scoped_refptrIT_ENS_15RequestPriorityEP14CallbackRunnerI6Tuple1IiEEPT0_RKNS_11BoundNetLogE
}
{
   Bug_69934_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN*NPObjectProxy10NPAllocateEP4_NPPP7NPClass
   fun:_NPN_CreateObject
   fun:_ZN5blink11WebBindings12createObjectEP4_NPPP7NPClass
}
{
   Bug_69934_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC11SyncMessage13GenerateReplyEPKNS_7MessageE
   fun:_ZN3IPC17SyncMessageSchema*
}
{
   bug_71728
   Memcheck:Leak
   fun:_Znw*
   fun:*DownloadFileTest5SetUpEv
}
{
   bug_72544
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF10RefCountedIN7blink14StyleSheetListEEnwEj
   fun:_ZN5blink14StyleSheetList6createEPNS_8DocumentE
   fun:_ZN5blink8DocumentC2EPNS_5FrameERKNS_4KURLEbbS5_
   fun:_ZN5blink12HTMLDocumentC1EPNS_5FrameERKNS_4KURLES5_
   fun:_ZN5blink12HTMLDocument6createEPNS_5FrameERKNS_4KURLES5_
   fun:_ZN5blink17DOMImplementation14createDocumentERKN3WTF6StringEPNS_5FrameERKNS_4KURLEb
   fun:_ZN5blink14DocumentWriter14createDocumentERKNS_4KURLE
   fun:_ZN5blink14DocumentWriter5beginERKNS_4KURLEbPNS_14SecurityOriginE
   fun:_ZN5blink11FrameLoader4initEv
   fun:_ZN5blink5Frame4initEv
   fun:_ZN5blink12WebFrameImpl21initializeAsMainFrameEPNS_11WebViewImplE
   fun:_ZN5blink11WebViewImpl19initializeMainFrameEPNS_14WebFrameClientE
   fun:_ZN10RenderViewC1EP16RenderThreadBaseiiRK19RendererPreferencesRK14WebPreferencesPN4base14RefCountedDataIiEEixRKSbItNS8_20string16_char_traitsESaItEE
   fun:_ZN10RenderView6CreateEP16RenderThreadBaseiiRK19RendererPreferencesRK14WebPreferencesPN4base14RefCountedDataIiEEixRKSbItNS8_20string16_char_traitsESaItEE
   fun:_ZN12RenderThread15OnCreateNewViewERK18ViewMsg_New_Params
}
{
   bug_72698_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN13ProfileIOData20InitializeOnUIThreadEP7Profile
}
{
   bug_73415
   Memcheck:Unaddressable
   fun:_ZN23AccessibilityController36shouldDumpAccessibilityNotificationsEv
   fun:_ZN11WebViewHost29postAccessibilityNotificationERKN5blink22WebAccessibilityObjectENS0_28WebAccessibilityNotificationE
   fun:_ZN5blink16ChromeClientImpl29postAccessibilityNotificationEPN7blink19AccessibilityObjectENS1_13AXObjectCache14AXNotificationE
   fun:_ZN5blink13AXObjectCache24postPlatformNotificationEPNS_19AccessibilityObjectENS0_14AXNotificationE
}
{
   bug_73675
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN20LayoutTestController13waitUntilDoneERKN3WTF6VectorI10CppVariantLj0EEEPS2_
   fun:_ZN13CppBoundClass14MemberCallbackI20LayoutTestControllerE3runERKN3WTF6VectorI10CppVariantLj0EEEPS5_
   fun:_ZN13CppBoundClass6invokeEPvPK10_NPVariantjPS1_
   fun:_ZN11CppNPObject6invokeEP8NPObjectPvPK10_NPVariantjPS3_
   fun:_ZN5blink18npObjectInvokeImplERKN2v89ArgumentsENS_18InvokeFunctionTypeE
   fun:_ZN5blink21npObjectMethodHandlerERKN2v89ArgumentsE
   fun:_ZN2v88internal19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_47_GLOBAL__N_v8_src_builtins.cc_*BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEE
   obj:*
}
{
   bug_75019
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN14GpuDataManagerC1Ev
   fun:_ZN22DefaultSingletonTraitsI14GpuDataManagerE3NewEv
   fun:_ZN9SingletonI14GpuDataManager22DefaultSingletonTraitsIS0_ES0_E3getEv
   fun:_ZN14GpuDataManager11GetInstanceEv
   fun:_Z11BrowserMainRK18MainFunctionParams
   fun:_ZN20InProcessBrowserTest5SetUpEv
}
{
   bug_76197a
   Memcheck:Unaddressable
   fun:sqlite3DbFree
   fun:releaseMemArray
   fun:sqlite3VdbeDelete
   fun:sqlite3VdbeFinalize
   fun:sqlite3_finalize
   fun:_ZN3sql10Connection12StatementRef5CloseEv
   fun:_ZN3sql10Connection12StatementRefD2Ev
   fun:_ZN3sql10Connection12StatementRefD1Ev
   fun:_ZNK4base10RefCountedIN3sql10Connection12StatementRefEE7ReleaseEv
   fun:_ZN13scoped_refptrIN3sql10Connection12StatementRefEED2Ev
   fun:_ZN13scoped_refptrIN3sql10Connection12StatementRefEED1Ev
   fun:_ZNSt4pairIKN3sql11StatementIDE13scoped_refptrINS0_10Connection12StatementRefEEED2Ev
   fun:_ZNSt4pairIKN3sql11StatementIDE13scoped_refptrINS0_10Connection12StatementRefEEED1Ev
   fun:_ZN9__gnu_cxx13new_allocatorISt4pairIKN3sql11StatementIDE13scoped_refptrINS2_10Connection12StatementRefEEEE7destroyEPS9_
   fun:_ZNSt8_Rb_treeIN3sql11StatementIDESt4pairIKS1_13scoped_refptrINS0_10Connection12StatementRefEEESt10_Select1stIS8_ESt4lessIS1_ESaIS8_EE12destroy_nodeEPSt13_Rb_tree_nodeIS8_E
   fun:_ZNSt8_Rb_treeIN3sql11StatementIDESt4pairIKS1_13scoped_refptrINS0_10Connection12StatementRefEEESt10_Select1stIS8_ESt4lessIS1_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E
   fun:_ZNSt8_Rb_treeIN3sql11StatementIDESt4pairIKS1_13scoped_refptrINS0_10Connection12StatementRefEEESt10_Select1stIS8_ESt4lessIS1_ESaIS8_EE5clearEv
   fun:_ZNSt3mapIN3sql11StatementIDE13scoped_refptrINS0_10Connection12StatementRefEESt4lessIS1_ESaISt4pairIKS1_S5_EEE5clearEv
   fun:_ZN3sql10Connection5CloseEv
   fun:_ZN3sql10ConnectionD2Ev
   fun:_ZN3sql10ConnectionD1Ev
   fun:_ZN7history16InMemoryDatabaseD0Ev
}
{
   bug_76197b
   Memcheck:Unaddressable
   ...
   fun:sqlite3_step
   fun:sqlite3_exec
   fun:_ZN3sql10Connection7ExecuteEPKc
   fun:_ZN7history11URLDatabase31CreateKeywordSearchTermsIndicesEv
   fun:_ZN7history16InMemoryDatabase12InitFromDiskE*
   fun:_ZN7history22InMemoryHistoryBackend4InitE*
}
{
   bug_79654_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNSt3setIP16RenderWidgetHostSt4lessIS1_ESaIS1_EE6insertERKS1_
   fun:_ZN*9TabLoader12TabIsLoadingEP24NavigationControllerImpl
   fun:_ZN*18SessionRestoreImpl21ProcessSessionWindowsEPSt6vectorIP13SessionWindowSaIS3_EE
   fun:_ZN*18SessionRestoreImpl12OnGotSessionEiPSt6vectorIP13SessionWindowSaIS3_EE
}
{
   bug_79654_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*RenderWidgetHost*
   ...
   fun:_ZNSt3setIP16RenderWidgetHostSt4lessIS1_ESaIS1_EE6insertERKS1_
   fun:*TabLoader7ObserveEiRKN7content18NotificationSourceERKNS1_19NotificationDetailsE
   fun:_ZN23NotificationServiceImpl*
   fun:_ZN15WebContentsImpl12SetIsLoading*
   fun:_ZN15WebContentsImpl14RenderViewGone*
}
{
   bug_84265
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12LoginHandler6CreateEPN3net17AuthChallengeInfoEPNS0_10URLRequestE
   fun:_Z17CreateLoginPromptPN3net17AuthChallengeInfoEPNS_10URLRequestE
   fun:_ZN22ResourceDispatcherHost14OnAuthRequiredEPN3net10URLRequestEPNS0_17AuthChallengeInfoE
   fun:_ZN3net13URLRequestJob21NotifyHeadersCompleteEv
}
{
   bug_84770_a
   Memcheck:Unaddressable
   fun:_ZN5blink21FrameLoaderClientImpl12allowPluginsEb
   fun:_ZN5blink14SubframeLoader12allowPluginsENS_28ReasonForCallingAllowPluginsE
}
{
   bug_84770_b
   Memcheck:Unaddressable
   fun:_ZN5blink21FrameLoaderClientImpl15allowJavaScriptEb
   fun:_ZN5blink16ScriptController17canExecuteScriptsENS_33ReasonForCallingCanExecuteScriptsE
}
{
   bug_84770_c
   Memcheck:Unaddressable
   fun:_ZN5blink21FrameLoaderClientImpl20allowScriptExtensionERKN3WTF6StringEi
   fun:_ZN5blink16V8DOMWindowShell16createNewContextEN2v86HandleINS1_6ObjectEEEi
}
{
   bug_86481
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocator*FilePath*allocate*
   fun:_ZNSt11_Deque_base*FilePath*_M_allocate_map*
   fun:_ZNSt11_Deque_base*FilePath*_M_initialize_map*
   fun:_ZNSt11_Deque_baseI*FilePath*
   fun:_ZNSt5dequeI*FilePath*
   fun:_ZNSt5stackI*FilePath*deque*
   fun:_ZN9file_util14FileEnumeratorC1E*
   fun:_ZN7history20ExpireHistoryBackend25DoExpireHistoryIndexFilesEv
}
{
   bug_87423
   Memcheck:Uninitialized
   fun:_ZNK3net15HttpBasicStream23LogNumRttVsBytesMetricsEv
   fun:_ZN3net22HttpNetworkTransaction18DoReadBodyCompleteEi
   fun:_ZN3net22HttpNetworkTransaction6DoLoopEi
   fun:_ZN3net22HttpNetworkTransaction4ReadEPNS_8IOBufferEiP14CallbackRunnerI6Tuple1IiEE
   fun:_Z15ReadTransactionPN3net15HttpTransactionEPSs
   fun:_ZN3net73HttpNetworkTransactionTest_ErrorResponseTofHttpsConnectViaHttpsProxy_Test8TestBodyEv
}
{
   bug_90215_c
   Memcheck:Leak
   ...
   fun:_ZN3net13URLRequestJob21NotifyRestartRequiredEv
   fun:_ZN8appcache21AppCacheURLRequestJob13BeginDeliveryEv
}
{
   bug_90215_d
   Memcheck:Leak
   ...
   fun:_ZN8appcache19AppCacheStorageImpl23RunOnePendingSimpleTaskEv
}
{
   bug_90215_e
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8appcache15AppCacheService10InitializeE*
   fun:_ZN21ChromeAppCacheService20InitializeOnIOThreadE*
}
{
   bug_90215_f
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN26TransportSecurityPersisterC1EPN3net22TransportSecurityStateERKN4base8FilePathEb
   fun:_ZNK13ProfileIOData4InitEPSt3mapISs10linked_ptrIN3net20URLRequestJobFactory15ProtocolHandlerEESt4lessISsESaISt4pairIKSsS5_EEE
   fun:_ZN12_GLOBAL__N_114FactoryForMain6CreateEv
   fun:_ZN29ChromeURLRequestContextGetter20GetURLRequestContextEv
   fun:_ZN7content21ChromeAppCacheService20InitializeOnIOThreadERKN4base8FilePathEPNS_15ResourceContextEPN3net23URLRequestContextGetterE13scoped_refptrIN5quota20SpecialStoragePolicyEE
}
{
   bug_90240
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN2pp5proxy26PPP_Instance_Private_Proxy22OnMsgGetInstanceObjectEiNS0_24SerializedVarReturnValueE
}
{
   bug_90487a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPN5quota11QuotaClientEEE8allocateEjPKv
   fun:_ZNSt10_List_baseIPN5quota11QuotaClientESaIS2_EE11_M_get_nodeEv
   fun:_ZNSt4listIPN5quota11QuotaClientESaIS2_EE14_M_create_nodeERKS2_
   fun:_ZNSt4listIPN5quota11QuotaClientESaIS2_EE9_M_insertESt14_List_iteratorIS2_ERKS2_
   fun:_ZNSt4listIPN5quota11QuotaClientESaIS2_EE9push_backERKS2_
   fun:_ZN5quota12QuotaManager14RegisterClientEPNS_11QuotaClientE
   fun:_ZN5quota17QuotaManagerProxy14RegisterClientEPNS_11QuotaClientE
}
{
   bug_93250a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*SHA1Fingerprint*
   fun:_ZN3net16CertVerifyResultaSERKS0_
   fun:_ZN3net12CertVerifier12HandleResultEPNS_15X509CertificateERKSsiiRKNS_16CertVerifyResultE
   fun:_ZN3net18CertVerifierWorker7DoReplyEv
}
{
   bug_93250b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMNS_6subtle18TaskClosureAdapterEFvvEPS2_EENS_8internal20InvokerStorageHolderINS6_15InvokerStorage1IT_T0_EEEES9_RKSA_
   fun:_ZN4base11MessageLoop8PostTaskERKN15tracked_objects8LocationEP4Task
   fun:_ZN3net18CertVerifierWorker6FinishEv
   fun:_ZN3net18CertVerifierWorker3RunEv
}
{
   bug_93730_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN14ServiceProcess10InitializeEP16MessageLoopForUIRK11CommandLineP19ServiceProcessState
   fun:_Z18ServiceProcessMainRK18MainFunctionParams
   ...
   fun:ChromeMain
   fun:main
}
{
   bug_93730_b
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN4base13LaunchProcessERKSt6vectorISsSaISsEERKNS_13LaunchOptionsEPi
   fun:_ZN4base13LaunchProcessERK11CommandLineRKNS_13LaunchOptionsEPi
   fun:_ZN21ServiceProcessControl8Launcher5DoRunEv
}
{
   bug_93730_c
   Memcheck:Leak
   fun:_Znw*
   fun:_Z17NewRunnableMethodIN21ServiceProcessControl8LauncherEMS1_FvvEEP14CancelableTaskPT_T0_
   fun:_ZN21ServiceProcessControl8Launcher5DoRunEv
}
{
   bug_93730_d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC11SyncChannelC1ERKNS_13ChannelHandleENS_7Channel4ModeEPNS4_8ListenerEPN4base16MessageLoopProxyEbPNS8_13WaitableEventE
   fun:_ZN16ServiceIPCServer13CreateChannelEv
   fun:_ZN16ServiceIPCServer4InitEv
   fun:_ZN14ServiceProcess10InitializeEP16MessageLoopForUIRK11CommandLineP19ServiceProcessState
   fun:_Z18ServiceProcessMainRK18MainFunctionParams
   ...
   fun:ChromeMain
   fun:main
}
{
   bug_94764
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8remoting13ClientSession11UnpressKeysEv
   fun:_ZN8remoting34ClientSessionTest_UnpressKeys_Test8TestBodyEv
}
{
   bug_95448
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsPN4base5ValueEEEE8allocateEjPKv
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE14_M_create_nodeERKS5_
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE10_M_insert_EPKSt18_Rb_tree_node_baseSE_RKS5_
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsPN4base5ValueEESt10_Select1stIS5_ESt4lessISsESaIS5_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS5_ERKS5_
   fun:_ZNSt3mapISsPN4base5ValueESt4lessISsESaISt4pairIKSsS2_EEE6insertESt17_Rb_tree_iteratorIS7_ERKS7_
   fun:_ZNSt3mapISsPN4base5ValueESt4lessISsESaISt4pairIKSsS2_EEEixERS6_
   fun:_ZN4base15DictionaryValue23SetWithoutPathExpansionERKSsPNS_5ValueE
   fun:_ZN4base15DictionaryValue3SetERKSsPNS_5ValueE
   fun:_ZN4base15DictionaryValue9SetStringERKSsRKSbItNS_20string16_char_traitsESaItEE
   fun:_ZN11PluginPrefs23CreatePluginFileSummaryERKN6webkit13WebPluginInfoE
   fun:_ZN11PluginPrefs19OnUpdatePreferencesESt6vectorIN6webkit13WebPluginInfoESaIS2_EES0_INS1_5npapi11PluginGroupESaIS6_EE
}
{
   bug_98867
   Memcheck:Jump
   obj:*
   obj:*
   obj:*
}
{
   bug_99307
   Memcheck:Uninitialized
   fun:modp_b64_encode
   fun:_ZN4base12Base64Encode*
   fun:_ZN11web_ui_util15GetImageDataUrlERK8SkBitmap
   fun:_ZN12_GLOBAL__N_121NetworkInfoDictionary8set_iconERK8SkBitmap
}
{
   bug_100982
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blink12RenderRegion22setRenderBoxRegionInfoEPKNS_9RenderBoxEiib
   fun:_ZNK7blink9RenderBox19renderBoxRegionInfoEPNS_12RenderRegionEiNS0_24RenderBoxRegionInfoFlagsE
   ...
   fun:_ZN5blink11RenderBlock5paintERNS_9PaintInfoERKNS_8IntPointE
}
{
   bug_101750
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF7HashSetIPN7blink16SVGStyledElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEEnwEj
   fun:_ZN5blink21SVGDocumentExtensions18addPendingResourceERKN3WTF12AtomicStringEPNS_16SVGStyledElementE
}
{
   bug_101781_d
   Memcheck:Uninitialized
   fun:_ZN7testing8internal11CmpHelperGEIddEENS_15AssertionResultEPKcS4_RKT_RKT0_
   fun:_ZN3gfx31JPEGCodec_EncodeDecodeRGBA_Test8TestBodyEv
}
{
   bug_102327a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN15tracked_objects10ThreadData10InitializeEv
   fun:_ZN15tracked_objects10ThreadData30InitializeAndSetTrackingStatusEb
   fun:_ZN15tracked_objects10ThreadData29ShutdownSingleThreadedCleanupEb
}
{
   bug_102327d
   Memcheck:Uninitialized
   fun:_ZN15tracked_objects9DeathData11RecordDeathEiii
   fun:_ZN15tracked_objects10ThreadData11TallyADeathERKNS_6BirthsEii
   fun:_ZN15tracked_objects10ThreadData31TallyRunOnNamedThreadIfTrackingERKN4base12TrackingInfoERKNS_11TrackedTimeES7_
}
{
   Intentional leak of stl map during thread cleanup in profiler
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK15tracked_objects10ThreadData26OnThreadTerminationCleanupEv
}
{
   bug_102831_a
   Memcheck:Leak
   ...
   fun:_ZN17PluginLoaderPosix19LoadPluginsInternalEv
}
{
   bug_104447
   Memcheck:Leak
   ...
   fun:HB_OpenTypeShape
   fun:arabicSyriacOpenTypeShape
   fun:HB_ArabicShape
   fun:HB_ShapeItem
   fun:_ZN5blink21ComplexTextController11shapeGlyphsEv
   fun:_ZN5blink21ComplexTextController13nextScriptRunEv
   fun:_ZN5blink21ComplexTextController14widthOfFullRunEv
   fun:_ZNK7blink4Font24floatWidthForComplexTextERKNS_7TextRunEPN3WTF7HashSetIPKNS_14SimpleFontDataENS4_7PtrHashIS8_EENS4_10HashTraitsIS8_EEEEPNS_13GlyphOverflowE
   fun:_ZNK7blink4Font5widthERKNS_7TextRunERiRN3WTF6StringE
   fun:_ZN5blink14SVGTextMetricsC1EPNS_19RenderSVGInlineTextERKNS_7TextRunE
   fun:_ZN5blink14SVGTextMetrics21measureCharacterRangeEPNS_19RenderSVGInlineTextEjj
   fun:_ZNK7blink30SVGTextLayoutAttributesBuilder25propagateLayoutAttributesEPNS_12RenderObjectERN3WTF6VectorINS_23SVGTextLayoutAttributesELm0EEERjRt
}
{
   bug_104806_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN15tracked_objects10ThreadData19TallyABirthIfActiveERKNS_8LocationE
   fun:_ZN4base12TrackingInfoC?ERKN15tracked_objects8LocationENS_9TimeTicksE
}
{
   bug_104806_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNSt3mapIPKN15tracked_objects6BirthsENS0_9DeathDataESt4lessIS3_ESaISt4pairIKS3_S4_EEEixERS8_
   fun:_ZN15tracked_objects10ThreadData11TallyADeathERKNS_6BirthsEii
   fun:_ZN15tracked_objects10ThreadData32TallyRunOnWorkerThreadIfTrackingEPKNS_6BirthsERKNS_11TrackedTimeES6_S6_
}
{
   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:_ZN15tracked_objects10ThreadData23InitializeThreadContextERKSs
   fun:_ZN4base14PlatformThread7SetNameEPKc
}
{
   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_146464
   Memcheck:Leak
   fun:realloc
   fun:add_codeset.isra.10
   ...
   fun:XCreatePixmap
   fun:XCreateBitmapFromData
   ...
   fun:_ZN4aura19RootWindowHostLinuxC1EPNS_22RootWindowHostDelegateERKN3gfx4RectE
}
{
   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_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_331063
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink11RenderImage12imageChangedEPvPKNS_7IntRectE
   fun:_ZN5blink12RenderObject12imageChangedEPNS_13ImageResourceEPKNS_7IntRectE
   fun:_ZN5blink13ImageResource12didAddClientEPNS_14ResourceClientE
   fun:_ZN5blink8Resource9addClientEPNS_14ResourceClientE
   fun:_ZN5blink19RenderImageResource16setImageResourceEPNS_13ImageResourceE
   fun:_ZN5blink30PasswordGeneratorButtonElement11updateImageEv
   fun:_ZN5blink30PasswordGeneratorButtonElement6attachERKNS_4Node13AttachContextE
   fun:_ZN5blink13ContainerNode14attachChildrenERKNS_4Node13AttachContextE
}
{
   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:_ZN7content27ServiceWorkerContextWrapper12InitInternalERKN4base8FilePathEPNS1_19SequencedTaskRunnerEPN5quota17QuotaManagerProxyE
}
{
  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_372832
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content27ServiceWorkerContextWrapper12InitInternalERKN4base8FilePathEPNS1_19SequencedTaskRunnerEPNS1_16MessageLoopProxyEPN5quota17QuotaManagerProxyE
}
{
   bug_379359
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content27ServiceWorkerContextWrapperC1EPNS_14BrowserContextE
   fun:_ZN7content20StoragePartitionImpl6CreateEPNS_14BrowserContextEbRKN4base8FilePathE
   fun:_ZN7content23StoragePartitionImplMap3GetERKSsS2_b
   fun:_ZN7content12_GLOBAL__N_129GetStoragePartitionFromConfigEPNS_14BrowserContext*
   fun:_ZN7content14BrowserContext19GetStoragePartitionEPS0_PNS_12SiteInstanceE
   fun:_ZN7content14BrowserContext26GetDefaultStoragePartitionEPS0_
   fun:_ZN7content21ShellBrowserMainParts21PreMainMessageLoopRunEv
   fun:_ZN7content15BrowserMainLoop21PreMainMessageLoopRunEv
}
{
   bug_379943
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7content20StoragePartitionImpl6CreateEPNS_14BrowserContextEbRKN4base8FilePathE
   fun:_ZN7content23StoragePartitionImplMap3GetERKSsS2_b
   fun:_ZN7content12_GLOBAL__N_129GetStoragePartitionFromConfigEPNS_14BrowserContext*
   fun:_ZN7content14BrowserContext19GetStoragePartitionEPS0_PNS_12SiteInstanceE
   fun:_ZN7content14BrowserContext26GetDefaultStoragePartitionEPS0_
   fun:_ZN7content21ShellBrowserMainParts21PreMainMessageLoopRunEv
   fun:_ZN7content15BrowserMainLoop21PreMainMessageLoopRunEv
}
{
   bug_380575
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsPN3net20URLRequestJobFactory15ProtocolHandlerEEEE8allocateEmPKv
   ...
   fun:_ZNSt3mapISsPN3net20URLRequestJobFactory15ProtocolHandlerESt4lessISsESaISt4pairIKSsS3_EEEixERS7_
   fun:_ZN3net24URLRequestJobFactoryImpl18SetProtocolHandlerERKSsPNS_20URLRequestJobFactory15ProtocolHandlerE
   ...
   fun:_ZN7content28ShellURLRequestContextGetter20GetURLRequestContextEv
}
{
   bug_381065
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN5blink18ModulesInitializer4initEv
   fun:_ZN5blink19initializeWithoutV8EPNS_8PlatformE
   fun:_ZN5blink10initializeEPNS_8PlatformE
   fun:_ZN7content27TestBlinkWebUnitTestSupportC2Ev
   fun:_ZN7content27TestBlinkWebUnitTestSupportC1Ev
   fun:_ZN7content17UnitTestTestSuiteC2EPN4base9TestSuiteE
   fun:_ZN7content17UnitTestTestSuiteC1EPN4base9TestSuiteE
}
{
   bug_381156
   Memcheck:Uninitialized
   ...
   fun:_ZN*14SkTDynamicHashI10SkFlatData*
   fun:_ZN16SkFlatDictionaryI7SkPaintNS0_16FlatteningTraitsEE24findAndReturnMutableFlatERKS0_
   fun:_ZN16SkFlatDictionaryI7SkPaintNS0_16FlatteningTraitsEE17findAndReturnFlatERKS0_
   fun:_ZN15SkPictureRecord16getFlatPaintDataERK7SkPaint
   fun:_ZN15SkPictureRecord11addPaintPtrEPK7SkPaint
   fun:_ZN15SkPictureRecord8addPaintERK7SkPaint
   fun:_ZN15SkPictureRecord8drawPathERK6SkPathRK7SkPaint
   fun:_ZN12SkBBoxRecord8drawPathERK6SkPathRK7SkPaint
   fun:_ZN5blink15GraphicsContext8drawPathERK6SkPathRK7SkPaint
   fun:_ZN5blink15GraphicsContext10strokePathERKNS_4PathE
   fun:_ZNK7blink14RenderSVGShape11strokeShapeEPNS_15GraphicsContextE
   fun:_ZNK7blink13RenderSVGPath11strokeShapeEPNS_15GraphicsContextE
   fun:_ZN5blink27RenderSVGResourceSolidColor17postApplyResourceEPNS_12RenderObjectERPNS_15GraphicsContextEtPKNS_4PathEPKNS_14RenderSVGShapeE
   fun:_ZN5blink14RenderSVGShape11strokeShapeEPNS_11RenderStyleEPNS_15GraphicsContextE
   fun:_ZN5blink14RenderSVGShape5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink9RenderBox5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink13RenderSVGRoot13paintReplacedERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink14RenderReplaced5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink11RenderBlock18paintAsInlineBlockEPNS_12RenderObjectERNS_9PaintInfoERKNS_11LayoutPointE
}
{
   bug_385381
   Memcheck:Unaddressable
   fun:_ZN5blink23FrameLoaderStateMachine9advanceToENS0_5StateE
   fun:_ZN5blink11FrameLoader4initEv
   fun:_ZN5blink10LocalFrame4initEv
   fun:_ZN5blink17WebLocalFrameImpl22initializeAsChildFrameEPN7blink9FrameHostEPNS1_10FrameOwnerERKN3WTF12AtomicStringES9_
   fun:_ZN5blink17WebLocalFrameImpl16createChildFrameERKN7blink16FrameLoadRequestEPNS1_21HTMLFrameOwnerElementE
}
{
   bug_385396a
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink11RenderLayer7hitTestERKNS_14HitTestRequestERKNS_15HitTestLocationERNS_13HitTestResultE
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERKNS_15HitTestLocationERNS_13HitTestResultE
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERNS_13HitTestResultE
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
}
{
   bug_385396b
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink11LayoutPointC*ERKNS_8IntPointE
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
}
{
   bug_385396c
   Memcheck:Uninitialized
   fun:_ZNK5blink7IntRect8containsEii
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
}
{
   bug_385396d
   Memcheck:Uninitialized
   fun:_ZNK7blink10LayoutUnit5floorEv
   ...
   fun:_ZN5blink12EventHandler18handleGestureEventERKNS_20PlatformGestureEventE
   fun:_ZN5blink11WebViewImpl18handleGestureEventERKNS_15WebGestureEventE
   fun:_ZN5blink18PageWidgetDelegate16handleInputEventEPN7blink4PageERNS_22PageWidgetEventHandlerERKNS_13WebInputEventE
}
{
   bug_385396e
   Memcheck:Uninitialized
   fun:_ZN5blink15roundedIntPointERKNS_11LayoutPointE
   fun:_ZNK5blink15HitTestLocation12roundedPointEv
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERKNS_15HitTestLocationERNS_13HitTestResultE
   fun:_ZN5blink10RenderView7hitTestERKNS_14HitTestRequestERNS_13HitTestResultE
   fun:_ZN5blink12EventHandler20hitTestResultAtPointERKNS_11LayoutPointEjRKNS_10LayoutSizeE
   fun:_ZN5blink12EventHandler18targetGestureEventERKNS_20PlatformGestureEventEb
}
{
   bug_387435
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content16WebURLLoaderImplC1Ev
   fun:_ZN7content17BlinkPlatformImpl15createURLLoaderEv
   fun:_ZN5blink10PingLoaderC1EPNS_10LocalFrameERNS_15ResourceRequestERKNS_18FetchInitiatorInfoENS_17StoredCredentialsE
   fun:_ZN5blink10PingLoader5startEPNS_10LocalFrameERNS_15ResourceRequestERKNS_18FetchInitiatorInfoENS_17StoredCredentialsE
   fun:_ZN5blink10PingLoader9loadImageEPNS_10LocalFrameERKNS_4KURLE
   fun:_ZN5blink15ResourceFetcher10fetchImageERNS_12FetchRequestE
   fun:_ZN5blink11ImageLoader19doUpdateFromElementEb
   fun:_ZN5blink11ImageLoader4Task3runEv
}
{
   bug_386418
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10WorkerPool16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_b
   fun:_ZN3net16HostResolverImpl16LoopbackProbeJobC1ERKN4base7WeakPtrIS0_EE
   fun:_ZN3net16HostResolverImplC1ERKNS_12HostResolver7OptionsEPNS_6NetLogE
   fun:_ZN8chromeos24HostResolverImplChromeOSC1E13*
}
{
   bug_387993
   Memcheck:Uninitialized
   fun:_ZN11SkBaseMutex7acquireEv
   fun:_ZN18SkAutoMutexAcquireC2EP11SkBaseMutex
   fun:_ZN18SkAutoMutexAcquireC1EP11SkBaseMutex
   fun:_ZN12SkGlyphCache10VisitCacheEP10SkTypefacePK12SkDescriptorPFbPKS_PvES7_
   fun:_ZN12SkGlyphCache11DetachCacheEP10SkTypefacePK12SkDescriptor
   fun:_ZL14DetachDescProcP10SkTypefacePK12SkDescriptorPv
   fun:_ZNK7SkPaint14descriptorProcEPK18SkDevicePropertiesPK8SkMatrixPFvP10SkTypefacePK12SkDescriptorPvESB_b
   fun:_ZNK7SkPaint11detachCacheEPK18SkDevicePropertiesPK8SkMatrixb
   fun:_ZN16SkAutoGlyphCacheC2ERK7SkPaintPK18SkDevicePropertiesPK8SkMatrix
   fun:_ZN16SkAutoGlyphCacheC1ERK7SkPaintPK18SkDevicePropertiesPK8SkMatrix
}
{
   bug_388013
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blinkL33createInjectedScriptHostV8WrapperEPNS_18InjectedScriptHostEPN2v87IsolateE
   fun:_ZN5blink21InjectedScriptManager20createInjectedScriptERKN3WTF6StringEPNS_11ScriptStateEi
   fun:_ZN5blink21InjectedScriptManager17injectedScriptForEPNS_11ScriptStateE
   fun:_ZN5blink22InspectorDebuggerAgent17currentCallFramesEv
   fun:_ZN5blink22InspectorDebuggerAgent8didPauseEPNS_11ScriptStateERKNS_11ScriptValueES5_RKN3WTF6VectorINS6_6StringELm0ENS6_16DefaultAllocatorEEE
   ...
   fun:_ZN2v88internal5Debug17CallEventCallbackENS_10DebugEventENS0_6HandleINS0_6ObjectEEES5_PNS_5Debug10ClientDataE
   fun:_ZN2v88internal5Debug17ProcessDebugEventENS_10DebugEventENS0_6HandleINS0_8JSObjectEEEb
   fun:_ZN2v88internal5Debug12OnDebugBreakENS0_6HandleINS0_6ObjectEEEb
}
{
   bug_388013_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN5blinkL33createInjectedScriptHostV8WrapperEPNS_18InjectedScriptHostEPN2v87IsolateE
   fun:_ZN5blink21InjectedScriptManager20createInjectedScriptERKN3WTF6StringEPNS_11ScriptStateEi
   fun:_ZN5blink21InjectedScriptManager17injectedScriptForEPNS_11ScriptStateE
   fun:_ZN5blink18WorkerRuntimeAgent21injectedScriptForEvalEPN3WTF6StringEPKi
   fun:_ZN5blink21InspectorRuntimeAgent8evaluateEPN3WTF6String*
   fun:_ZThn32_N5blink21InspectorRuntimeAgent8evaluateEPN3WTF6String*
   fun:_ZN5blink30InspectorBackendDispatcherImpl16Runtime_evaluateElPNS_10JSONObjectEPNS_9JSONArrayE
   fun:_ZN5blink30InspectorBackendDispatcherImpl8dispatchERKN3WTF6StringE
   fun:_ZN5blink25WorkerInspectorController27dispatchMessageFromFrontendERKN3WTF6StringE
   fun:_ZN5blinkL30dispatchOnInspectorBackendTaskEPNS_16ExecutionContextERKN3WTF6StringE
}
{
   bug_388668
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN20data_reduction_proxy69DataReductionProxyUsageStatsTest_isDataReductionProxyUnreachable_Test8TestBodyEv
}
{
   bug_392912
   Memcheck:Uninitialized
   fun:_ZNK8SkStroke10strokePathERK6SkPathPS0_
   fun:_ZNK11SkStrokeRec11applyToPathEP6SkPathRKS0_
   fun:_ZNK7SkPaint11getFillPathERK6SkPathPS0_PK6SkRect
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixbb
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixb
   fun:_ZN14SkBitmapDevice8drawPathERK6SkDrawRK6SkPathRK7SkPaintPK8SkMatrixb
   fun:_ZN8SkCanvas8drawPathERK6SkPathRK7SkPaint
}
{
   bug_392936
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10WorkerPool16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_b
   fun:_ZN3net16HostResolverImpl16LoopbackProbeJobC2ERKN4base7WeakPtrIS0_EE
   fun:_ZN3net16HostResolverImplC1ERKNS_12HostResolver7OptionsEPNS_6NetLogE
   fun:_ZN8chromeos24HostResolverImplChromeOSC1E13scoped_refptrIN4base16MessageLoopProxyEEPNS_19NetworkStateHandlerERKN3net12HostResolver7OptionsEPNS7_6NetLogE
   fun:_ZN8chromeos24HostResolverImplChromeOS25CreateHostResolverForTestE13scoped_refptrIN4base16MessageLoopProxyEEPNS_19NetworkStateHandlerE
   fun:_ZN28HostResolverImplChromeOSTest22InitializeHostResolverEv
}
{
   bug_394558
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN32ProfileSyncComponentsFactoryMockC1Ev
}
{
   bug_394624
   Memcheck:Leak
   ...
   fun:_ZN3net24URLRequestJobFactoryImpl18SetProtocolHandlerERKSsPNS_20URLRequestJobFactory15ProtocolHandlerE
   ...
   fun:_ZN7content28ShellURLRequestContextGetter20GetURLRequestContextEv
   fun:_ZN7content21ChromeAppCacheService20InitializeOnIOThreadERKN4base8FilePathEPNS_15ResourceContextEPN3net23URLRequestContextGetterE13scoped_refptrIN5quota20SpecialStoragePolicyEE
}
{
   bug_396658
   Memcheck:Uninitialized
   ...
   fun:wk_png_write_find_filter
   fun:wk_png_write_row
}
{
   bug_397066_a
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink13InlineFlowBox9addToLineEPNS_9InlineBoxE
   ...
   fun:_ZN5blink15RenderBlockFlow13constructLineERNS_11BidiRunListINS_7BidiRunEEERKNS_8LineInfoE
   fun:_ZN5blink15RenderBlockFlow27createLineBoxesFromBidiRunsEjRNS_11BidiRunListINS_7BidiRunEEERKNS_14InlineIteratorERNS_8LineInfoERNS_21VerticalPositionCacheEPS2_RN3WTF6VectorINS_15WordMeasurementELm64ENSD_16DefaultAllocatorEEE
   fun:_ZN5blink15RenderBlockFlow26layoutRunsAndFloatsInRangeERNS_15LineLayoutStateERNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEERKS4_RKNS_10BidiStatusE
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutStateE
   fun:_ZN5blink15RenderBlockFlow20layoutInlineChildrenEbRNS_10LayoutUnitES2_S1_
   ...
   fun:_ZN5blink15RenderBlockFlow11layoutBlockEb
}
{
   bug_397066_b
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink13InlineFlowBox24computeLogicalBoxHeightsEPNS_13RootInlineBoxERNS_10LayoutUnitES4_RiS5_RbS6_bRN3WTF7HashMapIPKNS_13InlineTextBoxESt4pairINS7_6VectorIPKNS_14SimpleFontDataELm0ENS7_16DefaultAllocatorEEENS_13GlyphOverflowEENS7_7PtrHashISB_EENS7_10HashTraitsISB_EENSN_ISK_EESH_EENS_12FontBaselineERNS_21VerticalPositionCacheE
   fun:_ZN5blink13RootInlineBox26alignBoxesInBlockDirectionENS_10LayoutUnitERN3WTF7HashMapIPKNS_13InlineTextBoxESt4pairINS2_6VectorIPKNS_14SimpleFontDataELm0ENS2_16DefaultAllocatorEEENS_13GlyphOverflowEENS2_7PtrHashIS6_EENS2_10HashTraitsIS6_EENSI_ISF_EESC_EERNS_21VerticalPositionCacheE
   ...
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutStateE
   fun:_ZN5blink15RenderBlockFlow20layoutInlineChildrenEbRNS_10LayoutUnitES2_S1_
   fun:_ZN5blink15RenderBlockFlow15layoutBlockFlowEbRNS_10LayoutUnitERNS_18SubtreeLayoutScopeE
   fun:_ZN5blink15RenderBlockFlow11layoutBlockEb
}
{
   bug_397066_c
   Memcheck:Uninitialized
   ...
   fun:_ZN5blink13InlineFlowBox26placeBoxesInBlockDirectionENS_10LayoutUnitES1_ibRS1_S2_S2_RbS2_S2_S3_S3_NS_12FontBaselineE
   fun:_ZN5blink13RootInlineBox26alignBoxesInBlockDirectionENS_10LayoutUnitERN3WTF7HashMapIPKNS_13InlineTextBoxESt4pairINS2_6VectorIPKNS_14SimpleFontDataELm0ENS2_16DefaultAllocatorEEENS_13GlyphOverflowEENS2_7PtrHashIS6_EENS2_10HashTraitsIS6_EENSI_ISF_EESC_EERNS_21VerticalPositionCacheE
   ...
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutStateE
   fun:_ZN5blink15RenderBlockFlow20layoutInlineChildrenEbRNS_10LayoutUnitES2_S1_
   fun:_ZN5blink15RenderBlockFlow15layoutBlockFlowEbRNS_10LayoutUnitERNS_18SubtreeLayoutScopeE
   fun:_ZN5blink15RenderBlockFlow11layoutBlockEb
}
{
   bug_397066_d
   Memcheck:Uninitialized
   fun:_ZN5blink13InlineFlowBox45clearDescendantsHaveSameLineHeightAndBaselineEv
   fun:_ZN5blink13InlineFlowBox9addToLineEPNS_9InlineBoxE
   ...
   fun:_ZN5blink15RenderBlockFlow13constructLineERNS_11BidiRunListINS_7BidiRunEEERKNS_8LineInfoE
   fun:_ZN5blink15RenderBlockFlow27createLineBoxesFromBidiRuns*
}
{
   bug_397066_e
   Memcheck:Uninitialized
   fun:_ZN5blink13InlineFlowBox9addToLineEPNS_9InlineBox*
   fun:_ZN5blink15RenderBlockFlow*
   ...
   fun:_ZN5blink15RenderBlockFlow27createLineBoxesFromBidiRunsEjRNS*
   fun:_ZN5blink15RenderBlockFlow26layoutRunsAndFloatsInRangeERNS_15LineLayoutStateERNS_12BidiResolver*
   fun:_ZN5blink15RenderBlockFlow19layoutRunsAndFloatsERNS_15LineLayoutState*
}
{
   bug_397066_f
   Memcheck:Uninitialized
   fun:_ZNK5blink13InlineFlowBox35constrainToLineTopAndBottomIfNeededERNS_10LayoutRectE
   fun:_ZN5blink13InlineFlowBox28paintBoxDecorationBackgroundERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13RootInlineBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZNK5blink17RenderLineBoxList5paintEPNS_20RenderBoxModelObjectERNS_9PaintInfoERKNS_11LayoutPointE
}
{
   bug_397075_a
   Memcheck:Uninitialized
   fun:_ZN2v88internal6Object11SetPropertyEPNS0_14LookupIteratorENS0_6HandleIS1_EENS0_10StrictModeENS1_14StoreFromKeyedE
   fun:_ZN2v88internal6Object11SetPropertyENS0_6HandleIS1_EENS2_INS0_4NameEEES3_NS0_10StrictModeENS1_14StoreFromKeyedE
   fun:_ZN2v88internal7Runtime17SetObjectPropertyEPNS0_7IsolateENS0_6HandleINS0_6ObjectEEES6_S6_NS0_10StrictModeE
   fun:_ZN2v86Object3SetENS_6HandleINS_5ValueEEES3_
   fun:_ZN18WebCoreTestSupport21injectInternalsObjectEN2v85LocalINS0_7ContextEEE
   fun:_ZN5blink17WebTestingSupport21injectInternalsObjectEPNS_13WebLocalFrameE
   fun:_ZN7content16WebKitTestRunner20DidClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZN7content14RenderViewImpl20didClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZN7content15RenderFrameImpl20didClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZThn16_N7content15RenderFrameImpl20didClearWindowObjectEPN5blink13WebLocalFrameE
   fun:_ZN5blink21FrameLoaderClientImpl39dispatchDidClearWindowObjectInMainWorldEv
   fun:_ZN5blink11FrameLoader39dispatchDidClearWindowObjectInMainWorldEv
   fun:_ZN5blink16ScriptController11windowShellERNS_15DOMWrapperWorldE
   fun:_ZN5blink11toV8ContextEPNS_10LocalFrameERNS_15DOMWrapperWorldE
   fun:_ZNK5blink17WebLocalFrameImpl22mainWorldScriptContextEv
   fun:_ZN5blink17WebTestingSupport20resetInternalsObjectEPNS_13WebLocalFrameE
   fun:_ZN7content16WebKitTestRunner5ResetEv
   fun:_ZN7content26ShellContentRendererClient17RenderViewCreatedEPNS_10RenderViewE
   fun:_ZN7content14RenderViewImpl10InitializeEPNS_20RenderViewImplParamsE
   fun:_ZN7content14RenderViewImpl6CreateEibRKNS_19RendererPreferencesERKNS_14WebPreferencesEiiilRKSbItN4base20string16_char_traitsESaItEEbbibbiRKN5blink13WebScreenInfoE17AccessibilityMode
   fun:_ZN7content16RenderThreadImpl15OnCreateNewViewERK18ViewMsg_New_Params
}
{
   bug_397075_b
   Memcheck:Uninitialized
   fun:_ZN2v88internal6Object11SetPropertyEPNS0_14LookupIteratorENS0_6HandleIS1_EENS0_10StrictModeENS1_14StoreFromKeyedE
   fun:_ZN2v88internal6Object11SetPropertyENS0_6HandleIS1_EENS2_INS0_4NameEEES3_NS0_10StrictModeENS1_14StoreFromKeyedE
   ...
   fun:_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_
   fun:_ZN2v88internal9Execution4CallEPNS0_7IsolateENS0_6HandleINS0_6ObjectEEES6_iPS6_b
}
{
   bug_398349_a
   Memcheck:Uninitialized
   fun:_ZN2v88internal19JSObjectWalkVisitorINS0_29AllocationSiteCreationContextEE13StructureWalkENS0_6HandleINS0_8JSObjectEEE
   fun:_ZN2v88internal8JSObject8DeepWalkENS0_6HandleIS1_EEPNS0_29AllocationSiteCreationContextE
   fun:_ZN2v88internal27Runtime_CreateObjectLiteralEiPPNS0_6ObjectEPNS0_7IsolateE
}
{
   bug_398349_b
   Memcheck:Uninitialized
   fun:_ZN2v88internal19JSObjectWalkVisitorINS0_26AllocationSiteUsageContextEE13StructureWalkENS0_6HandleINS0_8JSObjectEEE
   fun:_ZN2v88internal8JSObject8DeepCopyENS0_6HandleIS1_EEPNS0_26AllocationSiteUsageContextENS1_13DeepCopyHintsE
   fun:_ZN2v88internal27Runtime_CreateObjectLiteralEiPPNS0_6ObjectEPNS0_7IsolateE
}
{
   bug_399853_a
   Memcheck:Uninitialized
   fun:_ZNK8SkStroke10strokePathERK6SkPathPS0_
   fun:_ZNK11SkStrokeRec11applyToPathEP6SkPathRKS0_
   fun:_ZNK7SkPaint11getFillPathERK6SkPathPS0_PK6SkRect
}
{
   bug_399853_b
   Memcheck:Uninitialized
   fun:_ZNK8SkStroke10strokePathERK6SkPathPS0_
   fun:_ZNK11SkStrokeRec11applyToPathEP6SkPathRKS0_
   fun:_ZN15SkScalerContext15internalGetPathERK7SkGlyphP6SkPathS4_P8SkMatrix
}
{
   bug_400547
   Memcheck:Uninitialized
   fun:_ZNK5blink22GraphicsLayerDebugInfo17appendOwnerNodeIdEPNS_10JSONObjectE
   fun:_ZNK5blink22GraphicsLayerDebugInfo19appendAsTraceFormatEPNS_9WebStringE
   fun:_ZNK7content15TracedDebugInfo19AppendAsTraceFormatEPSs
   fun:_ZNK2cc9LayerImpl11AsValueIntoEPN4base5debug11TracedValueE
   fun:_ZNK2cc*LayerImpl11AsValueIntoEPN4base5debug11TracedValueE
}
{
   bug_402257_a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN10extensions11ApiTestBase15RegisterModulesEv
   fun:_ZN10extensions11ApiTestBase5SetUpEv
   fun:_ZN10extensions16DataReceiverTest5SetUpEv
}
{
   bug_402257_b
   Memcheck:Leak
   ...
   fun:_ZN10extensions12_GLOBAL__N_111TestNatives24GetObjectTemplateBuilderEPN2v87IsolateE
   fun:_ZN3gin13WrappableBase14GetWrapperImplEPN2v87IsolateEPNS_11WrapperInfoE
   fun:_ZN3gin9WrappableIN10extensions12_GLOBAL__N_111TestNativesEE10GetWrapperEPN2v87IsolateE
   fun:_ZN3gin12CreateHandleIN10extensions12_GLOBAL__N_111TestNativesEEENS_6HandleIT_EEPN2v87IsolateEPS5_
   fun:_ZN10extensions12_GLOBAL__N_111TestNatives6CreateEPN2v87IsolateERKN4base8CallbackIFvvEEE
   fun:_ZN10extensions11ApiTestBase7RunTestERKSsS2_
   fun:_ZN10extensions29DataReceiverTest_Receive_Test8TestBodyEv
}
{
   bug_402257_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3gin13HandleWrapper6CreateEPN2v87IsolateEj
   fun:_ZN3gin9ConverterIN4mojo6HandleEvE4ToV8EPN2v87IsolateERKS2_
   fun:_ZN3gin11ConvertToV8IN4mojo6HandleEEEN2v86HandleINS3_5ValueEEEPNS3_7IsolateET_
   fun:_ZN3gin10Dictionary3SetIN4mojo6HandleEEEbRKSsT_
   fun:_ZN4mojo2js12_GLOBAL__N_114CreateDataPipeERKN3gin9ArgumentsE
}
{
   bug_403774
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN5blink18ModulesInitializer4initEv
   fun:_ZN5blink19initializeWithoutV8EPNS_8PlatformE
   fun:_ZN5blink10initializeEPNS_8PlatformE
   fun:_ZN7content25TestWebKitPlatformSupportC2Ev
   fun:_ZN7content25TestWebKitPlatformSupportC1Ev
   fun:_ZN7content17UnitTestTestSuiteC2EPN4base9TestSuiteE
   fun:_ZN7content17UnitTestTestSuiteC1EPN4base9TestSuiteE
}
{
   bug_403775
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN28NotificationConversionHelper28GfxImageToNotificationBitmapEPKN3gfx5ImageEPN10extensions3api13notifications18NotificationBitmapE
   fun:_ZN28NotificationConversionHelper33NotificationToNotificationOptionsERK12NotificationPN10extensions3api13notifications19NotificationOptionsE
   fun:_ZN71NotificationConversionHelperTest_NotificationToNotificationOptions_Test8TestBodyEv
}
{
   bug_404182
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8app_list4test12_GLOBAL__N_122AppListViewTestContext16RunStartPageTestEv
}
{
   bug_405865
   Memcheck:Uninitialized
   fun:_ZNK5blink13InlineFlowBox20computeMaxLogicalTopERf
   ...
   fun:_ZNK5blink13RootInlineBox13maxLogicalTopEv
   fun:_ZN5blinkL22computeUnderlineOffsetENS_21TextUnderlinePositionERKNS_11FontMetricsEPKNS_13InlineTextBoxEf
   fun:_ZN5blink20InlineTextBoxPainter15paintDecorationEPNS_15GraphicsContextERKNS_10FloatPointENS_14TextDecorationE
   fun:_ZN5blink20InlineTextBoxPainter5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink13InlineTextBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
}
{
   bug_411235
   Memcheck:Overlap
   fun:memcpy@@GLIBC_2.14
   fun:IncrementalCopyFastPath
   fun:BrotliDecompress
   fun:BrotliDecompressBuffer
   fun:_ZN12_GLOBAL__N_115Woff2UncompressEPhmPKhmj
}
{
   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:_ZN5blink9Scheduler15tickSharedTimerEv
   fun:_ZN5blink9Scheduler18sharedTimerAdapterEv
   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_417093
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF24ThreadSafeRefCountedBasenwEm
   fun:_ZN5blink7RawData6createEv
   fun:_ZN5blink6Stream7addDataEPKcm
   fun:_ZN5blink14XMLHttpRequest14didReceiveDataEPKci
   fun:_ZThn80_N5blink14XMLHttpRequest14didReceiveDataEPKci
   fun:_ZN5blink24DocumentThreadableLoader18handleReceivedDataEPKci
   fun:_ZN5blink24DocumentThreadableLoader12dataReceivedEPNS_8ResourceEPKci
   fun:_ZThn16_N5blink24DocumentThreadableLoader12dataReceivedEPNS_8ResourceEPKci
}
{
   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_419373
   Memcheck:Uninitialized
   fun:_ZNK5blink20InlineFlowBoxPainter49roundedFrameRectClampedToLineTopAndBottomIfNeededEv
   fun:_ZN5blink20InlineFlowBoxPainter28paintBoxDecorationBackgroundERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN5blink20InlineFlowBoxPainter5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
   fun:_ZN5blink13InlineFlowBox5paintERNS_9PaintInfoERKNS_11LayoutPointENS_10LayoutUnitES6_
}
{
   bug_422485
   Memcheck:Overlap
   fun:memcpy@@GLIBC_2.14
   fun:_ZNK8SkBitmap12copyPixelsToEPvmmb
   fun:_ZN5blink19ImageFrameGenerator14decodeAndScaleERK11SkImageInfomPvm
   fun:_ZN5blink22DecodingImageGenerator11onGetPixelsERK11SkImageInfoPvmPjPi
   fun:_ZN16SkImageGenerator9getPixelsERK11SkImageInfoPvmPjPi
   ...
   fun:_ZNK6SkDraw10drawBitmapERK8SkBitmapRK8SkMatrixRK7SkPaint
}
{
   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
}
