# 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
}
{
   # See also http://www.gnome.org/~johan/gtk.suppression
   # (which has a smattering of similar pango suppressions)
   pango_font_leak_todo
   Memcheck:Leak
   ...
   fun:FcFontRenderPrepare
   obj:*
   fun:pango_font_map_load_fontset
}
{
   pango_font_leak_todo_2
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_strdup
   fun:pango_script_get_sample_language
   ...
   fun:pango_font_get_metrics
}
{
   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
}
{
   # Another permutation of previous leak.
   fontconfig_bug_8428_2
   Memcheck:Leak
   ...
   fun:realloc
   fun:FcPatternObjectInsertElt
   fun:FcPatternObjectAdd
}
{
   bug_18590 (Third Party)
   Memcheck:Leak
   ...
   fun:malloc
   fun:FcConfigValues
   fun:FcConfigValues
   ...
   fun:FcConfigValues
   fun:FcConfigValues
}
{
   bug_18590a (Third Party)
   Memcheck:Leak
   fun:malloc
   fun:FcConfigValues
   fun:FcConfigSubstituteWithPat
   fun:*SkFontConfigInterfaceDirect*match*
}
{
   bug_46177_a (Third Party)
   Memcheck:Leak
   ...
   fun:FcCharSetOperate
   fun:FcFontSetSort
   fun:FcFontSort
   ...
   fun:pango_layout_get_pixel_size
}
{
   bug_46177_b (Third Party)
   Memcheck:Leak
   ...
   fun:FcCharSetFindLeafCreate
   fun:FcCharSetAddLeaf
   fun:FcCharSetOperate
   fun:FcFontSetSort
   fun:FcFontSort
   ...
   fun:pango_layout_get_iter
}
{
   bug_46177_c (Third Party)
   Memcheck:Leak
   ...
   fun:FcCharSetFindLeafCreate
   fun:FcCharSetAddLeaf
   fun:FcCharSetOperate
   fun:FcFontSetSort
   fun:FcFontSort
   ...
   fun:pango_layout_line_get_extents
}
{
   bug_46177_d (Third Party)
   Memcheck:Leak
   fun:malloc
   fun:FcFontSetCreate
   fun:FcFontSetSort
   fun:FcFontSort
}
{
   bug_46177_e (Third Party)
   Memcheck:Leak
   ...
   fun:FcCharSetFindLeafCreate
   fun:FcCharSetAddChar
}
{
   bug_181572 (Skia -- global cache of typefaces)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN10SkFontHost14CreateTypefaceEPK10SkTypefacePKcNS0_5StyleE
   fun:_ZN10SkTypeface14CreateFromNameEPKcNS_5StyleE
}
{
   dlopen invalid read, probably a bug in glibc.  TODO(dkegel): file glibc bug
   Memcheck:Uninitialized
   ...
   fun:dlopen@@GLIBC_2.1
   fun:PR_LoadLibraryWithFlags
}
{
   dlopen leak on error. See http://sourceware.org/bugzilla/show_bug.cgi?id=12878.
   Memcheck:Leak
   fun:calloc
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
}
{
   glibc leak.  See also http://sources.redhat.com/bugzilla/show_bug.cgi?id=2451
   Memcheck:Leak
   fun:malloc
   fun:_dl_map_object_from_fd
}
{
   Pure NSS leak, does not involve glibc.  TODO(dkegel): track down and fix or file bug.
   Memcheck:Leak
   ...
   fun:NSS_NoDB_Init
}
{
   Another pure NSS leak, does not involve glibc.  TODO(dkegel): track down and fix or file bug.  Shows up under --show-reachable=yes.
   Memcheck:Leak
   ...
   fun:SECMOD_LoadUserModule
}
{
   Pure NSS leak, does not involve glibc.
   Memcheck:Leak
   ...
   fun:SECMOD_AddNewModule
}
{
   bug_12614 (Third Party)
   Memcheck:Leak
   fun:?alloc
   ...
   fun:PR_LoadLibraryWithFlags
   ...
   fun:SECMOD_LoadModule
}
{
   NSS leak - https://bugzilla.mozilla.org/show_bug.cgi?id=762351 - fixed in NSS 3.13.6/3.14
   Memcheck:Leak
   ...
   fun:PKIX_PL_Malloc
   ...
   fun:PKIX_PL_OID_Create
   ...
   fun:cert_PKIXMakeOIDList
   fun:cert_pkixSetParam
   fun:CERT_PKIXVerifyCert
}
{
   libc_dynamiclinker_foo
   Memcheck:Uninitialized
   obj:/lib*/ld-2.*.so
   obj:/lib*/ld-2.*.so
}
{
   libc_dynamiclinker_bar
   Memcheck:Unaddressable
   obj:/lib*/ld-2.*.so
   obj:/lib*/ld-2.*.so
}
{
   libc_dynamiclinker_bar_2
   Memcheck:Jump
   obj:*
   obj:/lib*/ld-2.*.so
}
{
   FIXME epoll uninitialized data 1
   Memcheck:Param
   epoll_ctl(epfd)
   fun:syscall
   fun:event_add
}
{
   FIXME epoll uninitialized data 2
   Memcheck:Param
   epoll_ctl(epfd)
   fun:syscall
   fun:event_del
}
{
   FIXME epoll uninitialized data 3
   Memcheck:Param
   epoll_wait(epfd)
   fun:syscall
   fun:event_base_loop
}
{
   # "The section of the SQLite library identified works exactly as it should."
   # http://www.sqlite.org/cvstrac/tktview?tn=536,39
   # http://www.sqlite.org/cvstrac/tktview?tn=694,39
   # http://www.sqlite.org/cvstrac/tktview?tn=964,39
   # This looks like a case where an entire page was allocated, the header and
   # perhaps some data was written, but the entire buffer was not written to.
   # The SQLite authors aren't very interested in adding code to clear buffers
   # for no reason other than pleasing valgrind, but a patch might be accepted
   # under a macro like SQLITE_SECURE_DELETE which could be construed to apply
   # to cases like this. (Note that we compile with SQLITE_SECURE_DELETE.)
   bug_20653a (Third Party)
   Memcheck:Param
   write(buf)
   ...
   fun:sqlite3OsWrite
   fun:pager_write_pagelist
}
{
   bug_20653b (Third Party)
   Memcheck:Param
   write(buf)
   ...
   fun:*Write
   fun:sqlite3OsWrite
   ...
   fun:pager_write
}
{
   # array of weak references freed but not processed?
   bug_16576
   Memcheck:Leak
   ...
   fun:g_object_weak_ref
   fun:g_object_add_weak_pointer
}
{
   # Totem plugin leaks when we load it.
   bug_21326 (Third Party)
   Memcheck:Leak
   ...
   fun:_ZN56webkit5npapi9PluginLib17ReadWebPluginInfoE*
}
{
   # NSS bug https://bugzilla.mozilla.org/show_bug.cgi?id=518443
   https://bugzilla.mozilla.org/show_bug.cgi?id=518443
   Memcheck:Leak
   fun:calloc
   ...
   fun:PORT_ZAlloc_Util
   fun:PORT_NewArena_Util
   fun:PK11_ImportAndReturnPrivateKey
}
{
   bug_23314 (Third Party)
   Memcheck:Unaddressable
   fun:sqlite3PcacheClearSyncFlags
   fun:syncJournal
   fun:sqlite3PagerCommitPhaseOne
   fun:sqlite3BtreeCommitPhaseOne
}
{
   bug_23314b (Third Party)
   Memcheck:Unaddressable
   fun:sqlite3PcacheClearSyncFlags
   fun:syncJournal
   fun:sqlite3PagerCommitPhaseOne
   fun:sqlite3BtreeCommitPhaseOne
}
{
   http://sources.redhat.com/bugzilla/show_bug.cgi?id=5171
   Memcheck:Leak
   fun:calloc
   fun:allocate_dtv
   fun:_dl_allocate_tls
   fun:pthread_create@@GLIBC_2.1
}
{
   bug_33394 (Third Party)
   Memcheck:Leak
   fun:calloc
   fun:PR_Calloc
   fun:PR_NewLock
   fun:_PR_UnixInit
   fun:_PR_ImplicitInitialization
   ...
   fun:_ZN4base14EnsureNSPRInitEv
}
{
   bug_33394_b (Third Party)
   Memcheck:Leak
   fun:calloc
   fun:PR_Calloc
   fun:PR_NewMonitor
   fun:_PR_UnixInit
   fun:_PR_ImplicitInitialization
   ...
   fun:_ZN4base14EnsureNSPRInitEv
}
{
   # Looks like a leak in gtk's code when loading the im context module.
   bug_41231 (Third Party)
   Memcheck:Leak
   ...
   fun:malloc
   fun:g_malloc
   fun:g_strdup
   fun:gtk_im_multicontext_get_slave
   fun:gtk_im_multicontext_set_client_window
   fun:gtk_im_context_set_client_window
}
{
   bug_51332a (Third Party)
   Memcheck:Leak
   ...
   fun:PORT_NewArena_Util
   fun:sec_pkcs7_create_content_info
   fun:SEC_PKCS7CreateData
   fun:sec_pkcs12_encoder_start_context
   fun:SEC_PKCS12Encode
}
{
   bug_51332b (Third Party)
   Memcheck:Leak
   ...
   fun:PORT_ArenaZAlloc_Util
   fun:sec_pkcs7_create_content_info
   fun:SEC_PKCS7CreateData
   fun:sec_pkcs12_encoder_start_context
   fun:SEC_PKCS12Encode
}
{
   bug_51332c (Third Party)
   Memcheck:Leak
   fun:calloc
   fun:PORT_ZAlloc_Util
   fun:PORT_NewArena_Util
   fun:sec_pkcs7_create_content_info
   fun:sec_pkcs12_encoder_start_context
   fun:SEC_PKCS12Encode
}
{
   bug_51330 (Third Party)
   Memcheck:Leak
   ...
   fun:p12u_DigestOpen
   ...
   fun:SEC_PKCS12DecoderUpdate
}
{
   bug_51328a (Third Party)
   Memcheck:Leak
   ...
   fun:SEC_ASN1DecoderUpdate_Util
   ...
   fun:SEC_ASN1DecoderUpdate_Util
   fun:SEC_PKCS7DecoderUpdate
   ...
   fun:SEC_ASN1DecoderUpdate_Util
   fun:SEC_PKCS12DecoderUpdate
}
{
   bug_51328b (Third Party)
   Memcheck:Leak
   ...
   fun:SEC_PKCS7DecoderStart
   ...
   fun:SEC_ASN1DecoderUpdate_Util
   fun:SEC_PKCS12DecoderUpdate
}
{
   # See http://sourceware.org/bugzilla/show_bug.cgi?id=14015.
   bug_51770 (Third Party)
   Memcheck:Leak
   fun:calloc
   fun:_dlerror_run
   fun:dlsym
}
{
   bug_58730_strlen_addr8 (Third Party)
   Memcheck:Unaddressable
   fun:__strlen_sse2
}
{
   bug_58730_strlen_cond (Third Party)
   Memcheck:Uninitialized
   fun:__strlen_sse2
}
{
   bug_58730_strcmp_addr8 (Third Party)
   Memcheck:Unaddressable
   fun:__strcmp_ssse3
}
{
   bug_58730_strcmp_cond (Third Party)
   Memcheck:Uninitialized
   fun:__strcmp_ssse3
}
{
   bug_58730_strcmp_value8 (Third Party)
   Memcheck:Uninitialized
   fun:__strcmp_ssse3
}
{
   bug_58730_strncmp_value8 (Third Party)
   Memcheck:Uninitialized
   fun:__strncmp_ssse3
}
{
   bug_58730_memmove_value4 (Third Party)
   Memcheck:Uninitialized
   fun:__memmove_ssse3
}
{
   bug_58730_memmove_cond (Third Party)
   Memcheck:Uninitialized
   fun:__memmove_ssse3
}
{
   bug_58730_memcpy_value4 (Third Party)
   Memcheck:Uninitialized
   fun:__memcpy_ssse3
}
{
   bug_58730_memcpy_addr8 (Third Party)
   Memcheck:Unaddressable
   fun:__memcpy_ssse3
}
{
   bug_58730_memcpy_cond (Third Party)
   Memcheck:Uninitialized
   fun:__memcpy_ssse3
}
{
   bug_58730_memmove_chk_cond (Third Party)
   Memcheck:Uninitialized
   fun:__memmove_chk_ssse3
}
{
   bug_58730_libc.so_addr8 (Third Party)
   Memcheck:Unaddressable
   obj:/lib/libc-2.*.so
}
{
   bug_58730_libc.so_cond (Third Party)
   Memcheck:Uninitialized
   obj:/lib/libc-2.*.so
}
{
   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
}
{
   # I believe it's a bug in gtk+-2.12.x and should already be fixed in recent gtk.
   bug_61685 (Third Party)
   Memcheck:Leak
   fun:malloc
   ...
   fun:gtk_text_buffer_select_range
   fun:*OmniboxViewGtk16SetSelectedRange*
}
{
   bug_66941 (Third Party)
   Memcheck:Leak
   ...
   fun:STAN_ChangeCertTrust
   fun:CERT_ChangeCertTrust
}
{
   leaks in bash
   Memcheck:Leak
   ...
   obj:/bin/bash
}
{
   bug_73000_fixed_upstream_in_gtk
   Memcheck:Uninitialized
   fun:clipboard_clipboard_buffer_received
   ...
   fun:gtk_text_view_key_press_event
   fun:_ZN14OmniboxViewGtk14HandleKeyPressEP10_GtkWidgetP12_GdkEventKey
}
{
   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*
}
{
   bug_76386c (Third Party)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNSs4_Rep9_S_createE*RKSaIcE
   fun:_ZNSs9_M_mutateEjjj
}
{
   bug_80378_fixed_upstream_for_next_gtk
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   ...
   fun:gtk_window_group_list_windows
   fun:_ZN8gtk_util*AppModal*
}
{
   getpwuid_and_getgrouplist
   Memcheck:Leak
   fun:malloc
   fun:nss_parse_service_list
   fun:__nss_database_lookup
   obj:*
   ...
   fun:get*
}
{
   dbus_x64_leaks
   Memcheck:Leak
   ...
   obj:/usr/bin/dbus-launch
}
{
   pulseaudio: pa_set_env_and_record
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:pa_xrealloc
   fun:pa_sprintf_malloc
   fun:pa_set_env
   fun:pa_set_env_and_record
   fun:main
}

# The following stack suppresses Memcheck false positives on NaCl browser_tests
# See https://bugs.kde.org/show_bug.cgi?id=270709#c4 for possible reason
{
   bug_101755 valgrind_bitfields_false_positive
   Memcheck:Uninitialized
   ...
   fun:_ZN7WebCore13WidthIterator*
   ...
   fun:_ZNK7WebCore4Font*
}

# Invalid frees from exit() and accept().
{
   bug_108618 (Third party)
   Memcheck:Free
   fun:free
   fun:__libc_freeres
   fun:_vgnU_freeres
}

# 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
}
{
   Flash Player Leak
   Memcheck:Leak
   ...
   obj:/usr/lib/flashplugin-installer/libflashplayer.so
}
{
   Flash Player Unaddressable
   Memcheck:Unaddressable
   ...
   obj:/usr/lib/flashplugin-installer/libflashplayer.so
}
{
   Flash Player Uninitialized
   Memcheck:Uninitialized
   ...
   obj:/usr/lib/flashplugin-installer/libflashplayer.so
}
{
   Occasional leak inside setlocale()
   Memcheck:Leak
   fun:malloc
   ...
   fun:_nl_make_l10nflist
   fun:_nl_find_locale
   fun:setlocale
   fun:_ZN12_GLOBAL__N_121ContentMainRunnerImpl10InitializeEiPPKcPN7content19ContentMainDelegateE
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
   fun:ChromeMain
}
{
   Occasional leak inside gdk_init()
   Memcheck:Leak
   fun:malloc
   ...
   fun:_nl_find_domain
   fun:__dcigettext
   fun:gdk_screen_class_intern_init
   fun:g_type_class_ref
   fun:g_type_class_ref
   fun:g_object_newv
   fun:g_object_new
   fun:_gdk_x11_screen_new
   fun:gdk_display_open
   fun:gdk_display_open_default_libgtk_only
   fun:gdk_init_check
   fun:gdk_init
}
{
   bug_130770_a
   Memcheck:Unaddressable
   ...
   fun:_mesa_glsl_compile_shader
}
{
   bug_130770_b
   Memcheck:Unaddressable
   ...
   fun:_mesa_glsl_link_shader
}
# leak in OSMesa used to run compositor_unittests in bots.
{
   bug_148477
   Memcheck:Leak
   fun:malloc
   ...
   fun:_ZN3gfx9GLApiBase17glCompileShaderFnEj
   fun:_ZN6webkit3gpu33WebGraphicsContext3DInProcessImpl13compileShaderEj
   fun:_ZN2cc18ProgramBindingBase10LoadShaderEPN6WebKit20WebGraphicsContext3DEjRKSs
   fun:_ZN2cc18ProgramBindingBase4InitEPN6WebKit20WebGraphicsContext3DERKSsS5_
}
{
   bug_148477_link
   Memcheck:Leak
   fun:malloc
   ...
   fun:_ZN3gfx9GLApiBase15glLinkProgramFnEj
   fun:_ZN6webkit3gpu33WebGraphicsContext3DInProcessImpl11linkProgramEj
   fun:_ZN2cc18ProgramBindingBase4LinkEPN6WebKit20WebGraphicsContext3DE
   fun:_ZN2cc14ProgramBindingINS_*
}
# bug_todo_getdelim, bug_todo_getdelim2 and bug_todo_grep used to happen on
# Google Lucid workstations only.
{
   bug_todo_getdelim
   Memcheck:Leak
   fun:malloc
   fun:getdelim
   ...
   fun:call_init
   fun:_dl_init
}
{
   bug_todo_getdelim2
   Memcheck:Leak
   fun:malloc
   fun:getdelim
   obj:/lib/libselinux.so.1
   obj:/lib/libselinux.so.1
   obj:/lib/libselinux.so.1
}
{
   bug_todo_grep
   Memcheck:Leak
   fun:malloc
   obj:/bin/grep
   obj:/bin/grep
}
{
   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_
}
{
   # Most plugins return a constant char * string, but this totem plugin
   # uses printf and allocates one.
   Ubuntu_Precise_totem_mime_desc_leak
   Memcheck:Leak
   fun:g_strdup_printf
   obj:*/libtotem-cone-plugin.so
   fun:_ZN6webkit5npapi9PluginLib17ReadWebPluginInfoERKN4base8FilePathEPNS_13WebPluginInfoE
}
{
   glib/gthread malloc leak in component build
   Memcheck:Leak
   fun:malloc
   ...
   fun:g_thread_proxy
}
{
   glib/gthread calloc leak in component build
   Memcheck:Leak
   fun:calloc
   ...
   fun:g_thread_proxy
}

#-----------------------------------------------------------------------
# 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
}
{
   logging::InitLogging never frees filename. It would be hard to free properly.
   Memcheck:Leak
   ...
   fun:_ZN7logging11InitLoggingEPKcNS_18LoggingDestinationENS_15LogLockingStateENS_20OldFileDeletionStateE
}
{
   Linux tests don't bother to undo net::SpawnedTestServer::LoadTestRootCert().
   Memcheck:Leak
   ...
   fun:_ZN3net10SpawnedTestServer16LoadTestRootCertEv
}
{
   # uitest's ResourceDispatcherTest.CrossSiteAfterCrash crashes on purpose
   Intentional_crash
   Memcheck:Unaddressable
   fun:_ZN12AboutHandler10AboutCrashEv
}
{
   Intentional_browser_test_crash
   Memcheck:Unaddressable
   fun:_ZL18CrashIntentionallyv
   fun:_ZL19MaybeHandleDebugURLRK4GURL
   fun:_ZN14RenderViewImpl10OnNavigateERK23ViewMsg_Navigate_Params
}
{
   # 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:_ZN7WebCore8SVGNames4initEv
}
{
   intentional_BrowserThreadTest_NotReleasedIfTargetThreadNonExistent_Test_leak
   Memcheck:Leak
   fun:_Znw*
   fun:*BrowserThreadTest_NotReleasedIfTargetThreadNonExistent_Test8TestBodyEv
}
{
   # This is an on demand initialization which is done and then intentionally
   # kept around (not freed) while the process is running.
   intentional_WebCore_XMLNames_init_leak
   Memcheck:Leak
   ...
   fun:_ZN7WebCore8XMLNames4initEv
}
{
   # This is WebKit wide theading initialization which is intentionally kept
   # around (not freed) while the process is running.
   intentional_WTF_ThreadIdentifierData_initialize_leak
   Memcheck:Leak
   ...
   fun:_ZN3WTF20ThreadIdentifierData10initializeEj
}
{
   # This is WebKit wide theading initialization which is intentionally kept
   # around (not freed) while the process is running.
   intentional_WTF_wtfThreadData_leak
   Memcheck:Leak
   ...
   fun:_ZN3WTF13wtfThreadDataEv
}
{
   # Intentional crash test
   intentional_RendererCrashTest
   Memcheck:Unaddressable
   fun:_Z*33HandleRendererErrorTestParametersRK11CommandLine
   fun:_Z12RendererMainRKN7content18MainFunctionParams*
}
{
   # PR_GetCurrentThread allocates a PRThread structure and stores it in
   # thread-specific data.  The PRThread structure is freed by the
   # PR_DetachThread call in CertVerifierWorker::Run or when the thread
   # terminates.  Since we do not shut down worker threads, the PRThread
   # structure created for a worker thread may be leaked at Chrome shutdown
   # if the worker thread did not make it to the PR_DetachThread call.
   bug_32624 (Intentional)
   Memcheck:Leak
   fun:calloc
   fun:PR_Calloc
   fun:PR_GetCurrentThread
   ...
   fun:_ZNK3net15X509Certificate14VerifyInternalERKSsiPNS_16CertVerifyResultE
   fun:_ZNK3net15X509Certificate6VerifyERKSsiPNS_16CertVerifyResultE
   fun:_ZN3net18CertVerifierWorker3RunEv
}
{
   # 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
}
{
   Tasks posted to WorkerPool can leak by design
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10WorkerPool16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_b
}
{
   bug_61585b (Intentional)
   Memcheck:Leak
   fun:malloc
   fun:PL_ArenaAllocate
   fun:PORT_ArenaAlloc*
}
{
   # 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*
}
{
   # Histograms are used on un-joined threads, and can't be deleted atexit.
   Histograms via FactoryGet including Stats for disk_cache
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN10disk_cache14StatsHistogram10FactoryGet*
}
{
   Intentional leak for Histogram (in StatisticsRecorderTest, NotInitialized).
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base42StatisticsRecorderTest_NotInitialized_Test8TestBodyEv
}
{
   Intentional leak for SampleMap (stores SparseHistogram counts).
   Memcheck:Leak
   ...
   fun:_ZN4base9SampleMap10AccumulateEii
   fun:_ZN4base15SparseHistogram3AddEi
}
{
   Intentional leak for list<const BucketRanges*>(in StatisticsRecorderTest, RegisterBucketRanges).
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base18StatisticsRecorder31RegisterOrDeleteDuplicateRangesEPKNS_12BucketRangesE
   fun:_ZN4base48StatisticsRecorderTest_RegisterBucketRanges_Test8TestBodyEv
}
{
   # See http://code.google.com/p/chromium/issues/detail?id=70062#c8
   bug_70062 (Intentional)
   Memcheck:Leak
   ...
   fun:InitSessionCacheLocks
   fun:initSessionCacheLocksLazily
   ...
   fun:ssl_InitSessionCacheLocks
}
{
   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_87500_b (Intentional)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4Bind*TaskClosureAdapterEFvvEPS2_EENS_8internal20InvokerStorageHolderINS6_15InvokerStorage1IT_T0_EEEES9_RKSA_
   fun:_ZN4base11MessageLoop15PostDelayedTaskERKN15tracked_objects8LocationEP4Taskx
   fun:_ZN4base20MessageLoopProxyImpl14PostTaskHelperERKN15tracked_objects8LocationEP4Taskxb
   fun:_ZN4base20MessageLoopProxyImpl8PostTaskERKN15tracked_objects8LocationEP4Task
   fun:_ZN10disk_cache10InFlightIO12OnIOCompleteEPNS_12BackgroundIOE
}
{
   bug_87500_c (Intentional)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net9HttpCache*EntryERKSsPPNS0_11ActiveEntryEPNS0_11TransactionE
   fun:_ZN3net9HttpCache11Transaction13Do*EntryEv
   fun:_ZN3net9HttpCache11Transaction6DoLoopEi
   fun:_ZN3net9HttpCache11Transaction12OnIOCompleteEi
}
{
   Intentional, see http://codereview.chromium.org/7670025
   Memcheck:Param
   msync(start)
   fun:msync$UNIX2003
   fun:mach_override_ptr
   fun:_ZN4base33EnableTerminationOnHeapCorruptionEv
}
{
   # Intentional - data is stored in thread-local storage for an unjoined
   # worker thread, and so can occasionally leak. See crbug.com/89553 for
   # additional info
   bug_89553
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12_GLOBAL__N_111DnsReloader11MaybeReloadEv
}
{
   bug_79322 (Intentional)
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base*StatisticsRecorderTest_*_Test8TestBodyEv
}
{
   # This test simulates a ppapi plugin that fails to decrement a reference
   # count. In that case, the ppapi runtime will clean up its internal data
   # structures, but intentionally does not delete the plugin object's
   # desctructor, because we don't want them to have the opportunity to do
   # anything at that part of shutdown.
   bug_145710 (Intentional)
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12TestInstance27TestLeakedObjectDestructorsEv
   fun:_ZN12TestInstance8RunTestsERKSs
   fun:_ZN15TestingInstance12ExecuteTestsEi
   fun:_ZN2pp25CompletionCallbackFactoryI15TestingInstanceNS_22ThreadSafeThreadTraitsEE11Dispatcher0IMS1_FviEEclEPS1_i
   fun:_ZN2pp25CompletionCallbackFactoryI15TestingInstanceNS_22ThreadSafeThreadTraitsEE12CallbackDataINS3_11Dispatcher0IMS1_FviEEEE5ThunkEPvi
}
{
   intentional_see_bug_156466
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3ash5ShellC1EPNS_13ShellDelegateE
   fun:_ZN3ash5Shell14CreateInstanceEPNS_13ShellDelegateE
}
{
   intentional OOM in layout test: fast/js/string-replacement-outofmemory.html
   Memcheck:Unaddressable
   fun:_ZN7WebCoreL28reportFatalErrorInMainThreadEPKcS1_
   fun:_ZN2v88internal2V823FatalProcessOutOfMemoryEPKcb
   ...
   fun:_ZN7WebCore16HTMLScriptRunner36executePendingScriptAndDispatchEventERNS_13PendingScriptE
}

# 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*
}


#-----------------------------------------------------------------------
# 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).

{
   # Chromium flakily leaks tasks at shutdown, see
   # http://crbug.com/6532
   # http://codereview.chromium.org/20067
   # http://codereview.chromium.org/42083
   # To reproduce, run ipc tests
   # This is the -O0 case
   # In Purify, they don't even try to free them anymore.
   # For now, in Valgrind, we'll add suppressions to ignore these leaks.
   bug_6532
   Memcheck:Leak
   fun:_Znw*
   fun:_Z17NewRunnableMethodIN3IPC12ChannelProxy7ContextEMS2_FvvEEP14CancelableTaskPT_T0_
}
{
   # See http://crbug.com/6532
   # This is the -O1 case
   bug_6532b
   Memcheck:Leak
   ...
   fun:_ZN3IPC12ChannelProxy7Context14OnChannelErrorEv
   fun:_ZN3IPC7Channel11ChannelImpl28OnFileCanReadWithoutBlockingEi
}
{
   # 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
}
{
   # very common in ui tests, also seen in Linux Reliability
   bug_16093
   Memcheck:Leak
   ...
   fun:getaddrinfo
}
{
   # very common in ui tests, also seen in Linux Reliability
   bug_16095
   Memcheck:Leak
   ...
   fun:_ZN4base11MessageLoop21AddToDelayedWorkQueueERKN*PendingTaskE
   fun:_ZN4base11MessageLoop6DoWorkEv
}
{
   bug_16128
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC11SyncChannelC1E*
   ...
   fun:_ZN7content11ChildThread4InitEv
}
{
   bug_16326
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN11webkit_glue16WebURLLoaderImplC1Ev
   fun:_ZN11webkit_glue16WebKitClientImpl15createURLLoaderEv
   fun:_ZN7WebCore22ResourceHandleInternal5startEv
}
{
   bug_17291
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocE*
   ...
   fun:_ZN2v88internal8JSObject23SetPropertyWithCallbackEPNS0_6ObjectEPNS0_6StringES3_PS1_
}
{
   # also bug 17979.  It's a nest of leaks.
   bug_17385
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3IPC12ChannelProxy7Context13CreateChannelERKSsRKNS_7Channel4ModeE
   fun:_ZN3IPC12ChannelProxy4InitERKSsNS_7Channel4ModeEP11MessageLoopb
   fun:_ZN3IPC12ChannelProxyC2ERKSsNS_7Channel4ModeEP11MessageLoopPNS0_7ContextEb
   ...
   fun:_ZN3IPC11SyncChannelC1ERKSsNS_7Channel4ModeEPNS3_8ListenerEPNS_12ChannelProxy13MessageFilterEP11MessageLoopbPN4base13WaitableEventE
}
{
   bug_17540
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base19MessagePumpLibevent19WatchFileDescriptorEibNS0_4ModeEPNS0_21FileDescriptorWatcherEPNS0_7WatcherE
   fun:_ZN4base16MessageLoopForIO19WatchFileDescriptorEibNS_4ModeEPN4base19MessagePumpLibevent21FileDescriptorWatcherEPNS2_7WatcherE
   fun:_ZN3IPC7Channel11ChannelImpl7ConnectEv
   fun:_ZN3IPC7Channel7ConnectEv
   fun:_ZN3IPC12ChannelProxy7Context15OnChannelOpenedEv
}
{
   bug_19196
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2v817RegisterExtensionEPNS_9ExtensionE
   fun:_ZN7WebCore7V8Proxy23registerExtensionWithV8EPN2v89ExtensionE
   fun:_ZN7WebCore7V8Proxy17registerExtensionEPN2v89ExtensionEi
   fun:_ZN6WebKit17registerExtensionEPN2v89ExtensionEi
   fun:_ZN12RenderThread23EnsureWebKitInitializedEv
}
{
   bug_19371
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base13WaitableEvent7EnqueueEPNS0_6WaiterE
   fun:_ZN4base13WaitableEvent9TimedWaitERKNS_9TimeDeltaE
   fun:_ZN4base13WaitableEvent4WaitEv
   fun:_ZN4base18MessagePumpDefault3RunEPNS_11MessagePump8DelegateE
}
{
   # slight variant of the above
   bug_19371a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base13WaitableEvent7EnqueueEPNS0_6WaiterE
   fun:_ZN4base13WaitableEvent9TimedWaitERKNS_9TimeDeltaE
   fun:_ZN4base18MessagePumpDefault3RunEPNS_11MessagePump8DelegateE
}
{
   bug_19377
   Memcheck:Leak
   fun:calloc
   ...
   fun:event_base_new
   fun:_ZN4base19MessagePumpLibeventC1Ev
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
   fun:_ZN4base6Thread10ThreadMainEv
}
{
   bug_19463
   Memcheck:Leak
   ...
   fun:_ZN4base19MessagePumpLibevent4InitEv
   fun:_ZN4base19MessagePumpLibeventC1Ev
   fun:_ZN4base11MessageLoopC1ENS0_4TypeE
}
{
   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
}
# IPCing uninitialized data
{
   bug_20997_a
   Memcheck:Param
   socketcall.sendmsg(msg.msg_iov[i])
   fun:sendmsg*
   fun:_ZN3IPC7Channel11ChannelImpl4SendEPNS_7MessageE
}
{
   bug_20997_b
   Memcheck:Param
   socketcall.sendmsg(msg.msg_iov[i])
   fun:sendmsg$UNIX2003
   ...
   fun:_ZN4base19MessagePumpLibevent21FileDescriptorWatcher28OnFileCanReadWithoutBlockingEiPS0_
   ...
   fun:event_process_active
   fun:event_base_loop
}
{
   bug_22098
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base19MessagePumpLibevent19WatchFileDescriptorEibNS0_4ModeEPNS0_21FileDescriptorWatcherEPNS0_7WatcherE
   fun:_ZN4base16MessageLoopForIO19WatchFileDescriptorEibNS_4ModeEPN4base19MessagePumpLibevent21FileDescriptorWatcherEPNS2_7WatcherE
   fun:_ZN3IPC7Channel11ChannelImpl23ProcessOutgoingMessagesEv
   fun:_ZN3IPC7Channel11ChannelImpl4SendEPNS_7MessageE
   fun:_ZN3IPC7Channel4SendEPNS_7MessageE
   fun:_ZN3IPC12ChannelProxy7Context13OnSendMessageEPNS_7MessageE
   fun:_ZN3IPC8SendTask3RunEv
}
{
   bug_22923
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN13WorkerService12CreateWorker*
   fun:_ZN19RenderMessageFilter14OnCreateWorker*
}
{
   bug_27665
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN10SkXfermode6CreateENS_4ModeE
   fun:_ZN7SkPaint15setXfermodeModeEN10SkXfermode4ModeE
   fun:_ZNK7WebCore19PlatformContextSkia16setupPaintCommonEP7SkPaint
   fun:_ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectERKNS_5ColorENS_10ColorSpaceE
   fun:_ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectERKNS_5ColorENS_10ColorSpaceENS_17CompositeOperatorE
}
# The following three suppressions are related to the workers code.
{
   bug_27837
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19WebSharedWorkerStub9OnConnectEii
}
{
   bug_27838
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF13FastAllocBasenwEj
   fun:_ZN7WebCore18MessagePortChannel6createEN3WTF10PassRefPtrINS_26PlatformMessagePortChannelEEE
   fun:_ZN6WebKit19WebSharedWorkerImpl7connectEPNS_21WebMessagePortChannelEPNS_15WebSharedWorker15ConnectListenerE
   fun:_ZN19WebSharedWorkerStub9OnConnectEii
}
{
   bug_28200
   Memcheck:Leak
   fun:malloc
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF13FastAllocBasenwEj
   fun:_ZN7WebCore18MessagePortChannel6createEN3WTF10PassRefPtrINS_26PlatformMessagePortChannelEEE
   fun:_ZN6WebKit19WebSharedWorkerImpl7connectEPNS_21WebMessagePortChannelEPNS_15WebSharedWorker15ConnectListenerE
   fun:_ZN19WebSharedWorkerStub9OnConnectEii
}
{
   # GTK tooltip doesn't always initialize variables.
   # https://bugzilla.gnome.org/show_bug.cgi?id=554686
   tooltip_554686
   Memcheck:Uninitialized
   fun:child_location_foreach
   fun:gtk_fixed_forall
   ...
   fun:find_widget_under_pointer
   fun:gtk_tooltip_show_tooltip
   fun:tooltip_popup_timeout
   fun:gdk_threads_dispatch
   fun:g_timeout_dispatch
}
{
   bug_29675
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN27ChromeBrowserMainPartsPosix24PostMainMessageLoopStartEv
   fun:_ZN7content15BrowserMainLoop20MainMessageLoopStartEv
   fun:_ZN7content21BrowserMainRunnerImpl10InitializeERKNS_18MainFunctionParamsE
   fun:_ZN7content11BrowserMainERKNS_18MainFunctionParamsE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl3RunEv
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
   fun:ChromeMain
}
{
   bug_30346
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN13TCMallocGuardC1Ev
   fun:_Z41__static_initialization_and_destruction_0ii
   fun:_GLOBAL__I__ZN61FLAG__namespace_do_not_use_directly_use_DECLARE_int64_instead43FLAGS_tcmalloc_large_alloc_report_thresholdE
}
{
   bug_30346b
   Memcheck:Unaddressable
   ...
   fun:_ZSt22__get_temporary_bufferIPN7WebCore11RenderLayerEESt4pairIPT_iEiS5_
   fun:_ZNSt17_Temporary_bufferIPPN7WebCore11RenderLayerES2_EC1ES3_S3_
   fun:_ZN7WebCore11RenderLayer17updateZOrderListsEv
   fun:_ZN7WebCore11RenderLayer24updateLayerListsIfNeededEv
   fun:_ZN7WebCore11RenderLayer38updateCompositingAndLayerListsIfNeededEv
}
{
   bug_30703a
   Memcheck:Param
   write(buf)
   ...
   fun:zipCloseFileInZipRaw
   fun:zipCloseFileInZip
   fun:_Z*13AddEntryToZip*
}
{
   bug_30703b
   Memcheck:Uninitialized
   fun:deflate
   ...
   fun:zipCloseFileInZipRaw
   fun:zipCloseFileInZip
   fun:_Z*13AddEntryToZip*
}
{
   bug_30704a
   Memcheck:Uninitialized
   fun:crc32
   ...
   fun:png_write_row
}
{
   bug_30704b
   Memcheck:Param
   write(buf)
   ...
   fun:_ZN26SandboxedUnpacker17RewriteImageFilesEv
}
{
   bug_30704c
   Memcheck:Param
   write(buf)
   ...
   fun:_ZNK16BrowserThemePack11WriteToDiskE*
}
{
   bug_30704d
   Memcheck:Uninitialized
   ...
   fun:png_process_data
   fun:_ZN7WebCore14PNGImageReader6decodeERKNS_12SharedBufferEb
   fun:_ZN7WebCore15PNGImageDecoder6decodeEb
   fun:_ZN7WebCore15PNGImageDecoder18frameBufferAtIndexEm
}
{
   bug_30704e
   Memcheck:Uninitialized
   obj:*/libpng*
   fun:png_write_row
}
{
   bug_30704f
   Memcheck:Uninitialized
   ...
   fun:wk_png_write_find_filter
   fun:wk_png_write_row
}
{
   bug_30704g
   Memcheck:Param
   write(buf)
   obj:*libpthread*
   fun:_ZN9file_util19WriteFileDescriptorE*
   fun:_ZN9file_util9WriteFileE*
   fun:*SaveScreenshotInternalE*4base8Callback*
   fun:*SaveScreenshotE*4base8Callback*
}
{
   bug_87232
   Memcheck:Uninitialized
   fun:_ZN7WebCore12base64EncodeEPKcjRN3WTF6VectorIcLj0EEEb
   fun:_ZN7WebCore12base64EncodeERKN3WTF6VectorIcLj0EEERS2_b
   fun:_ZN7WebCore*14ImageToDataURL*SkBitmapEEN3WTF6StringERT_*
}
{
   bug_31985
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net16HttpNetworkLayer10GetSessionEv
   fun:_ZN3net16HttpNetworkLayer17CreateTransactionEP10scoped_ptrINS_15HttpTransactionEE
   fun:_ZN3net9HttpCache11Transaction13DoSendRequestEv
   fun:_ZN3net9HttpCache11Transaction6DoLoopEi
}
{
   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_32623
   Memcheck:Leak
   ...
   fun:ssl3_HandleHandshakeMessage
   fun:ssl3_HandleHandshake
   fun:ssl3_HandleRecord
   fun:ssl3_GatherCompleteHandshake
   fun:SSL_ForceHandshake
   fun:_ZN3net18SSLClientSocketNSS4Core11DoHandshakeEv
}
{
   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_38138
   Memcheck:Param
   write(buf)
   obj:*libpthread*
   fun:_ZN3IPC7Channel11ChannelImpl23ProcessOutgoingMessagesEv
   ...
   fun:_ZN4base19MessagePumpLibevent3RunEPNS_11MessagePump8DelegateE
   fun:_ZN4base11MessageLoop11RunInternalEv
   fun:_ZN4base11MessageLoop10RunHandlerEv
}
{
   bug_30633_39325
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN11ProfileImpl17GetRequestContextEv
   fun:_ZN19SafeBrowsingService5StartEv
   fun:_ZN19SafeBrowsingService10InitializeEv
   fun:_ZN22ResourceDispatcherHost10InitializeEv
   fun:_ZN18BrowserProcessImpl28CreateResourceDispatcherHostEv
   fun:_ZN18BrowserProcessImpl24resource_dispatcher_hostEv
   fun:_ZN16ExtensionService4InitEv
}
{
   bug_42842
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19TestWebViewDelegate12createWorkerEPN6WebKit8WebFrameEPNS0_15WebWorkerClientE
   fun:_ZN6WebKit19WebWorkerClientImpl24createWorkerContextProxyEPN7WebCore6WorkerE
   fun:_ZN7WebCore18WorkerContextProxy6createEPNS_6WorkerE
   fun:_ZN7WebCore6WorkerC1EPNS_22ScriptExecutionContextE
   fun:_ZN7WebCore6Worker6createERKN3WTF6StringEPNS_22ScriptExecutionContextERi
   fun:_ZN7WebCore8V8Worker19constructorCallbackERKN2v89ArgumentsE
}
{
   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_42958_a
   Memcheck:Leak
   fun:malloc
   ...
   fun:_NPN_RegisterObject
   fun:_ZN7WebCore16ScriptController20windowScriptNPObjectEv
   fun:_ZNK6WebKit12WebFrameImpl12windowObjectEv
   fun:_ZN6webkit5npapi13WebPluginImpl23GetWindowScriptNPObjectEv
   fun:NPN_GetValue
}
{
   bug_42958_b
   Memcheck:Leak
   fun:malloc
   ...
   fun:_NPN_RegisterObject
   fun:_ZN7WebCore25createV8ObjectForNPObjectEP8NPObjectS1_
   fun:_ZN7WebCore16ScriptController18bindToWindowObjectEPNS_5FrameERKN3WTF6StringEP8NPObject
   fun:_ZN6WebKit12WebFrameImpl18bindToWindowObjectERKNS_9WebStringEP8NPObject
   fun:_ZN13CppBoundClass16bindToJavascriptEPN6WebKit8WebFrameERKNS0_9WebStringE
}
{
   bug_42958_c
   Memcheck:Leak
   fun:malloc
   ...
   fun:_NPN_RegisterObject
   fun:_ZN7WebCore25createV8ObjectForNPObjectEP8NPObjectS1_
   fun:_ZN7WebCore16ScriptController29createScriptInstanceForWidgetEPNS_6WidgetE
   fun:_ZN*7WebCore17HTMLPlugInElement11getInstanceEv
}
{
   bug_43471
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIPN4base11MessageLoop19DestructionObserverEE8allocateE*
   fun:_ZNSt12_Vector_baseIPN4base11MessageLoop19DestructionObserverESaIS*
   fun:_ZNSt6vectorIPN4base11MessageLoop19DestructionObserverESaIS*
   fun:_ZNSt6vectorIPN4base11MessageLoop19DestructionObserverESaIS*
   fun:_ZN16ObserverListBaseIN4base11MessageLoop19DestructionObserverEE11AddObserverEPS*
   fun:_ZN4base11MessageLoop22AddDestructionObserverEPNS0_19DestructionObserverE
}
{
   bug_46250
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIPN11MessageLoop12TaskObserverEE8allocateEjPKv
   fun:_ZNSt12_Vector_baseIPN11MessageLoop12TaskObserverESaIS2_EE11_M_allocateEj
   fun:_ZNSt6vectorIPN11MessageLoop12TaskObserverESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_
   fun:_ZNSt6vectorIPN11MessageLoop12TaskObserverESaIS2_EE9push_backERKS2_
   fun:_ZN16ObserverListBaseIN11MessageLoop12TaskObserverEE11AddObserverEPS1_
   fun:_ZN4base11MessageLoop15AddTaskObserverEPNS_12TaskObserverE
   fun:*IOJankObserver21AttachToCurrentThreadEv
}
{
   bug_47950
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*CreateSpdyHeadersFromHttpRequestERKN3net15HttpRequestInfoEPSt3mapISsSsSt4lessISsESaISt4pairIKSsSsEEE
}
{
   bug_49279_a
   Memcheck:Leak
   fun:_Znw*
   fun:*ChromeCookieMonsterDelegateC1EP7Profile
   fun:_ZN30ChromeURLRequestContextFactoryC2EP7Profile
}
{
   bug_49279_b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN29ChromeURLRequestContextGetter28CreateRequestContextForMediaE*
   fun:_ZN29ChromeURLRequestContextGetter22CreateOriginalForMediaE*
   fun:_ZN11ProfileImpl25GetRequestContextForMediaEv
}
{
   bug_49279_c
   Memcheck:Leak
   fun:_Znw*
   fun:*ChromeCookieMonsterDelegateC2EP7Profile
   fun:*ChromeCookieMonsterDelegateC1EP7Profile
   fun:_ZN30ChromeURLRequestContextFactoryC2EP7Profile
}
{
   bug_50304
   Memcheck:Leak
   ...
   fun:_ZN7history14HistoryBackend8InitImpl*
   fun:_ZN7history14HistoryBackend4Init*
}
{
   bug_50936
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN23OffTheRecordProfileImpl4InitEv
   fun:_ZN7Profile25CreateOffTheRecordProfileEv
   fun:_ZN11ProfileImpl22GetOffTheRecordProfileEv
}
{
   bug_50968_a
   Memcheck:Leak
   ...
   fun:_ZN14WebDataService29InitializeDatabaseIfNecessaryEv
}
{
   bug_50968_b
   Memcheck:Unaddressable
   ...
   fun:_ZN14WebDataService29InitializeDatabaseIfNecessaryEv
}
{
   bug_50968_d
   Memcheck:Uninitialized
   ...
   fun:_ZN14WebDataService29InitializeDatabaseIfNecessaryEv
}
{
   bug_56359_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net9HttpCache24GetBackendForTransactionEPNS0_11TransactionE
   fun:_ZN3net9HttpCache11Transaction12DoGetBackendEv
   fun:_ZN3net9HttpCache11Transaction6DoLoopEi
   fun:_ZN3net9HttpCache11Transaction5StartEPKNS_15HttpRequestInfoEP14CallbackRunnerI6Tuple1IiEERKNS_11BoundNetLogE
   fun:_ZN17URLRequestHttpJob16StartTransactionEv
   fun:_ZN17URLRequestHttpJob24OnCanGetCookiesCompletedEi
   fun:_ZN17URLRequestHttpJob23AddCookieHeaderAndStartEv
   fun:_ZN17URLRequestHttpJob5StartEv
   fun:_ZN10URLRequest8StartJobEP13URLRequestJob
   fun:_ZN10URLRequest5StartEv
   fun:_ZN10URLFetcher4Core15StartURLRequestEv
}
{
   bug_51153
   Memcheck:Leak
   ...
   fun:_ZN7history14HistoryBackend16GetFaviconForURLE13scoped_refptrI17CancelableRequestI14CallbackRunnerI6Tuple5IibS1_I16RefCountedMemoryEb4GURLEEEERKS7_
}
{
   bug_51379
   Memcheck:Leak
   fun:malloc
   ...
   obj:/usr/lib/libpangocairo-1.0.so.0.2002.3
   ...
   fun:_ZN3gfx10Canvas13DrawStringIntERKSbIwSt11char_traitsIwESaIwEERKNS_4FontERKjiiiii
   fun:_ZN3gfx10Canvas13DrawStringIntERKSbIwSt11char_traitsIwESaIwEERKNS_4FontERKjiiii
}
{
   bug_51590a
   Memcheck:Unaddressable
   ...
   fun:_ZN7WebCore13TextRunWalker13nextScriptRunEv
   fun:_ZN7WebCore13TextRunWalker14widthOfFullRunEv
}
{
   bug_51590b
   Memcheck:Unaddressable
   ...
   fun:_ZN7WebCore13TextRunWalker13nextScriptRunEv
   fun:_ZN7WebCore13TextRunWalker14widthOfFullRunEv
}
{
   bug_51590c
   Memcheck:Unaddressable
   ...
   fun:_ZN7WebCore13TextRunWalker13nextScriptRunEv
   fun:_ZN7WebCore13TextRunWalker14widthOfFullRunEv
}
{
   bug_51679
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN23MessageService16AddEventListenerERKSsi
   fun:_ZN24BrowserRenderProcessHost22OnExtensionAddListenerERKSs
}
{
   bug_52831
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*InotifyReaderTask3RunEv
   ...
   fun:_ZN4base11MessageLoop11RunInternalEv
   fun:_ZN4base11MessageLoop10RunHandlerEv
}
{
   bug_52837
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNSt3map*FilePath*insert*
   fun:_ZNSt3map*FilePath*ix*
   fun:_ZN16ExtensionService15UnloadExtensionERKSs
   fun:_ZN16ExtensionService18UninstallExtensionERKSsb
   fun:_ZN18AutomationProvider18UninstallExtensionEiPb
}
{
   bug_52957
   Memcheck:Unaddressable
   fun:glGetString
   fun:_ZN18gpu_info_collector19CollectGraphicsInfoER7GPUInfo
   fun:_ZN9GpuThread18OnEstablishChannelEi
}
{
   bug_54308
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNK8chromeos25CrosSettingsProviderProxy3GetERKSsPP5Value
   fun:_ZNK8chromeos12CrosSettings3GetERKSsPP5Value
   fun:_ZN8chromeos26CoreChromeOSOptionsHandler9FetchPrefERKSs
   fun:_ZN18CoreOptionsHandler16HandleFetchPrefsEPK9ListValue
}
{
   bug_55533
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN5IDMapIN3IPC7Channel8ListenerEL23IDMapOwnershipSemantics*
   fun:_ZN17RenderProcessHost*Profile
   fun:_ZN21MockRenderProcessHost*Profile
}
{
   bug_56676
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIN4base15file_util_proxy5EntryEE8allocate*
   fun:_ZNSt12_Vector_baseIN4base15file_util_proxy5EntryESaIS2_EE11_M_allocate*
   fun:_ZNSt6vectorIN4base15file_util_proxy5EntryESaIS2_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS2*
   fun:_ZNSt6vectorIN4base15file_util_proxy5EntryESaIS2_EEaSERKS4_
   fun:_ZN14MockDispatcher16DidReadDirectoryERKSt6vectorIN4base15file_util_proxy5EntryESaIS3_EEb
   fun:_ZN7fileapi19FileSystemOperation16DidReadDirectoryEN4base17PlatformFileErrorERKSt6vectorINS1_15file_util_proxy5EntryESaIS5_EE
}
{
   bug_58321
   Memcheck:Unaddressable
   fun:_ZNK3WTF6RefPtrIN7WebCore5FrameEE3getEv
   fun:_ZN7WebCore14ResourceLoader18didReceiveResponseEPNS_14ResourceHandleERKNS_16ResourceResponseE
   fun:_ZN7WebCore22ResourceHandleInternal18didReceiveResponseEPN6WebKit12WebURLLoaderERKNS1_14WebURLResponseE
   fun:_ZN11webkit_glue16WebURLLoaderImpl7Context18OnReceivedResponseERKNS_20ResourceLoaderBridge12ResponseInfoEb
   fun:_ZN85_GLOBAL__N_webkit_tools_test_shell_simple_resource_loader_bridge.cc_00000000_*12RequestProxy22NotifyReceivedResponseERKN11webkit_glue20ResourceLoaderBridge12ResponseInfoEb
}
{
   bug_58340
   Memcheck:Unaddressable
   fun:_ZNK3WTF6RefPtrIN7WebCore5FrameEE3getEv
   fun:_ZN7WebCore14ResourceLoader18didReceiveResponseEPNS_14ResourceHandleERKNS_16ResourceResponseE
   fun:_ZN7WebCore22ResourceHandleInternal18didReceiveResponseEPN6WebKit12WebURLLoaderERKNS1_14WebURLResponseE
   fun:_ZN11webkit_glue16WebURLLoaderImpl7Context18OnReceivedResponseERKNS_20ResourceResponseInfoEb
}
{
   bug_58546
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN27SSLConfigServiceManagerPrefC1EP7Profile
   fun:_ZN23SSLConfigServiceManager20CreateDefaultManagerEP7Profile
   fun:_ZN11ProfileImplC1E*
   fun:_ZN7Profile13CreateProfileE*
   fun:_ZN14ProfileManager13CreateProfileE*
   fun:_ZN14ProfileManager10GetProfileE*
   fun:_ZN14ProfileManager17GetDefaultProfileE*
   fun:_ZN14ProfileManager17GetDefaultProfileEv
}
{
   bug_58561
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net8internal26ClientSocketPoolBaseHelper16GetOrCreateGroupERKSs
   fun:_ZN3net8internal26ClientSocketPoolBaseHelper13RequestSocketERKSsPKNS1_7RequestE
   fun:_ZN3net20ClientSocketPoolBaseINS_*
   fun:_ZN3net*SocketPool13RequestSocketE*
   fun:_ZN3net18ClientSocketHandle4InitINS_*
   ...
   fun:_ZN3net21HttpStreamFactoryImpl3Job16DoInitConnectionEv
   fun:_ZN3net21HttpStreamFactoryImpl3Job6DoLoopEi
}
{
   bug_58564
   Memcheck:Leak
   fun:calloc
   ...
   fun:SSL_ImportFD
   fun:_ZN3net18SSLClientSocketNSS20InitializeSSLOptionsEv
   fun:_ZN3net18SSLClientSocketNSS7ConnectEP14CallbackRunnerI6Tuple1IiEE
   fun:_ZN3net13SSLConnectJob12DoSSLConnectEv
   fun:_ZN3net13SSLConnectJob6DoLoopEi
}
{
   bug_58574
   Memcheck:Unaddressable
   ...
   fun:_ZN4base11MessageLoop8PostTaskERKN15tracked_objects8LocationERKN4base8CallbackIFvvEEE
   fun:_ZN3net12CertVerifier7Request8DoVerifyEv
}
{
   bug_60556a
   Memcheck:Unaddressable
   ...
   fun:sqlite3_exec
   fun:_ZN3sql10Connection7ExecuteEPKc
   fun:_ZN11WebDatabase*
}
{
   bug_60556b
   Memcheck:Unaddressable
   ...
   fun:sqlite3_exec
   fun:_ZN3sql10Connection7ExecuteEPKc
   fun:_ZN11WebDatabase*
}
{
   bug_60556c
   Memcheck:Unaddressable
   ...
   fun:sqlite3_step
   fun:_ZN3sql9Statement3RunEv
   fun:_ZN3sql10Connection17CommitTransactionEv
   fun:_ZN3sql11Transaction6CommitEv
   fun:_ZN11WebDatabase*
}
{
   bug_60556d
   Memcheck:Unaddressable
   ...
   fun:sqlite3_step
   fun:_ZN3sql9Statement3RunEv
   fun:_ZN3sql10Connection17CommitTransactionEv
   fun:_ZN3sql11Transaction6CommitEv
   fun:_ZN11WebDatabase*
}
{
   bug_60556e
   Memcheck:Param
   read(buf)
   ...
   fun:sqlite3_exec
   fun:_ZN3sql10Connection7ExecuteEPKc
   fun:_ZN11WebDatabase*
}
{
   bug_60556f
   Memcheck:Unaddressable
   ...
   fun:sqlite3_close
   fun:_ZN3sql10Connection5CloseEv
   fun:_ZN3sql10ConnectionD2Ev
   fun:_ZN3sql10ConnectionD1Ev
   fun:_ZN11WebDatabase*
}
{
   bug_60556g
   Memcheck:Unaddressable
   ...
   fun:sqlite3_step
   fun:_ZN3sql9Statement4StepEv
   fun:_ZN7history11URLDatabase12GetRowForURLERK4GURLPNS_6URLRowE
   fun:_ZN7history14HistoryBackend12AddPageVisitERK4GURLN4base4TimeExjNS_11VisitSourceE
}
{
   bug_60654
   Memcheck:Uninitialized
   fun:_ZN7WebCore25GraphicsContext3DInternal7reshapeEii
   fun:_ZN7WebCore17GraphicsContext3D7reshapeEii
   fun:_ZN7WebCore21WebGLRenderingContextC1EPNS_17HTMLCanvasElementEN3WTF10PassRefPtrINS_17GraphicsContext3DEEE
   fun:_ZN7WebCore21WebGLRenderingContext6createEPNS_17HTMLCanvasElementEPNS_22WebGLContextAttributesE
   fun:_ZN7WebCore17HTMLCanvasElement10getContextERKN3WTF6StringEPNS_23CanvasContextAttributesE
   ...
   fun:_ZN2v88internal6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPPPS4_Pb
}
{
   bug_60656
   Memcheck:Overlap
   fun:strcpy
   fun:lFloatConst
   fun:byte_scan
   fun:yylex_CPP
   fun:_Z8yy_inputPci
   fun:_Z18yy_get_next_bufferv
   fun:_Z5yylexP7YYSTYPEPv
   fun:_Z7yyparsePv
   fun:_Z14PaParseStringsPKPKcPKiiR13TParseContext
   fun:_ZN9TCompiler7compileEPKPKcii
   fun:ShCompile
   fun:_ZN6WebKit31WebGraphicsContext3DDefaultImpl25angleValidateShaderSourceERNS0_17ShaderSourceEntryE
   fun:_ZN6WebKit31WebGraphicsContext3DDefaultImpl13compileShaderEj
   fun:_ZN7WebCore25GraphicsContext3DInternal13compileShaderEi
   fun:_ZN7WebCore17GraphicsContext3D13compileShaderEi
   fun:_ZN7WebCore21WebGLRenderingContext13compileShaderEPNS_11WebGLShaderERi
   fun:_ZN7WebCore29WebGLRenderingContextInternal21compileShaderCallbackERKN2v89ArgumentsE
   fun:_ZN2v88internal19HandleApiCallHelperILb0EEEPNS0_6ObjectENS0_47_GLOBAL__N_v8_src_builtins.cc_00000000_03DBA2A116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEE
}
{
   bug_60667c
   Memcheck:Leak
   ...
   obj:*
   fun:_ZN3gpu5gles216GLES2DecoderImpl15DoCompileShaderEj
   fun:_ZN3gpu5gles216GLES2DecoderImpl19HandleCompileShaderEjRKNS0_13CompileShaderE
   fun:_ZN3gpu5gles216GLES2DecoderImpl9DoCommandEjjPKv
}
{
   bug_60668a
   Memcheck:Uninitialized
   ...
   fun:_swrast_write_rgba_span
   fun:general_triangle
   fun:_swrast_validate_triangle
   fun:_swrast_Triangle
   fun:triangle_rgba
   fun:_tnl_render_triangles_verts
   fun:run_render
   fun:_tnl_run_pipeline
   fun:_tnl_draw_prims
   fun:_tnl_vbo_draw_prims
   fun:vbo_exec_DrawArrays
   fun:neutral_DrawArrays
   fun:glDrawArrays
}
{
   bug_60668b
   Memcheck:Overlap
   fun:memcpy
   fun:clip_span
   fun:_swrast_write_rgba_span
   fun:general_triangle
   fun:_swrast_validate_triangle
   fun:_swrast_Triangle
   fun:triangle_rgba
   fun:_tnl_render_poly_elts
   fun:_tnl_RenderClippedPolygon
   fun:clip_tri_4
   fun:clip_elt_triangles
   fun:run_render
   fun:_tnl_run_pipeline
   fun:_tnl_draw_prims
   fun:_tnl_vbo_draw_prims
   fun:vbo_validated_drawrangeelements
   fun:vbo_exec_DrawElements
   fun:neutral_DrawElements
   fun:glDrawElements
   fun:_ZN3gpu5gles216GLES2DecoderImpl14DoDrawElementsEbjijii
   fun:_ZN3gpu5gles216GLES2DecoderImpl18HandleDrawElementsEjRKNS0_12DrawElementsE
   fun:_ZN3gpu5gles216GLES2DecoderImpl9DoCommandEjjPKv
}
{
   bug_60668c
   Memcheck:Overlap
   ...
   fun:_swrast_write_rgba_span
   fun:general_triangle
   fun:_swrast_Triangle
   fun:triangle_rgba
   fun:_tnl_render_poly_elts
   fun:_tnl_RenderClippedPolygon
   fun:clip_tri_4
   fun:clip_render_tri_fan_verts
   fun:run_render
   fun:_tnl_run_pipeline
   fun:_tnl_draw_prims
   fun:_tnl_vbo_draw_prims
   fun:vbo_exec_DrawArrays
   fun:neutral_DrawArrays
   fun:glDrawArrays
}
{
   bug_60670a
   Memcheck:Unaddressable
   fun:swizzle_copy
   fun:_mesa_swizzle_ubyte_image
   fun:_mesa_texstore_rgba8888
   fun:_mesa_texstore
   fun:_mesa_store_teximage2d
   fun:_mesa_TexImage2D
   fun:glTexImage2D
   fun:_ZN6WebKit31WebGraphicsContext3DDefaultImpl10texImage2DEjjjjjjjjPKv
   fun:_ZN7WebCore25GraphicsContext3DInternal10texImage2DEjjjjjjjjPv
   fun:_ZN7WebCore17GraphicsContext3D10texImage2DEjjjjjjjjPv
}
{
   bug_60670b
   Memcheck:Unaddressable
   fun:extract_float_rgba
   fun:_mesa_unpack_color_span_chan
   fun:_mesa_make_temp_chan_image
   fun:_mesa_texstore_rgba8888
   fun:_mesa_texstore
   fun:_mesa_store_teximage2d
   fun:_mesa_TexImage2D
   fun:glTexImage2D
   fun:_ZN6WebKit31WebGraphicsContext3DDefaultImpl10texImage2DEjjjjjjjjPKv
   fun:_ZN7WebCore25GraphicsContext3DInternal10texImage2DEjjjjjjjjPv
   fun:_ZN7WebCore17GraphicsContext3D10texImage2DEjjjjjjjjPv
}
{
   bug_69073
   Memcheck:Leak
   fun:malloc
   ...
   fun:sqlite3*
   ...
   fun:find_objects
   fun:find_objects_by_template
   fun:nssToken_FindCertificatesBySubject
   fun:nssTrustDomain_FindCertificatesBySubject
   fun:nssCertificate_BuildChain
   fun:NSSCertificate_BuildChain
}
{
   bug_61424
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN13FormStructure18EncodeQueryRequestERK12ScopedVectorIS_EPSt6vectorISsSaISsEEPSs
   fun:*FormStructureTest_EncodeQueryRequest_Test8TestBodyEv
}
{
   bug_61424_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN13FormStructure18EncodeQueryRequestERK12ScopedVectorIS_EPSt6vectorISsSaISsEEPSs
   fun:_ZN12_GLOBAL__N_141FormStructureTest_EncodeQueryRequest_Test8TestBodyEv
}
{
   bug_63671
   Memcheck:Param
   write(buf)
   ...
   fun:_ZN9file_util9WriteFileE*
   fun:_Z24ConvertWebAppToExtensionRK18WebApplicationInfoRKN4base4TimeE
   fun:_ZN30ExtensionFromWebApp_Basic_Test8TestBodyEv
}
{
   bug_63671_b
   Memcheck:Param
   write(buf)
   ...
   fun:_ZN9file_util9WriteFileE*
   fun:_ZN12_GLOBAL__N_110SaveBitmapEPSt6vectorIhSaIhEE*
   fun:_ZN4base8internal15RunnableAdapterIPFvPSt6vectorIhSaIhEE*
}
{
   bug_64804
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base16MessageLoopProxy22currentEv
   ...
   fun:_ZN10URLFetcher4CoreC1EPS_RK4GURLNS_11RequestTypeEPNS_8DelegateE
   fun:_ZN10URLFetcherC*ERK4GURLNS_11RequestTypeEPNS_8DelegateE
}
{
   bug_64887_a
   Memcheck:Uninitialized
   fun:_itoa_word
   fun:vfprintf
   fun:vsnprintf
   fun:snprintf
   fun:_ZN7testing*26PrintByteSegmentInObjectToEPKhmmPSo
   fun:_ZN7testing*24PrintBytesInObjectToImplEPKhmPSo
   fun:_ZN7testing9internal220PrintBytesInObjectToEPKhmPSo
   fun:_ZN7testing9internal220TypeWithoutFormatterI*
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcE*
   fun:_ZN16testing_internal26DefaultPrintNonContainerToI*
   fun:_ZN7testing8internal14DefaultPrintToI*
   fun:_ZN7testing8internal7PrintToI*
   fun:_ZN7testing8internal16UniversalPrinterI*
   fun:_ZN7testing8internal14UniversalPrintI*
}
{
   bug_64887_b
   Memcheck:Uninitialized
   fun:_itoa_word
   fun:vfprintf
   fun:*vsnprintf*
   fun:*snprintf*
   fun:_ZN7testing*PrintByteSegmentInObjectTo*
   fun:_ZN7testing*PrintBytesInObjectToImplEPKhjPSo
   fun:_ZN7testing9internal220PrintBytesInObjectToEPKhjPSo
   fun:_ZN7testing9internal220TypeWithoutFormatter*
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcE*
   fun:_ZN16testing_internal26DefaultPrintNonContainerTo*
   fun:_ZN7testing8internal14DefaultPrintToI*
   fun:_ZN7testing8internal7PrintToI*
   fun:_ZN7testing8internal16UniversalPrinterI*
   fun:_ZN7testing8internal14UniversalPrintI*
}
{
   bug_64887_c
   Memcheck:Uninitialized
   fun:_itoa_word
   fun:vfprintf
   fun:*vsnprintf*
   fun:*snprintf*
   fun:_ZN7testing*PrintByteSegmentInObjectTo*
   fun:_ZN7testing*PrintBytesInObjectToImplEPKhjPSo
   fun:_ZN7testing9internal220PrintBytesInObjectToEPKhjPSo
   fun:_ZN7testing9internal220TypeWithoutFormatter*
   fun:_ZN7testing9internal2lsIcSt11char_traitsIcE*
   fun:_ZN16testing_internal26DefaultPrintNonContainerTo*
   fun:_ZN7testing8internal14DefaultPrintToI*
   fun:_ZN7testing8internal7PrintToI*
   fun:_ZN7testing8internal16UniversalPrinterI*
   fun:_ZN7testing8internal14UniversalPrintI*
}
{
   bug_64887_d
   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_e
   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_68069_a
   Memcheck:Leak
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   fun:_ZN3gfx20GetGLCoreProcAddressEPKc
   fun:_ZN3gfx22InitializeGLBindingsGLEv
   fun:_ZN3gfx20InitializeGLBindingsENS_16GLImplementationE
   fun:_ZN3gfx9GLSurface16InitializeOneOffEv
}
{
   bug_68069_b
   Memcheck:Leak
   fun:malloc
   fun:XextCreateExtension
   ...
   fun:_ZN3gfx12GLSurfaceGLX16InitializeOneOffEv
   fun:_ZN3gfx9GLSurface24InitializeOneOffInternalEv
   fun:_ZN3gfx9GLSurface16InitializeOneOffEv
}
{
   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_69919
   Memcheck:Leak
   fun:calloc
   ...
   fun:_ZN3gfx15OSMesaGLContext10InitializeEjPNS_9GLContextE
   fun:_ZN3gfx9GLContext24CreateOffscreenGLContextEPS0_
   fun:*InitializeGLContextEv
}
{
   Bug_69934_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN*NPObjectProxy10NPAllocateEP4_NPPP7NPClass
   fun:_NPN_CreateObject
   fun:_ZN6WebKit11WebBindings12createObjectEP4_NPPP7NPClass
}
{
   Bug_69934_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC11SyncMessage13GenerateReplyEPKNS_7MessageE
   fun:_ZN3IPC17SyncMessageSchema*
}
{
   bug_70327
   Memcheck:Leak
   ...
   fun:shaper_font_cache_insert
   fun:get_shaper_and_font
   fun:itemize_state_process_run
   fun:pango_itemize_with_base_dir
   fun:pango_layout_check_lines
   fun:pango_layout_get_extents_internal
   fun:pango_layout_get_pixel_extents
   fun:pango_layout_get_pixel_size
   fun:_ZN3gfx10Canvas13SizeStringIntERKSbItN4base20string16_char_traitsESaItEERKNS_4FontEPiSA_i
}
{
   bug_71152
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN14SessionService20OnGotSessionCommandsEi13scoped_refptrIN18BaseSessionService26InternalGetCommandsRequestEE
}
{
   bug_71728
   Memcheck:Leak
   fun:_Znw*
   fun:*DownloadFileTest5SetUpEv
}
{
   bug_72544
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF10RefCountedIN7WebCore14StyleSheetListEEnwEj
   fun:_ZN7WebCore14StyleSheetList6createEPNS_8DocumentE
   fun:_ZN7WebCore8DocumentC2EPNS_5FrameERKNS_4KURLEbbS5_
   fun:_ZN7WebCore12HTMLDocumentC1EPNS_5FrameERKNS_4KURLES5_
   fun:_ZN7WebCore12HTMLDocument6createEPNS_5FrameERKNS_4KURLES5_
   fun:_ZN7WebCore17DOMImplementation14createDocumentERKN3WTF6StringEPNS_5FrameERKNS_4KURLEb
   fun:_ZN7WebCore14DocumentWriter14createDocumentERKNS_4KURLE
   fun:_ZN7WebCore14DocumentWriter5beginERKNS_4KURLEbPNS_14SecurityOriginE
   fun:_ZN7WebCore11FrameLoader4initEv
   fun:_ZN7WebCore5Frame4initEv
   fun:_ZN6WebKit12WebFrameImpl21initializeAsMainFrameEPNS_11WebViewImplE
   fun:_ZN6WebKit11WebViewImpl19initializeMainFrameEPNS_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_73299
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN21RenderProcessHostImpl20CreateMessageFiltersEv
   fun:_ZN21RenderProcessHostImpl4InitEb
   fun:_ZN7content18RenderViewHostImpl16CreateRenderViewERKSbItN4base20string16_char_traitsESaItEEi
}
{
   bug_73415
   Memcheck:Unaddressable
   fun:_ZN23AccessibilityController36shouldDumpAccessibilityNotificationsEv
   fun:_ZN11WebViewHost29postAccessibilityNotificationERKN6WebKit22WebAccessibilityObjectENS0_28WebAccessibilityNotificationE
   fun:_ZN6WebKit16ChromeClientImpl29postAccessibilityNotificationEPN7WebCore19AccessibilityObjectENS1_13AXObjectCache14AXNotificationE
   fun:_ZN7WebCore13AXObjectCache24postPlatformNotificationEPNS_19AccessibilityObjectENS0_14AXNotificationE
}
{
   bug_73675
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN20LayoutTestController13waitUntilDoneERKN3WTF6VectorI10CppVariantLj0EEEPS2_
   fun:_ZN13CppBoundClass14MemberCallbackI20LayoutTestControllerE3runERKN3WTF6VectorI10CppVariantLj0EEEPS5_
   fun:_ZN13CppBoundClass6invokeEPvPK10_NPVariantjPS1_
   fun:_ZN11CppNPObject6invokeEP8NPObjectPvPK10_NPVariantjPS3_
   fun:_ZN7WebCore18npObjectInvokeImplERKN2v89ArgumentsENS_18InvokeFunctionTypeE
   fun:_ZN7WebCore21npObjectMethodHandlerERKN2v89ArgumentsE
   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_75051
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net12CertVerifier6VerifyEPNS_15X509CertificateERKSsiPNS_16CertVerifyResultEP14CallbackRunnerI6Tuple1IiEEPPv
   fun:_ZN3net25SingleRequestCertVerifier6VerifyEPNS_15X509CertificateERKSsiPNS_16CertVerifyResultEP14CallbackRunnerI6Tuple1IiEE
   fun:_ZN3net18SSLClientSocketNSS12DoVerifyCertEi
   fun:_ZN3net18SSLClientSocketNSS15DoHandshakeLoopEi
}
{
   bug_75127a
   Memcheck:Uninitialized
   ...
   fun:png_process_data
   fun:_ZN3gfx8PNGCodec6Decode*
}
{
   bug_75127b
   Memcheck:Uninitialized
   ...
   fun:png_process_data
   fun:_ZN3gfx8PNGCodec6Decode*
}
{
   bug_75127c
   Memcheck:Uninitialized
   ...
   fun:png_process_data
   fun:_ZN3gfx8PNGCodec6Decode*
}
{
   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_77766
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN7WebCore18PerformTaskContextnwEm
   fun:_ZN7WebCore8Document8postTaskEN3WTF10PassOwnPtrINS_22ScriptExecutionContext4TaskEEE
   fun:_ZN7WebCore20WorkerMessagingProxy22workerContextDestroyedEv
   fun:_ZN6WebKit19WebWorkerClientImpl22workerContextDestroyedEv
   fun:_ZN7WebCore13WorkerContextD2Ev
   fun:_ZN7WebCore22DedicatedWorkerContextD0Ev
   fun:_ZN3WTF10RefCountedIN7WebCore13WorkerContextEE5derefEv
   fun:_ZN3WTF6RefPtrIN7WebCore13WorkerContextEEaSEPS2_
   fun:_ZN7WebCore12WorkerThread12workerThreadEv
   fun:_ZN7WebCore12WorkerThread17workerThreadStartEPv
   fun:_ZN3WTFL16threadEntryPointEPv
   fun:_ZN3WTFL19wtfThreadEntryPointEPv
}
{
   bug_78201
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN18BrowserProcessImpl28CreateResourceDispatcherHostEv
   fun:_ZN18BrowserProcessImpl24resource_dispatcher_hostEv
   fun:_ZN16ExtensionService4InitEv
   fun:_ZN11ProfileImpl14InitExtensionsE*
}
{
   bug_78786
   Memcheck:Leak
   fun:_Znw*
   fun:*35NonBlockingInvalidationNotifierTest5SetUpEv
}
{
   bug_79357a
   Memcheck:Unaddressable
   ...
   fun:*FilePathWatcherImpl*Watch*Delegate*
   fun:*FilePathWatcher*Watch*
   fun:_ZN21UserStyleSheetWatcher4InitEv
}
{
   bug_79357b
   Memcheck:Leak
   ...
   fun:*FilePathWatcherImpl*Watch*Delegate*
   fun:*FilePathWatcher*Watch*
   fun:_ZN21UserStyleSheetWatcher4InitEv
}
{
   bug_79651
   Memcheck:Leak
   ...
   fun:_ZN8notifier14XmppConnectionC1ERKN4buzz18XmppClientSettingsERK13scoped_refptrIN3net23URLRequestContextGetterEEPNS0_8DelegateEPNS1_11PreXmppAuthE
   fun:_ZN8notifier18SingleLoginAttempt13OnNewSettingsERKNS_18ConnectionSettingsE
   fun:_ZN8notifier23XmppConnectionGenerator17UseNextConnectionEv
   fun:_ZN8notifier23XmppConnectionGenerator15StartGeneratingEv
   fun:_ZN8notifier18SingleLoginAttemptC1EPNS_13LoginSettingsEPNS0_8DelegateE
   fun:_ZN8notifier5Login15StartConnectionEv
   fun:_ZN13sync_notifier20InvalidationNotifier17UpdateCredentialsERKSsS2_
   fun:*35InvalidationNotifierTest_Basic_Test8TestBodyEv
}
{
   bug_79652
   Memcheck:Leak
   ...
   fun:_ZN8chromeos14AudioMixerAlsa15ConnectInternalEv
   fun:_ZN8chromeos14AudioMixerAlsa7ConnectEv
}
{
   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_79865a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN33MalwareDetailsTest_HTTPCache_Test8TestBodyEv
}
{
   bug_79865b
   Memcheck:Leak
   ...
   fun:_Znw*
   fun:_ZN14TestingProfile20CreateRequestContextEv
   fun:_ZN42MalwareDetailsTest_HTTPCacheNoEntries_Test8TestBodyEv
}
{
   bug_79933a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN21TestURLRequestContext4InitEv
   ...
   fun:_ZN21TestURLRequestContextC1Ev
   fun:_ZN27TestURLRequestContextGetter20GetURLRequestContextEv
}
{
   bug_16089 WorkerPool threads can leak by design
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base22PosixDynamicThreadPool8PostTask*
}
{
   bug_80462_a
   Memcheck:Leak
   fun:malloc
   fun:_ZN7WebCoreL15allocV8NPObjectEP4_NPPP7NPClass
   fun:_NPN_CreateObject
   fun:_ZN7WebCore22npCreateV8ScriptObjectEP4_NPPN2v86HandleINS2_6ObjectEEEPNS_9DOMWindowE
   fun:_ZN6WebKitL16makeIntArrayImplERKNS_9WebVectorIiEE
   fun:_ZN6WebKit11WebBindings12makeIntArrayERKNS_9WebVectorIiEE
}
{
   bug_80462_b
   Memcheck:Leak
   fun:malloc
   fun:_ZN7WebCoreL15allocV8NPObjectEP4_NPPP7NPClass
   fun:_NPN_CreateObject
   fun:_ZN7WebCore22npCreateV8ScriptObjectEP4_NPPN2v86HandleINS2_6ObjectEEEPNS_9DOMWindowE
   fun:_ZN6WebKitL19makeStringArrayImplERKNS_9WebVectorINS_9WebStringEEE
   fun:_ZN6WebKit11WebBindings15makeStringArrayERKNS_9WebVectorINS_9WebStringEEE
}
{
   bug_80537_a
   Memcheck:Leak
   fun:calloc
   ...
   fun:_ZN3gfx15GLContextOSMesa11MakeCurrentEv
}
{
   bug_80537_b
   Memcheck:Leak
   fun:calloc
   ...
   fun:_ZN3gfx15GLContextOSMesa11MakeCurrentEPNS_9GLSurfaceE
}
{
   bug_80551
   Memcheck:Leak
   fun:_Znw*
   fun:_Z11BrowserMainRK18MainFunctionParams
   fun:_ZN20InProcessBrowserTest5SetUpEv
}
{
   bug_80550_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN16RenderWidgetHost11WasRestoredEv
}
{
   bug_80550_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN16RenderWidgetHost9WasHiddenEv
}
{
   bug_80663
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMN3net17URLRequestHttpJobEFvPSsPSt6vectorINS1_11CookieStore10CookieInfoESaIS6_EEEPS2_EENS_8internal20InvokerStorageHolderINSD_15InvokerStorage1IT_T0_EEEESG_RKSH_
   fun:_ZN3net17URLRequestHttpJob23AddCookieHeaderAndStartEv
   fun:_ZN3net17URLRequestHttpJob5StartEv
   fun:_ZN3net10URLRequest8StartJobEPNS_13URLRequestJobE
   fun:_ZN3net10URLRequest5StartEv
   fun:_ZN10URLFetcher4Core15StartURLRequestEv
   fun:_ZN10URLFetcher4Core30StartURLRequestWhenAppropriateEv
}
{
   bug_82717
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN6chrome26ChromeContentBrowserClient24RenderProcessHostCreatedEPN7content17RenderProcessHostE
   fun:_ZN21RenderProcessHostImpl4Init*
   ...
   fun:_ZN15WebContentsImpl32CreateRenderViewForRenderManagerEP*
   fun:_ZN21RenderViewHostManager14InitRenderViewEP*
   ...
   fun:_ZN21RenderViewHostManager8NavigateERKN7content19NavigationEntryImplE
   fun:_ZN15WebContentsImpl15NavigateToEntryERKN7content19NavigationEntryImplENS0_20NavigationController10ReloadTypeE
}
{
   bug_83609
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4Bind*TaskClosureAdapterEFvvEPS2_EENS_8internal20InvokerStorageHolderINS6_15InvokerStorage1IT_T0_EEEES9_RKSA_
   fun:_ZN4base11MessageLoop15PostDelayedTaskERKN15tracked_objects8LocationEP4Taskx
   fun:_ZN13BrowserThread14PostTaskHelperENS_2IDERKN15tracked_objects8LocationEP4Taskxb
   fun:_ZN13BrowserThread8PostTaskENS_2IDERKN15tracked_objects8LocationEP4Task
}
{
   bug_83609b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4Bind*TaskClosureAdapterEFvvEPS2_EENS_8internal20InvokerStorageHolderINS6_15InvokerStorage1IT_T0_EEEES9_RKSA_
   fun:_ZN4base11MessageLoop8PostTaskERKN15tracked_objects8LocationEP4Task
}
{
   bug_84224_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocator*PendingTaskEE8allocate*
   fun:_ZN*_Deque_baseIN*PendingTaskESaIS1_*_M_allocate_*
   ...
   fun:_ZNSt5dequeIN*PendingTaskESaIS1_EE*push_back*
   fun:_ZNSt5queueIN4*PendingTask*deque*push*
   fun:_ZN4base11MessageLoop18AddToIncomingQueueEPN*PendingTaskE*
}
{
   bug_84224_b
   Memcheck:Unaddressable
   fun:_ZN13scoped_refptrIN4base8internal18InvokerStorageBaseEEC2ERKS3_
   fun:_ZN13scoped_refptrIN4base8internal18InvokerStorageBaseEEC1ERKS3_
   fun:_ZN4base8internal12CallbackBaseC2ERKS1_
   fun:_ZN4base8CallbackIFvvEEC2ERKS2_
   fun:_ZN4base8CallbackIFvvEEC1ERKS2_
   fun:_ZN4base11MessageLoop11PendingTaskC2ERKS0_
   fun:_ZN4base11MessageLoop11PendingTaskC1ERKS0_
   fun:_ZN9__gnu_cxx13new_allocatorIN11MessageLoop11PendingTaskEE9constructEPS2_RKS2_
   fun:_ZNSt5dequeIN11MessageLoop11PendingTaskESaIS1_EE9push_backERKS1_
   fun:_ZNSt5queueIN11MessageLoop11PendingTaskESt5dequeIS1_SaIS1_EEE4pushERKS1_
   fun:_ZN4base11MessageLoop18AddToIncomingQueueEPNS_11PendingTaskE
}
{
   bug_84265
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12LoginHandler6CreateEPN3net17AuthChallengeInfoEPNS0_10URLRequestE
   fun:_Z17CreateLoginPromptPN3net17AuthChallengeInfoEPNS_10URLRequestE
   fun:_ZN22ResourceDispatcherHost14OnAuthRequiredEPN3net10URLRequestEPNS0_17AuthChallengeInfoE
   fun:_ZN3net13URLRequestJob21NotifyHeadersCompleteEv
}
{
   bug_84770_a
   Memcheck:Unaddressable
   fun:_ZN6WebKit21FrameLoaderClientImpl12allowPluginsEb
   fun:_ZN7WebCore14SubframeLoader12allowPluginsENS_28ReasonForCallingAllowPluginsE
}
{
   bug_84770_b
   Memcheck:Unaddressable
   fun:_ZN6WebKit21FrameLoaderClientImpl15allowJavaScriptEb
   fun:_ZN7WebCore16ScriptController17canExecuteScriptsENS_33ReasonForCallingCanExecuteScriptsE
}
{
   bug_84770_c
   Memcheck:Unaddressable
   fun:_ZN6WebKit21FrameLoaderClientImpl20allowScriptExtensionERKN3WTF6StringEi
   fun:_ZN7WebCore16V8DOMWindowShell16createNewContextEN2v86HandleINS1_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_88640_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11ProfileImpl30InitRegisteredProtocolHandlersEv
   fun:_ZN11ProfileImpl11DoFinalInitEv
   fun:_ZN11ProfileImpl13OnPrefsLoadedEb
}
{
   bug_88640_b
   Memcheck:Leak
   ...
   fun:_ZN11ProfileImpl13OnPrefsLoadedEb
   ...
   fun:_ZN11ProfileImplC*E*
}
{
   bug_88640_c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN29ChromeURLRequestContextGetter14CreateOriginalEP7ProfilePK13ProfileIOData
   fun:_ZN17ProfileImplIOData6Handle4InitE*
   fun:_ZN11ProfileImpl11DoFinalInitEv
   fun:_ZN11ProfileImpl13OnPrefsLoadedEb
}
{
   bug_81796
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base16MessageLoopProxy22currentEv
   fun:_ZN3IPC12ChannelProxy7ContextC1EPNS_7Channel8ListenerEPN4base16MessageLoopProxyE
   fun:_ZN3IPC12ChannelProxyC1ERKNS_13ChannelHandleENS_7Channel4ModeEPNS4_8ListenerEPN4base16MessageLoopProxyE
}
{
   bug_89304
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net20ClientSocketPoolBaseINS_*SocketParamsEE13RequestSocketERKSsRK13scoped_refptrIS1_ENS_15RequestPriorityEPNS_18ClientSocketHandleEP14CallbackRunnerI6Tuple1IiEERKNS_11BoundNetLogE
   fun:_ZN3net*SocketPool13RequestSocketERKSsPKvNS_15RequestPriorityEPNS_18ClientSocketHandleEP14CallbackRunnerI6Tuple1IiEERKNS_11BoundNetLogE
   fun:_ZN3net18ClientSocketHandle4Init*
   ...
   fun:_ZN3net23ClientSocketPoolManager30InitSocketHandleForHttpRequestERK4GURLRKNS_18HttpRequestHeadersEiNS_15RequestPriorityEPNS_18HttpNetworkSessionERKNS_9ProxyInfoEbbRKNS_9SSLConfigESF_RKNS_11BoundNetLogEPNS_18ClientSocketHandleEP14CallbackRunnerI6Tuple1IiEE
   fun:_ZN3net21HttpStreamFactoryImpl3Job16DoInitConnectionEv
}
{
   bug_89311
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net16HttpStreamParser22DoParseResponseHeadersEi
   fun:_ZN3net16HttpStreamParser20ParseResponseHeadersEv
   fun:_ZN3net16HttpStreamParser21DoReadHeadersCompleteEi
}
{
   bug_89942_a
   Memcheck:Leak
   ...
   fun:_ZN10ZygoteHost11ForkRequestERKSt6vectorISsSaISsEERKS0_ISt4pairIjiESaIS6_EERKSs
   fun:_ZN20ChildProcessLauncher7Context14LaunchInternalE13scoped_refptrIS0_EN13BrowserThread2IDEbRKSt6vectorISt4pairISsSsESaIS7_EEiP11CommandLine
}
{
   bug_89942_b
   Memcheck:Leak
   ...
   fun:_ZNSt6vectorISt4pairIjiESaIS1_EE9push_backERKS1_
   fun:_ZN20ChildProcessLauncher7Context14LaunchInternalE13scoped_refptrIS0_EN13BrowserThread2IDEbRKSt6vectorISt4pairISsSsESaIS7_EEiP11CommandLine
}
{
   bug_90057a
   Memcheck:Leak
   ...
   fun:_ZN3net13CookieMonster9InitStoreEv
   fun:_ZN3net13CookieMonster15InitIfNecessaryEv
   fun:_ZN3net13CookieMonster30GetAllCookiesForURLWithOptionsERK4GURLRKNS_13CookieOptionsE
   fun:_ZN3net13CookieMonster19GetAllCookiesForURLERK4GURL
   fun:_ZN22ResourceDispatcherHost13CanGetCookiesEPN3net10URLRequestE
   fun:_ZN3net10URLRequest13CanGetCookiesEv
   fun:_ZN3net13URLRequestJob13CanGetCookiesEv
   fun:_ZN3net17URLRequestHttpJob23AddCookieHeaderAndStartEv
}
{
   bug_90057b
   Memcheck:Leak
   ...
   fun:_ZN3net13CookieMonster9InitStoreEv
   fun:_ZN3net13CookieMonster15InitIfNecessaryEv
   fun:_ZN3net13CookieMonster21GetCookiesWithOptionsERK4GURLRKNS_13CookieOptionsE
   fun:_ZN3net13CookieMonster26GetCookiesWithOptionsAsyncERK4GURLRKNS_13CookieOptionsERKN4base8CallbackIFvRKSsEEE
   fun:_ZN3net11CookieStore15GetCookiesAsyncERK4GURLRKN4base8CallbackIFvRKSsEEE
   fun:_ZN12_GLOBAL__N_120GetCookiesOnIOThreadERK4GURLRK13scoped_refptrIN3net23URLRequestContextGetterEEPN4base13WaitableEventEPSs
}
{
   bug_90057c
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net17URLRequestHttpJob14SaveNextCookieEv
   fun:_ZN3net17URLRequestHttpJob35SaveCookiesAndNotifyHeadersCompleteEv
   fun:_ZN3net17URLRequestHttpJob16OnStartCompletedEi
}
{
   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_90400
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11ProfileImpl24GetUserStyleSheetWatcherEv
   fun:_ZN6chrome26ChromeContentBrowserClient14GetWebkitPrefs*
   fun:_ZN15WebContentsImpl14GetWebkitPrefsEv
}
{
   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_90487b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   ...
   fun:_ZN5quota12QuotaManager*
}
{
   bug_90496a
   Memcheck:Leak
   ...
   fun:_ZN3IPC16MessageWithTupleI6Tuple2Ii23ResourceHostMsg_RequestEE8DispatchI22ResourceDispatcherHostS6_iRKS2_EEbPKNS_7MessageEPT_PT0_MSC_FvRSA_T1_T2_E
   fun:_ZN22ResourceDispatcherHost17OnMessageReceivedERKN3IPC7MessageEP21ResourceMessageFilterPb
   fun:_ZN21ResourceMessageFilter17OnMessageReceivedERKN3IPC7MessageEPb
   fun:_ZN20BrowserMessageFilter15DispatchMessageERKN3IPC7MessageE
   fun:_ZN20BrowserMessageFilter17OnMessageReceivedERKN3IPC7MessageE
   fun:_ZN3IPC12ChannelProxy7Context10TryFiltersERKNS_7MessageE
   fun:_ZN3IPC12ChannelProxy7Context17OnMessageReceivedERKNS_7MessageE
   fun:_ZN3IPC7Channel11ChannelImpl23ProcessIncomingMessagesEv
   fun:_ZN3IPC7Channel11ChannelImpl28OnFileCanReadWithoutBlockingEi
}
{
   bug_90496b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN22ResourceDispatcherHost23CompleteResponseStartedEPN3net10URLRequestE
   fun:_ZN22ResourceDispatcherHost17OnResponseStartedEPN3net10URLRequestE
   fun:_ZN3net10URLRequest21NotifyResponseStartedEv
   fun:_ZN3net13URLRequestJob21NotifyHeadersCompleteEv
}
{
   bug_90496c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN20AsyncResourceHandler15OnReadCompletedEiPi
   fun:_ZN23BufferedResourceHandler15OnReadCompletedEiPi
   fun:_ZN27SafeBrowsingResourceHandler15OnReadCompletedEiPi
   fun:_ZN22OfflineResourceHandler15OnReadCompletedEiPi
   fun:_ZN22ResourceDispatcherHost12CompleteReadEPN3net10URLRequestEPi
   fun:_ZN22ResourceDispatcherHost15OnReadCompletedEPN3net10URLRequestEi
   fun:_ZN3net10URLRequest19NotifyReadCompletedEi
   fun:_ZN3net13URLRequestJob18NotifyReadCompleteEi
   fun:_ZN19URLRequestChromeJob13DataAvailableEP16RefCountedMemory
   fun:_ZN27ChromeURLDataManagerBackend13DataAvailableEiP16RefCountedMemory
   fun:_ZN20ChromeURLDataManager10DataSource22SendResponseOnIOThreadEi13scoped_refptrI16RefCountedMemoryE
}
{
   bug_90496d
   Memcheck:Leak
   ...
   fun:_ZN24CrossSiteResourceHandler14ResumeResponseEv
   fun:_ZN22ResourceDispatcherHost12OnSwapOutACKERK22ViewMsg_SwapOut_Params
   fun:_ZN18RenderWidgetHelper21OnCrossSiteSwapOutACKERK22ViewMsg_SwapOut_Params
}
{
   bug_90496e
   Memcheck:Leak
   ...
   fun:_ZN14SharedIOBuffer4InitEv
   fun:_ZN20AsyncResourceHandler10OnWillReadEiPPN3net8IOBufferEPii
   fun:_ZN24CrossSiteResourceHandler10OnWillReadEiPPN3net8IOBufferEPii
   fun:_ZN23BufferedResourceHandler10OnWillReadEiPPN3net8IOBufferEPii
   fun:_ZN27SafeBrowsingResourceHandler10OnWillReadEiPPN3net8IOBufferEPii
   fun:_ZN22OfflineResourceHandler10OnWillReadEiPPN3net8IOBufferEPii
   fun:_ZN22ResourceDispatcherHost4ReadEPN3net10URLRequestEPi
   fun:_ZN22ResourceDispatcherHost12StartReadingEPN3net10URLRequestE
}
{
   bug_90671
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZNK3sql9Statement*ColumnString*
   fun:_ZN7history11URLDatabase10FillURLRowERN3sql9StatementEPNS_6URLRowE
   fun:_ZN7history11URLDatabase13URLEnumerator10GetNextURLEPNS_6URLRowE
   fun:_ZN7history14HistoryBackend11IterateURLsEPN14HistoryService13URLEnumeratorE
}
{
   bug_91199
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19URLRequestChromeJob15GetResponseInfoEPN3net16HttpResponseInfoE
   fun:_ZN3net13URLRequestJob21NotifyHeadersCompleteEv
   fun:_ZN19URLRequestChromeJob10StartAsyncEv
}
{
   bug_92571
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7history16TopSitesDatabase8CreateDBE*
   fun:_ZN7history16TopSitesDatabase4InitE*
   fun:_ZN7history15TopSitesBackend16InitDBOnDBThreadE*
}
{
   bug_92741a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIPFvPNS_13WaitableEventEPSsRKSsES2_S3_EENS_8internal20InvokerStorageHolderINS8_15InvokerStorage2IT_T0_T1_EEEESB_RKSC_RKSD_
   fun:_ZN12_GLOBAL__N_120GetCookiesOnIOThreadERK4GURLRK13scoped_refptrIN3net23URLRequestContextGetterEEPN4base13WaitableEventEPSs
   fun:_Z18DispatchToFunctionIPFvRK4GURLRK13scoped_refptrIN3net23URLRequestContextGetterEEPN4base13WaitableEventEPSsES0_S6_SB_SC_EvT_RK6Tuple4IT0_T1_T2_T3_E
}
{
   bug_92741b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMN3net17URLRequestHttpJobEFvPSsPSt6vectorINS1_11CookieStore10CookieInfoESaIS6_EEENS_7WeakPtrIS2_EEEENS_8internal20InvokerStorageHolderINSE_15InvokerStorage1IT_T0_EEEESH_RKSI_
   fun:_ZN3net17URLRequestHttpJob24CheckCookiePolicyAndLoadERKNS_10CookieListE
}
{
   bug_92741c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMN3net17URLRequestHttpJobEFvRKNS1_10CookieListEENS_7WeakPtrIS2_EEEENS_8internal20InvokerStorageHolderINSA_15InvokerStorage1IT_T0_EEEESD_RKSE_
   fun:_ZN3net17URLRequestHttpJob23AddCookieHeaderAndStartEv
   fun:_ZN3net17URLRequestHttpJob5StartEv
   fun:_ZN3net10URLRequest8StartJobEPNS_13URLRequestJobE
   fun:_ZN3net10URLRequest5StartEv
}
{
   bug_92876a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net18SSLClientSocketNSS10BufferSendEv
   fun:_ZN3net18SSLClientSocketNSS13DoTransportIOEv
   fun:_ZN3net18SSLClientSocketNSS11DoWriteLoopEi
   fun:_ZN3net18SSLClientSocketNSS5WriteEPNS_8IOBufferEiP14CallbackRunnerI6Tuple1IiEE
   fun:_ZN3net11SpdySession11WriteSocketEv
}
{
   bug_92876b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net18SSLClientSocketNSS10BufferSendEv
   fun:_ZN3net18SSLClientSocketNSS13DoTransportIOEv
   fun:_ZN3net18SSLClientSocketNSS15DoHandshakeLoopEi
   fun:_ZN3net18SSLClientSocketNSS7ConnectEP14CallbackRunnerI6Tuple1IiEE
   fun:_ZN3net13SSLConnectJob12DoSSLConnectEv
   fun:_ZN3net13SSLConnectJob6DoLoopEi
   fun:_ZN3net13SSLConnectJob12OnIOCompleteEi
}
{
   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_94195
   Memcheck:Leak
   ...
   fun:_ZN12GpuBlacklist16LoadGpuBlacklistERKSsNS_8OsFilterE
}
{
   bug_94345
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK4base8internal18WeakReferenceOwner6GetRefEv
   fun:_ZN4base15SupportsWeakPtrI16ObserverListBaseIN11MessageLoop12TaskObserverEEE9AsWeakPtrEv
   fun:_ZN16ObserverListBaseIN11MessageLoop12TaskObserverEE8IteratorC1ERS2_
}
{
   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_95902
   Memcheck:Leak
   ...
   fun:xdg_mime_init
   fun:xdg_mime_get_mime_type_from_file_name
   fun:*GetFileMimeTypeE*
   fun:_ZNK3net16PlatformMimeUtil32GetPlatformMimeTypeFromExtensionERKSsPSs
   fun:_ZNK3net8MimeUtil30GetMimeTypeFromExtensionHelperERKSsbPSs
   fun:_ZNK3net8MimeUtil24GetMimeTypeFromExtensionERKSsPSs
   fun:_ZNK3net8MimeUtil19GetMimeTypeFromFileE*
   fun:_ZN3net19GetMimeTypeFromFileE*
}
{
   bug_96069
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3net9HttpCache13CreateBackendEPPN10disk_cache7BackendEP14CallbackRunnerI6Tuple1IiEE
   fun:_ZN3net9HttpCache17CreateTransactionEP10scoped_ptrINS_15HttpTransactionEE
   ...
   fun:_ZN3net13CookieMonster17CookieMonsterTask14InvokeCallbackEN4base8CallbackIFvvEEE
}
{
   bug_96365
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN27PasswordManagerDelegateImpl33AddSavePasswordInfoBarIfPermittedEP19PasswordFormManager
   fun:_ZN15PasswordManager23OnPasswordFormsRenderedERKSt6vectorIN6webkit5forms12PasswordFormESaIS3_EE
}
{
   bug_96369
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_slice_alloc0
   fun:g_type_create_instance
   fun:g_object_constructor
   fun:g_object_newv
   fun:g_object_new
   fun:_gdk_window_impl_new
   fun:gdk_window_ensure_native
   fun:gdk_x11_drawable_get_xid
   fun:_ZN20GtkNativeViewManager14GetIdForWidgetEP10_GtkWidget
   fun:_ZNK7content23RenderWidgetHostViewGtk15GetNativeViewIdEv
}
{
   bug_96402
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_slice_alloc0
   fun:g_type_create_instance
   fun:g_object_constructor
   fun:g_object_newv
   fun:g_object_new
   fun:_gdk_window_impl_new
   fun:gdk_window_ensure_native
   fun:gdk_x11_drawable_get_xid
   ...
   fun:g_closure_invoke
   fun:signal_emit_unlocked_R
   fun:g_signal_emit_valist
   fun:g_signal_emit
   fun:gtk_widget_realize
   fun:gtk_widget_set_parent
}
{
   bug_96407
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_slice_alloc0
   fun:g_type_create_instance
   fun:g_object_constructor
   fun:g_object_newv
   fun:g_object_new
   fun:_gdk_window_impl_new
   fun:gdk_window_ensure_native
   fun:gdk_x11_drawable_get_xid
   fun:_ZN19TestWebViewDelegate20CreatePluginDelegateE*
}
{
   bug_96568a
   Memcheck:Leak
   fun:*alloc
   ...
   fun:HB_OpenType*
   ...
   fun:HB_ShapeItem
   fun:_ZN7WebCore21ComplexTextController11shapeGlyphsEv
   fun:_ZN7WebCore21ComplexTextController13nextScriptRunEv
}
{
   bug_96568b
   Memcheck:Leak
   ...
   fun:HB_NewFace
   fun:_ZN7WebCoreL21getCachedHarfbuzzFaceEPNS_16FontPlatformDataE
   fun:_ZN7WebCore12HarfbuzzFaceC1EPNS_16FontPlatformDataE
   fun:_ZN7WebCore12HarfbuzzFace6createEPNS_16FontPlatformDataE
   fun:_ZNK7WebCore16FontPlatformData12harfbuzzFaceEv
   fun:_ZN7WebCore21ComplexTextController21setupFontForScriptRunEv
}
{
   bug_98568
   Memcheck:Leak
   ...
   fun:_ZN44WebDragDestGtkTest_NoTabContentsWrapper_Test8TestBodyEv
}
{
   bug_98867
   Memcheck:Jump
   obj:*
   obj:*
   obj:*
}
{
   bug_99304
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN2v88internal10PagedSpace11AllocateRawEi
   fun:_ZN2v88internal12Deserializer8AllocateEiPNS0_5SpaceEi
   fun:_ZN2v88internal12Deserializer10ReadObjectEiPNS0_5SpaceEPPNS0_6ObjectE
   fun:_ZN2v88internal12Deserializer9ReadChunkEPPNS0_6ObjectES4_iPh
   fun:_ZN2v88internal12Deserializer10ReadObjectEiPNS0_5SpaceEPPNS0_6ObjectE
   fun:_ZN2v88internal12Deserializer9ReadChunkEPPNS0_6ObjectES4_iPh
   fun:_ZN2v88internal12Deserializer13VisitPointersEPPNS0_6ObjectES4_
}
{
   bug_99307
   Memcheck:Uninitialized
   fun:modp_b64_encode
   fun:_ZN4base12Base64Encode*
   fun:_ZN11web_ui_util15GetImageDataUrlERK8SkBitmap
   fun:_ZN12_GLOBAL__N_121NetworkInfoDictionary8set_iconERK8SkBitmap
}
{
   bug_99308
   Memcheck:Leak
   fun:malloc
   fun:_ZL9toCStringRK9_NPString
   fun:_ZL15testPostURLFileP12PluginObjectPK10_NPVariantjPS1_
   fun:_ZL12pluginInvokeP8NPObjectPvPK10_NPVariantjPS2_
   fun:_ZN7WebCoreL18npObjectInvokeImplERKN2v89ArgumentsENS_18InvokeFunctionTypeE
}
{
   bug_99321
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6WebKit12CCThreadImpl6createEPNS_9WebThreadE
   fun:_ZN6WebKit13WebCompositor9setThreadEPNS_9WebThreadE
   fun:_ZN11WebViewHostC1EP9TestShell
   fun:_ZN9TestShell15createNewWindowERKN6WebKit6WebURLEP16DRTDevToolsAgent
}
{
   bug_99435
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base19MessagePumpLibevent3RunEPNS_11MessagePump8DelegateE
   fun:_ZN4base11MessageLoop11RunInternalEv
   fun:_ZN4base11MessageLoop10RunHandlerEv
}
{
   bug_100043
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIN6webkit13WebPluginInfoEE8allocateEjPKv
   ...
   fun:_ZNSt6vectorIN6webkit13WebPluginInfoESaIS1*
}
{
   bug_101125a
   Memcheck:Uninitialized
   ...
   fun:_ZN6SkScan12AntiFillPathERK6SkPathRK8SkRegionP9SkBlitterb
   fun:_ZN6SkScan12AntiFillPathERK6SkPathRK12SkRasterClipP9SkBlitter
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixb
   fun:_ZN8SkDevice8drawPathERK6SkDrawRK6SkPathRK7SkPaintPK8SkMatrixb
   fun:_ZNK6SkDraw14drawTextOnPathEPKcmRK6SkPathPK8SkMatrixRK7SkPaint
   fun:_ZN8SkDevice14drawTextOnPathERK6SkDrawPKvmRK6SkPathPK8SkMatrixRK7SkPaint
   fun:_ZN8SkCanvas14drawTextOnPathEPKvmRK6SkPathPK8SkMatrixRK7SkPaint
   fun:_ZNK7WebCore4Font10drawGlyphsEPNS_15GraphicsContextEPKNS_14SimpleFontDataERKNS_11GlyphBufferEiiRKNS_10FloatPointE
   fun:_ZNK7WebCore4Font15drawGlyphBufferEPNS_15GraphicsContextERKNS_7TextRunERKNS_11GlyphBufferERKNS_10FloatPointE
}
{
   bug_101125b
   Memcheck:Uninitialized
   ...
   fun:_ZN6SkScan12AntiFillRectERK6SkRectPK8SkRegionP9SkBlitter
   fun:_ZN6SkScan12AntiFillRectERK6SkRectRK12SkRasterClipP9SkBlitter
   fun:_ZNK6SkDraw8drawRectERK6SkRectRK7SkPaint
   fun:_ZN8SkDevice8drawRectERK6SkDrawRK6SkRectRK7SkPaint
   fun:_ZN8SkCanvas8drawRectERK6SkRectRK7SkPaint
   fun:_ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectERKNS_5ColorENS_10ColorSpaceE
   fun:_ZN7WebCore15GraphicsContext20drawHighlightForTextERKNS_4FontERKNS_7TextRunERKNS_10FloatPointEiRKNS_5ColorENS_10ColorSpaceEii
}
{
   bug_101125c
   Memcheck:Uninitialized
   ...
   fun:_ZL11morphpointsP7SkPointPKS_iR13SkPathMeasureRK8SkMatrix
   fun:_ZL9morphpathP6SkPathRKS_R13SkPathMeasureRK8SkMatrix
   fun:_ZNK6SkDraw14drawTextOnPathEPKcmRK6SkPathPK8SkMatrixRK7SkPaint
   fun:_ZN8SkDevice14drawTextOnPathERK6SkDrawPKvmRK6SkPathPK8SkMatrixRK7SkPaint
   fun:_ZN8SkCanvas14drawTextOnPathEPKvmRK6SkPathPK8SkMatrixRK7SkPaint
   fun:_ZNK7WebCore4Font10drawGlyphsEPNS_15GraphicsContextEPKNS_14SimpleFontDataERKNS_11GlyphBufferEiiRKNS_10FloatPointE
   fun:_ZNK7WebCore4Font15drawGlyphBufferEPNS_15GraphicsContextERKNS_7TextRunERKNS_11GlyphBufferERKNS_10FloatPointE
   fun:_ZNK7WebCore4Font14drawSimpleTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZNK7WebCore4Font8drawTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZN7WebCore15GraphicsContext8drawTextERKNS_4FontERKNS_7TextRunERKNS_10FloatPointEii
}
{
   bug_100133
   Memcheck:Leak
   fun:_Znw*
   fun:_Z22RecoveryRegisterHelperP22ComponentUpdateServiceP11PrefService
}
{
   bug_100330
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN25TestingAutomationProvider42NavigateToURLBlockUntilNavigationsCompleteEiRK4GURLiPN3IPC7MessageE
}
{
   bug_100647
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN18WebResourceService19UpdateResourceCacheERKSs
   fun:_ZN18WebResourceService18WebResourceFetcher18OnURLFetchCompleteEPK10URLFetcherRK4GURLRKN3net16URLRequestStatusEiRKSt6vectorISsSaISsEERKSs
   fun:_ZN10URLFetcher8Delegate18OnURLFetchCompleteEPKS_
   fun:_ZN10URLFetcher4Core29InformDelegateFetchIsCompleteEv
   fun:_ZN10URLFetcher4Core21OnCompletedURLRequestEN4base9TimeDeltaE
}
{
   bug_100777
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12_GLOBAL__N_119MakeContextDelegateI16CrxUpdateServiceNS1_13UpdateContextEEEPN7content18URLFetcherDelegateEPT_PT0_
   fun:_ZN16CrxUpdateService19ProcessPendingItemsEv
}
{
   bug_100916
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6WebKit19WebWorkerClientImpl24createWorkerContextProxyEPN7WebCore6WorkerE
   ...
   fun:_ZN7WebCore6WorkerC1EPNS_22ScriptExecutionContextE
   fun:_ZN7WebCore6Worker6createEPNS_22ScriptExecutionContextERKN3WTF6StringERi
   fun:_ZN7WebCore8V8Worker19constructorCallbackERKN2v89ArgumentsE
   fun:_ZN2v88internalL19HandleApiCallHelperILb1EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
}
{
   bug_100982
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore12RenderRegion22setRenderBoxRegionInfoEPKNS_9RenderBoxEiib
   fun:_ZNK7WebCore9RenderBox19renderBoxRegionInfoEPNS_12RenderRegionEiNS0_24RenderBoxRegionInfoFlagsE
   ...
   fun:_ZN7WebCore11RenderBlock5paintERNS_9PaintInfoERKNS_8IntPointE
}
{
   bug_101145a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2v88internal2OS15CreateSemaphoreEi
   fun:_ZN2v88internal8ProfilerC1EPNS0_7IsolateE
   fun:_ZN2v88internal6Logger5SetUpEv
   fun:_ZN2v88internal7Isolate4InitEPNS0_12DeserializerE
   ...
   fun:_ZN7WebCore27WorkerContextExecutionProxy8evaluateERKN3WTF6StringES4_RKNS1_12TextPositionEPNS_27WorkerContextExecutionStateE
}
{
   bug_101145b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore23v8StringToWebCoreStringIN3WTF6StringEEET_N2v86HandleINS4_6StringEEENS_12ExternalModeE
   fun:_ZN7WebCore16V8StringResourceILNS_20V8StringResourceMode*
}
{
   bug_101145c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore*makeExternalString*
   ...
   fun:_ZN7WebCore11StringCache20v8ExternalStringSlow*
   fun:_ZN7WebCore11StringCache16v8ExternalStringEPN*
}
{
   bug_101146d
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11webkit_glue16WebURLLoaderImplC1EPNS_25WebKitPlatformSupportImplE
   fun:_ZN11webkit_glue25WebKitPlatformSupportImpl15createURLLoaderEv
}
{
   bug_101151
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore23v8StringToWebCoreStringIN3WTF*StringEEET_*
   fun:_ZN7WebCore15V8ParameterBase8toStringIN3WTF*StringEEET_*
   fun:_ZN7WebCore15V8ParameterBasecvN3WTF*StringEEv
   ...
   fun:_ZN2v88internalL*HandleApiCall*
   obj:*
}
{
   bug_101159
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore15NPObjectWrapper10NPAllocateEP4_NPPP7NPClass
   fun:_NPN_CreateObject
   fun:_ZN7WebCore15NPObjectWrapper6createEP8NPObject
   fun:_ZN7WebCore16ScriptController20windowScriptNPObjectEv
   fun:_ZNK6WebKit12WebFrameImpl12windowObjectEv
   fun:_ZN6webkit5npapi13WebPluginImpl23GetWindowScriptNPObjectEv
   fun:NPN_GetValue
}
{
   bug_101345
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN22WebPluginDelegateProxy20CreateResourceClientEmRK4GURLi
   fun:_ZN6webkit5npapi13WebPluginImpl24HandleURLRequestInternalEPKcS3_S3_S3_jibNS1_8ReferrerEbb
}
{
   bug_101347
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2pp25CompletionCallbackFactoryIN5ppapi5proxy20PPB_Graphics2D_ProxyENS2_26ProxyNonThreadSafeRefCountEE17NewCallbackHelperINS5_11Dispatcher1IMS3_FviRKNS1_12HostResourceEES8_EEEENS_18CompletionCallbackERKT_
   fun:_ZN2pp25CompletionCallbackFactoryIN5ppapi5proxy20PPB_Graphics2D_ProxyENS2_26ProxyNonThreadSafeRefCountEE11NewCallbackIMS3_FviRKNS1_12HostResourceEES7_EENS_18CompletionCallbackET_RKT0_
   fun:_ZN2pp25CompletionCallbackFactoryIN5ppapi5proxy20PPB_Graphics2D_ProxyENS2_26ProxyNonThreadSafeRefCountEE19NewOptionalCallbackIMS3_FviRKNS1_12HostResourceEES7_EENS_18CompletionCallbackET_RKT0_
   fun:_ZN5ppapi5proxy38EnterHostFromHostResourceForceCallbackINS_5thunk18PPB_Graphics2D_APIEEC1IN2pp25CompletionCallbackFactoryINS0_20PPB_Graphics2D_ProxyENS0_26ProxyNonThreadSafeRefCountEEEMS8_FviRKNS_12HostResourceEESB_EESD_RT_T0_RKT1_
   fun:_ZN5ppapi5proxy20PPB_Graphics2D_Proxy10OnMsgFlushERKNS_12HostResourceE
}
{
   bug_101470
   Memcheck:Param
   write(buf)
   obj:/lib/x86_64-linux-gnu/libc-2.15.so
   ...
   fun:new_do_write
   ...
   fun:_ZNK13safe_browsing9PrefixSet9WriteFileE*
}
{
   bug_101750
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEj
   fun:_ZN3WTF7HashSetIPN7WebCore16SVGStyledElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEEnwEj
   fun:_ZN7WebCore21SVGDocumentExtensions18addPendingResourceERKN3WTF12AtomicStringEPNS_16SVGStyledElementE
}
{
   bug_101751
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore14SVGFontElement6createERKNS_13QualifiedNameEPNS_8DocumentE
   fun:_ZN7WebCoreL15fontConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
   fun:_ZN7WebCore17SVGElementFactory16createSVGElementERKNS_13QualifiedNameEPNS_8DocumentEb
   fun:_ZN7WebCore8Document13createElementERKNS_13QualifiedNameEb
}
{
   bug_101781
   Memcheck:Uninitialized
   fun:encode_one_block
   fun:encode_mcu_huff
   fun:compress_data
   fun:process_data_simple_main
   fun:chromium_jpeg_write_scanlines
   fun:_ZN3gfx9JPEGCodec6EncodeEPKhNS0_11ColorFormatEiiiiPSt6vectorIhSaIhEE
   fun:_ZN3gfx24JPEGEncodedDataFromImageERKNS_5ImageE?PSt6vectorIhSaIhEE
   fun:_ZN7history8TopSites12EncodeBitmapE*N3gfx5ImageEP13scoped_refptrIN4base15RefCountedBytesEE
   fun:_ZN7history8TopSites16SetPageThumbnailERK4GURL*N3gfx5ImageERK14ThumbnailScore
   fun:_ZN7history17ExpireHistoryTest14AddExampleDataEP?PN4base4TimeE
   fun:_ZN7history*ExpireHistoryTest_*
}
{
   bug_101781_d
   Memcheck:Uninitialized
   fun:_ZN7testing8internal11CmpHelperGEIddEENS_15AssertionResultEPKcS4_RKT_RKT0_
   fun:_ZN3gfx31JPEGCodec_EncodeDecodeRGBA_Test8TestBodyEv
}
{
   bug_102257
   Memcheck:Uninitialized
   ...
   fun:_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_Pb
   fun:_ZN2v88internal9Execution4CallENS0_6HandleINS0_6ObjectEEES4_iPS4_Pbb
}
{
   bug_102327a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN15tracked_objects10ThreadData10InitializeEv
   fun:_ZN15tracked_objects10ThreadData30InitializeAndSetTrackingStatusEb
   fun:_ZN15tracked_objects10ThreadData29ShutdownSingleThreadedCleanupEb
}
{
   bug_102327b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKPKN15tracked_objects6BirthsENS3_9DeathDataEEEE8allocateE*
   ...
   fun:_ZNSt3mapIPKN15tracked_objects6BirthsENS0_9DeathDataESt4lessIS3_ESaISt4pairIKS3_S4_EEE6insertESt17_Rb_tree_iteratorIS9_ERKS9_
   fun:_ZNSt3mapIPKN15tracked_objects6BirthsENS0_9DeathDataESt4lessIS3_ESaISt4pairIKS3_S4_EEEixERS8_
   fun:_ZN15tracked_objects10ThreadData11TallyADeathERKNS_6Births*
   fun:_ZN15tracked_objects10ThreadData3?TallyRun*IfTrackingE*
}
{
   bug_102327c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN15tracked_objects10ThreadData11TallyABirthERKNS_8LocationE
   fun:_ZN15tracked_objects10ThreadData19TallyABirthIfActiveERKNS_8LocationE
}
{
   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_102614
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12*FinishPepperFlashUpdateRegistrationEP22ComponentUpdateServiceRK7Version
}
{
   bug_102831_a
   Memcheck:Leak
   ...
   fun:_ZN17PluginLoaderPosix19LoadPluginsInternalEv
}
{
   bug_104447
   Memcheck:Leak
   ...
   fun:HB_OpenTypeShape
   fun:arabicSyriacOpenTypeShape
   fun:HB_ArabicShape
   fun:HB_ShapeItem
   fun:_ZN7WebCore21ComplexTextController11shapeGlyphsEv
   fun:_ZN7WebCore21ComplexTextController13nextScriptRunEv
   fun:_ZN7WebCore21ComplexTextController14widthOfFullRunEv
   fun:_ZNK7WebCore4Font24floatWidthForComplexTextERKNS_7TextRunEPN3WTF7HashSetIPKNS_14SimpleFontDataENS4_7PtrHashIS8_EENS4_10HashTraitsIS8_EEEEPNS_13GlyphOverflowE
   fun:_ZNK7WebCore4Font5widthERKNS_7TextRunERiRN3WTF6StringE
   fun:_ZN7WebCore14SVGTextMetricsC1EPNS_19RenderSVGInlineTextERKNS_7TextRunE
   fun:_ZN7WebCore14SVGTextMetrics21measureCharacterRangeEPNS_19RenderSVGInlineTextEjj
   fun:_ZNK7WebCore30SVGTextLayoutAttributesBuilder25propagateLayoutAttributesEPNS_12RenderObjectERN3WTF6VectorINS_23SVGTextLayoutAttributesELm0EEERjRt
}
{
   # ProcessSingleton::LinuxWatcher is marked DeleteOnIOThread.  Sometimes it
   # leaks on shutdown instead of getting deleted.  The destructor doesn't do
   # anything important, so this shouldn't be a big deal.
   bug_104578
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN16ProcessSingletonC1E*
   fun:_ZN22ChromeProcessSingletonC1E*
}
{
   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_105715
   Memcheck:Uninitialized
   ...
   fun:vfprintf
   fun:__vsnprintf_chk
   fun:_ZN4base9vsnprintfEPcjPKcS0_
   fun:_ZN4base12_GLOBAL__N_110vsnprintfTEPcjPKcS1_
   fun:_ZN4base12_GLOBAL__N_1L14StringAppendVTISsEEvPT_PKNS2_10value_typeEPc
   fun:_ZN4base13StringAppendVEPSsPKcPc
   fun:_ZN4base13StringAppendFEPSsPKcz
   fun:_ZN4base10JSONWriter15BuildJSONStringEPKNS_5ValueEibb
   fun:_ZN4base10JSONWriter15BuildJSONStringEPKNS_5ValueEibb
   fun:_ZN4base10JSONWriter15BuildJSONStringEPKNS_5ValueEibb
   fun:_ZN4base10JSONWriter15BuildJSONStringEPKNS_5ValueEibb
   fun:_ZN4base10JSONWriter16WriteWithOptionsEPKNS_5ValueEbiPSs
   fun:_ZN25JSONStringValueSerializer17SerializeInternalERKN4base5ValueEb
   fun:_ZN25JSONStringValueSerializer9SerializeERKN4base5ValueE
   fun:_ZN18jstemplate_builder12AppendJsonJSEPKN4base15DictionaryValueEPSs
   fun:_ZN19OptionsUIHTMLSource16StartDataRequestERKSsbi
   fun:_ZN4base8internal15RunnableAdapterIMN20ChromeURLDataManager10DataSourceEFvRKSsbiEE3RunEPS3_S5_RKbRKi
   fun:_ZN4base8internal12InvokeHelperILb0EvNS0_15RunnableAdapterIMN20ChromeURLDataManager10DataSourceEFvRKSsbiEEEFvRKPS4_S6_RKbRKiEE8MakeItSoES9_SC_S6_SE_SG_
   fun:_ZN4base8internal7InvokerILi4ENS0_9BindStateINS0_15RunnableAdapterIMN20ChromeURLDataManager10DataSourceEFvRKSsbiEEEFvPS5_S7_biEFvSB_SsbiEEESC_E3RunEPNS0_13BindStateBaseE
   fun:_ZNK4base8CallbackIFvvEE3RunEv
}
{
   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:_ZN24ChromeRenderViewObserver21CaptureFrameThumbnailEPN6WebKit7WebViewEiiP8SkBitmapP14ThumbnailScore
   fun:_ZN24ChromeRenderViewObserver16CaptureThumbnailEv
   fun:_ZN24ChromeRenderViewObserver15CapturePageInfoEib
}
{
   bug_105907
   Memcheck:Uninitialized
   ...
   fun:_ZN4skia14BGRAConvolve2DEPKhibRKNS_19ConvolutionFilter1DES4_iPhb
   fun:_ZN4skia15ImageOperations11ResizeBasicE*
   fun:_ZN4skia15ImageOperations6ResizeE*
}
{
   bug_106183a
   Memcheck:Uninitialized
   fun:_ZN7WebCore13RenderMarquee18updateMarqueeStyleEv
   fun:_ZN7WebCore11RenderLayer12styleChangedENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore20RenderBoxModelObject14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore9RenderBox14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore11RenderBlock14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore12RenderObject8setStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
}
{
   bug_106183b
   Memcheck:Uninitialized
   fun:_ZN7WebCore21ComplexTextController*
   ...
   fun:_ZNK7WebCore4Font27selectionRectForComplexTextERKNS_7TextRunERKNS_10FloatPointEiii
   fun:_ZNK7WebCore4Font20selectionRectForTextERKNS_7TextRunERKNS_10FloatPointEiii
   fun:_ZNK7WebCore13InlineTextBox17positionForOffsetEi
   fun:_ZN7WebCore10RenderText14localCaretRectEPNS_9InlineBoxEiPi
   fun:_ZNK7WebCore15VisiblePosition14localCaretRectERPNS_12RenderObjectE
   fun:_ZN7WebCore9CaretBase15updateCaretRectEPNS_8DocumentERKNS_15VisiblePositionE
   fun:_ZN7WebCore14FrameSelection14localCaretRectEv
   fun:_ZN7WebCore14FrameSelection18recomputeCaretRectEv
   fun:_ZN7WebCore14FrameSelection16updateAppearanceEv
}
{
   bug_106183c
   Memcheck:Uninitialized
   fun:_ZN7WebCore21ComplexTextController*
   ...
   fun:_ZNK7WebCore4Font15drawComplexTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZNK7WebCore4Font8drawTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZN7WebCore15GraphicsContext8drawTextERKNS_4FontERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZN7WebCoreL20paintTextWithShadowsEPNS_15GraphicsContextERKNS_4FontERKNS_7TextRunERKN3WTF12AtomicStringEiiiiRKNS_10FloatPointERKNS_9FloatRectEPKNS_10ShadowDataEbb
   ...
   fun:_ZNK7WebCore17RenderLineBoxList5paintEPNS_20RenderBoxModelObjectERNS_9PaintInfoERKNS_8IntPointE
   fun:_ZN7WebCore11RenderBlock13paintContentsERNS_9PaintInfoERKNS_8IntPointE
   fun:_ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoERKNS_8IntPointE
   fun:_ZN7WebCore11RenderBlock5paintERNS_9PaintInfoERKNS_8IntPointE
}
{
   bug_106402
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2pp25CompletionCallbackFactoryIN5ppapi5proxy20PPB_Graphics2D_ProxyENS2_26ProxyNonThreadSafeRefCountEE17NewCallbackHelperINS5_11Dispatcher1IMS3_FviRKNS1_12HostResourceEES8_EEEENS_18CompletionCallbackERKT_
   fun:_ZN2pp25CompletionCallbackFactoryIN5ppapi5proxy20PPB_Graphics2D_ProxyENS2_26ProxyNonThreadSafeRefCountEE11NewCallbackIMS3_FviRKNS1_12HostResourceEES7_EENS_18CompletionCallbackET_RKT0_
   fun:_ZN2pp25CompletionCallbackFactoryIN5ppapi5proxy20PPB_Graphics2D_ProxyENS2_26ProxyNonThreadSafeRefCountEE19NewOptionalCallbackIMS3_FviRKNS1_12HostResourceEES7_EENS_18CompletionCallbackET_RKT0_
   fun:_ZN5ppapi5proxy38EnterHostFromHostResourceForceCallbackINS_5thunk18PPB_Graphics2D_APIEEC1IN2pp25CompletionCallbackFactoryINS0_20PPB_Graphics2D_ProxyENS0_26ProxyNonThreadSafeRefCountEEEMS8_FviRKNS_12HostResourceEESB_EESD_RT_T0_RKT1_
   fun:_ZN5ppapi5proxy20PPB_Graphics2D_Proxy14OnHostMsgFlushERKNS_12HostResourceE
}
{
   bug_106552
   Memcheck:Uninitialized
   ...
   fun:_ZN25JSONStringValueSerializer17SerializeInternalERKN4base5ValueEb
   fun:_ZN25JSONStringValueSerializer9SerializeERKN4base5ValueE
   fun:_ZN13JsonPrefStore13SerializeDataEPSs
   fun:_ZN19ImportantFileWriter16DoScheduledWriteEv
   fun:_ZN13JsonPrefStore18CommitPendingWriteEv
   fun:_ZN13JsonPrefStoreD0Ev
   fun:_ZNK4base10RefCountedI9PrefStoreE7ReleaseEv
   fun:_ZN13scoped_refptrI19PersistentPrefStoreEaSEPS0_
   fun:_ZN11PrefServiceD0Ev
   fun:_ZN10scoped_ptrI11PrefServiceED1Ev
   fun:_ZN14TestingProfileD2Ev
   fun:_ZN23ExtensionTestingProfileD0Ev
}
{
   bug_106912
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN15tracked_objects10ThreadData23InitializeThreadContextERKSs
   fun:_ZN4base14PlatformThread7SetNameEPKc
}
{
   bug_107696
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore11iBeamCursorEv
   fun:_ZN7WebCore12EventHandler12selectCursorERKNS_28MouseEventWithHitTestResultsEPNS_9ScrollbarE
   fun:_ZN7WebCore12EventHandler20handleMouseMoveEventERKNS_18PlatformMouseEventEPNS_13HitTestResultEb
   fun:_ZN7WebCore12EventHandler10mouseMovedERKNS_18PlatformMouseEventEb
   fun:_ZN6WebKit11WebViewImpl9mouseMoveERKNS_13WebMouseEventE
   fun:_ZN6WebKit11WebViewImpl16handleInputEventERKNS_13WebInputEventE
   fun:_ZN12RenderWidget18OnHandleInputEventERKN3IPC7MessageE
}
{
   bug_107699
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   ...
   fun:_ZN7WebCore13AnimationBase17ensurePropertyMapEv
   fun:_ZN7WebCore13AnimationBase16getNumPropertiesEv
   fun:_ZN7WebCore18CompositeAnimation17updateTransitionsEPNS_12RenderObjectEPNS_11RenderStyleES4_
   fun:_ZN7WebCore18CompositeAnimation7animateEPNS_12RenderObjectEPNS_11RenderStyleES4_
   fun:_ZN7WebCore19AnimationController16updateAnimationsEPNS_12RenderObjectEPNS_11RenderStyleE
   fun:_ZN7WebCore12RenderObject18setAnimatableStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
   fun:_ZN7WebCore4Node14setRenderStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
   ...
   fun:_ZN7WebCore7Element11recalcStyleENS_4Node11StyleChangeE
   fun:_ZN7WebCore8Document11recalcStyleENS_4Node11StyleChangeE
   fun:_ZN7WebCore8Document19updateStyleIfNeededEv
   fun:_ZN7WebCore8Document12updateLayoutEv
   fun:_ZN7WebCore8Document36updateLayoutIgnorePendingStylesheetsEv
}
{
   bug_108146a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN5ppapi5proxy26PPP_Instance_Private_Proxy22OnMsgGetInstanceObjectEiNS0_24SerializedVarReturnValueE
}
{
   bug_108146b
   Memcheck:Param
   write(buf)
   obj:/lib/tls/i686/cmov/libpthread-2.11.1.so
   fun:_ZN3IPC7Channel11ChannelImpl4SendEPNS_7MessageE
   fun:_ZN3IPC7Channel4SendEPNS_7MessageE
   fun:_ZN3IPC12ChannelProxy7Context13OnSendMessageEPNS_7MessageE
   fun:_ZN3IPC18SendCallbackHelper4SendEv
}
{
   bug_108147
   Memcheck:Uninitialized
   ...
   fun:_ZNK6SkDraw11drawPosTextEPKcmPKffiRK7SkPaint
   fun:_ZN8SkDevice11drawPosTextERK6SkDrawPKvmPKffiRK7SkPaint
   fun:_ZN8SkCanvas11drawPosTextEPKvmPK7SkPointRK7SkPaint
   fun:_ZNK7WebCore4Font10drawGlyphsEPNS_15GraphicsContextEPKNS_14SimpleFontDataERKNS_11GlyphBufferEiiRKNS_10FloatPointE
   fun:_ZNK7WebCore4Font15drawGlyphBufferEPNS_15GraphicsContextERKNS_7TextRunERKNS_11GlyphBufferERKNS_10FloatPointE
   fun:_ZNK7WebCore4Font14drawSimpleTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZNK7WebCore4Font8drawTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
}
{
   bug_108620
   Memcheck:Uninitialized
   fun:_ZN7WebCore13PlatformEventC2ENS0_4TypeEbbbbd
   fun:_ZN7WebCore18PlatformMouseEventC1ERKNS_8IntPointES3_NS_11MouseButtonENS_13PlatformEvent4TypeEibbbbd
   fun:_ZN7WebCore12EventHandler28fakeMouseMoveEventTimerFiredEPNS_5TimerIS0_EE
   fun:_ZN7WebCore5TimerINS_12EventHandlerEE5firedEv
   fun:_ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv
   fun:_ZN7WebCore12ThreadTimers16sharedTimerFiredEv
   fun:_ZN11webkit_glue25WebKitPlatformSupportImpl9DoTimeoutEv
   fun:_ZN4base9BaseTimerIN11webkit_glue25WebKitPlatformSupportImplELb0EE9TimerTask3RunEv
}
{
   bug_108621
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN7WebCore5EventEEnwEm
   fun:_ZN7WebCore12MessageEvent6createEN3WTF10PassOwnPtrINS1_6VectorINS1_6RefPtrINS_11MessagePortEEELm1EEEEENS1_10PassRefPtrINS_21SerializedScriptValueEEERKNS1_6StringESE_NS9_INS_9DOMWindowEEE
   fun:_ZN7WebCore16PostMessageTimer5eventEPNS_22ScriptExecutionContextE
   fun:_ZN7WebCore9DOMWindow21postMessageTimerFiredEN3WTF10PassOwnPtrINS_16PostMessageTimerEEE
   fun:_ZN7WebCore16PostMessageTimer5firedEv
   fun:_ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv
   fun:_ZN7WebCore12ThreadTimers16sharedTimerFiredEv
   fun:_ZN11webkit_glue25WebKitPlatformSupportImpl9DoTimeoutEv
   fun:_ZN4base9BaseTimerIN11webkit_glue25WebKitPlatformSupportImplELb0EE9TimerTask3RunEv
}
{
   bug_108622
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN2v88internal8NewArrayIhEEPT*
   fun:_ZN2v88internal11RegExpStack14EnsureCapacityEm
   fun:_ZN2v88internal16RegExpStackScopeC1EPNS0_7IsolateE
   fun:_ZN2v88internal26NativeRegExpMacroAssembler7ExecuteEPNS0_4CodeEPNS0_6String*
   fun:_ZN2v88internal26NativeRegExpMacroAssembler5MatchENS0_6HandleINS0_4CodeEEENS2_INS0_6StringEEEPiiiPNS0_7IsolateE
   fun:_ZN2v88internal10RegExpImpl*IrregexpExec*ENS0_6HandleINS0_8JSRegExpEEENS2_INS0_6StringEEEiPii
}
{
   bug_108624
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore23v8StringToWebCoreStringIN3WTF6StringEEET_N2v86HandleINS4_6StringEEENS_12ExternalModeE
   fun:_ZN7WebCore15V8ParameterBase8toStringIN3WTF6StringEEET_v
   fun:_ZN7WebCore15V8ParameterBasecvN3WTF6StringEEv
   ...
   fun:_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_Pb
   fun:_ZN2v88internal9Execution4CallENS0_6HandleINS0_6ObjectEEES4_iPS4_Pbb
   fun:_ZN2v88Function4CallENS_6HandleINS_6ObjectEEEiPNS1_INS_5ValueEEE
   fun:_ZN7WebCore28V8WorkerContextEventListener20callListenerFunctionEPNS_22ScriptExecutionContextEN2v86HandleINS3_5ValueEEEPNS_5EventE
   fun:_ZN7WebCore23V8AbstractEventListener18invokeEventHandlerEPNS_22ScriptExecutionContextEPNS_5EventEN2v86HandleINS5_5ValueEEE
   fun:_ZN7WebCore28V8WorkerContextEventListener11handleEventEPNS_22ScriptExecutionContextEPNS_5EventE
   fun:_ZN7WebCore11EventTarget18fireEventListenersEPNS_5EventEPNS_15EventTargetDataERN3WTF6VectorINS_23RegisteredEventListenerELm1EEE
}
{
   bug_108624a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore23v8StringToWebCoreStringIN3WTF6StringEEET_N2v86HandleINS4_6StringEEENS_12ExternalModeE
   fun:_ZN7WebCore15V8ParameterBase8toStringIN3WTF6StringEEET_v
   fun:_ZN7WebCore15V8ParameterBasecvN3WTF6StringEEv
   fun:_ZN7WebCore25WebKitBlobBuilderInternal*
}
{
   bug_108628
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore23v8StringToWebCoreStringIN3WTF12AtomicStringEEET_N2v86HandleINS4_6StringEEENS_12ExternalModeE
   fun:_ZN7WebCore16V8StringResourceILNS_20V8StringResourceModeE0EE8toStringIN3WTF12AtomicStringEEET_v
   fun:_ZN7WebCore16V8StringResourceILNS_20V8StringResourceModeE0EEcvN3WTF12AtomicStringEEv
   ...
   fun:_ZN7WebCore24XMLHttpRequestV8Internal*
   fun:_ZN2v88internalL19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
}
{
   bug_109495e
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPN3gpu5gles219VertexAttribManager16VertexAttribInfoEEE8allocateEmPKv
   fun:_ZNSt10_List_baseIPN3gpu5gles219VertexAttribManager16VertexAttribInfoESaIS4_EE11_M_get_nodeEv
   fun:_ZNSt4listIPN3gpu5gles219VertexAttribManager16VertexAttribInfoESaIS4_EE14_M_create_nodeERKS4_
   fun:_ZNSt4listIPN3gpu5gles219VertexAttribManager16VertexAttribInfoESaIS4_EE6insertESt14_List_iteratorIS4_ERKS4_
   fun:_ZN3gpu5gles219VertexAttribManager16VertexAttribInfo7SetListEPSt4listIPS2_SaIS4_EE
   fun:_ZN3gpu5gles219VertexAttribManager10InitializeEj
   fun:_ZN3gpu5gles216GLES2DecoderImpl10Initialize*
   fun:_ZN6webkit3gpu18GLInProcessContext10InitializeERKN3gfx4SizeEPS1_PKcPKiNS2_13GpuPreferenceE
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
}
{
   bug_109495f
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
   fun:_ZN25TestWebKitPlatformSupport32createOffscreenGraphicsContext3DERKN6WebKit20WebGraphicsContext3D10AttributesE
   fun:_ZN7WebCore17GraphicsContext3D6createENS0_10AttributesEPNS_10HostWindowENS0_11RenderStyleE
   fun:_ZN7WebCore21WebGLRenderingContext6createEPNS_17HTMLCanvasElementEPNS_22WebGLContextAttributesE
   fun:_ZN7WebCore17HTMLCanvasElement10getContextERKN3WTF6StringEPNS_23CanvasContextAttributesE
   fun:_ZN7WebCore19V8HTMLCanvasElement18getContextCallbackERKN2v89ArgumentsE
}
{
   bug_109495g
   Memcheck:Leak
   ...
   fun:_ZN9TCompiler22InitBuiltInSymbolTableERK18ShBuiltInResources
   fun:_ZN9TCompiler4InitERK18ShBuiltInResources
   fun:ShConstructCompiler
}
{
   bug_109496
   Memcheck:Uninitialized
   ...
   fun:_ZN7WebCore11ImageBuffer27platformTransformColorSpaceERKN3WTF6VectorIiLm0EEE
   fun:_ZN7WebCore11ImageBuffer19transformColorSpaceENS_10ColorSpaceES1_
   fun:_ZN7WebCore23RenderSVGResourceFilter17postApplyResourceEPNS_12RenderObjectERPNS_15GraphicsContextEtPKNS_4PathEPKNS_14RenderSVGShapeE
   ...
   fun:_ZN7WebCore14RenderSVGShape5paintERNS_9PaintInfoERKNS_*
   ...
   fun:_ZN7WebCore13RenderSVGRoot*paint*PaintInfoERKNS_*
}
{
   bug_109872
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN18BrowserProcessImpl29ResourceDispatcherHostCreatedEv
   fun:_ZN6chrome26ChromeContentBrowserClient29ResourceDispatcherHostCreatedEv
   fun:_ZN22ResourceDispatcherHost*
   ...
   fun:_ZN7content15BrowserMainLoop21BrowserThreadsStartedEv
   fun:_ZN7content15BrowserMainLoop*
   ...
   fun:_Z11BrowserMainRKN7content18MainFunctionParamsE
}
{
   bug_110734
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN15StartupTimeBomb3ArmERKN4base9TimeDeltaE
   fun:_ZN22ChromeBrowserMainParts25PreMainMessageLoopRunImplEv
}
{
   bug_111186
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11leveldb_*ChromiumEnv11StartThread*
   fun:_ZN11leveldb_*ChromiumEnv8Schedule*
   fun:_ZN7leveldb6DBImpl23MaybeScheduleCompactionEv
   fun:_ZN7leveldb6DBImpl16MakeRoomForWriteEb
   fun:_ZN7leveldb6DBImpl5WriteERKNS_12WriteOptionsEPNS_10WriteBatchE
   fun:_ZN17LeveldbValueStore9WriteToDbEPN7leveldb10WriteBatchE
   fun:_ZN17LeveldbValueStore3SetEiRKSsRKN4base5ValueE
   fun:_ZN10extensions28SettingsStorageQuotaEnforcer3SetEiRKSsRKN4base5ValueE
   fun:_ZN10extensions23SyncableSettingsStorage3SetEiRKSsRKN4base5ValueE
}
{
   bug_111341
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN7WebCore17ClipboardChromiumnwEm
   fun:_ZN7WebCore17ClipboardChromium6createENS_9Clipboard13ClipboardTypeEN3WTF10PassRefPtrINS_18ChromiumDataObjectEEENS_21ClipboardAccessPolicyEPNS_5FrameE
}
{
   bug_111669
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8appcache17AppCacheDiskCache10ActiveCall17OnAsyncCompletionEi
}
{
   bug_112278
   Memcheck:Uninitialized
   fun:fetch_texel_2d_f_rgba8888
   fun:sample_2d_linear
   fun:sample_linear_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_validate_triangle
   fun:_swrast_Triangle
   fun:triangle_rgba
   fun:_tnl_render_triangles_elts
   fun:run_render
   fun:_tnl_run_pipeline
   fun:_tnl_draw_prims
   fun:_tnl_vbo_draw_prims
   fun:vbo_validated_drawrangeelements
   fun:vbo_exec_DrawElements
   fun:neutral_DrawElements
}
{
   bug_112278b
   Memcheck:Uninitialized
   fun:fetch_texel_2d_f_rgba8888
   fun:sample_2d_nearest
   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_112315
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2v88internal21NativeObjectsExplorer18FindOrAddGroupInfoEPKc
   ...
   fun:_ZN2v88internal21NativeObjectsExplorer27IterateAndExtractReferencesEPNS0_23SnapshotFillerInterfaceE
   fun:_ZN2v88internal21HeapSnapshotGenerator25CountEntriesAndReferencesEv
   fun:_ZN2v88internal21HeapSnapshotGenerator16GenerateSnapshotEv
   fun:_ZN2v88internal12HeapProfiler16TakeSnapshotImplEPKciPNS_15ActivityControlE
   ...
   fun:_ZN2v88internal12HeapProfiler12TakeSnapshotEPNS0_6StringEiPNS_15ActivityControlE
   fun:_ZN2v812HeapProfiler12TakeSnapshotENS_6HandleINS_6StringEEENS_12HeapSnapshot4TypeEPNS_15ActivityControlE
   fun:_ZL13GetNumObjectsPKc
}
{
   bug_112450_b
   Memcheck:Unaddressable
   fun:_ZN7WebCore15PlatformSupport25loadPlatformAudioResourceEPKcd
   fun:_ZN7WebCore8AudioBus20loadPlatformResourceEPKcf
   fun:_ZN7WebCore13HRTFElevation35calculateKernelsForAzimuthElevationEiifRKN3WTF6StringERNS1_6RefPtrINS_10HRTFKernelEEES8_
   fun:_ZN7WebCore13HRTFElevation16createForSubjectERKN3WTF6StringEif
   fun:_ZN7WebCore12HRTFDatabaseC1Ef
   fun:_ZN7WebCore12HRTFDatabase6createEf
   fun:_ZN7WebCore18HRTFDatabaseLoader4loadEv
   fun:_ZN7WebCoreL19databaseLoaderEntryEPv
   fun:_ZN3WTFL16threadEntryPointEPv
}
{
   bug_112594_a
   Memcheck:Leak
   ...
   fun:NPP_New
   fun:_ZN6webkit5npapi14PluginInstance7NPP_NewEtsPPcS3_
   fun:_ZN6webkit5npapi14PluginInstance5StartERK4GURLPPcS6_ib
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl10InitializeERK4GURLRKSt6vectorISsSaISsEES9_PNS0_9WebPluginEb
   fun:_ZN6webkit5npapi13WebPluginImpl10initializeEPN6WebKit18WebPluginContainerE
   fun:_ZN6WebKit21FrameLoaderClientImpl12createPluginERKN7WebCore7IntSizeEPNS1_17HTMLPlugInElementERKNS1_4KURLERKN3WTF6VectorINSA_6StringELm0EEESF_RKSC_b
   fun:_ZN7WebCore14SubframeLoader10loadPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7_Lm0EEESD_b
   fun:_ZN7WebCore14SubframeLoader13requestPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7_Lm0EEESD_b
   fun:_ZN7WebCore14SubframeLoader13requestObjectEPNS_22HTMLPlugInImageElementERKN3WTF6StringERKNS3_12AtomicStringES6_RKNS3_6VectorIS4_Lm0EEESD_
}
{
   bug_112594_b
   Memcheck:Unaddressable
   fun:_ZN6webkit5npapi13WebPluginImpl24HandleURLRequestInternalEPKcS3_S3_S3_jibNS1_8ReferrerEbb
   fun:_ZN6webkit5npapi13WebPluginImpl16HandleURLRequestEPKcS3_S3_S3_jibb
   fun:_ZN6webkit5npapi14PluginInstance10RequestURLEPKcS3_S3_S3_jbPv
   fun:GetURLNotify
   fun:NPN_GetURLNotify
   fun:_ZN10PluginTest16NPN_GetURLNotifyEPKcS1_Pv
   fun:_ZN34GetURLNotifyWithURLThatFailsToLoad7NPP_NewEPctsPS0_S1_P12_NPSavedData
   fun:NPP_New
   fun:_ZN6webkit5npapi14PluginInstance7NPP_NewEtsPPcS3_
   fun:_ZN6webkit5npapi14PluginInstance5StartERK4GURLPPcS6_ib
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl10InitializeERK4GURLRKSt6vectorISsSaISsEES9_PNS0_9WebPluginEb
   fun:_ZN6webkit5npapi13WebPluginImpl10initializeEPN6WebKit18WebPluginContainerE
   fun:_ZN6WebKit21FrameLoaderClientImpl12createPluginERKN7WebCore7IntSizeEPNS1_17HTMLPlugInElementERKNS1_4KURLERKN3WTF6VectorINSA_6StringELm0EEESF_RKSC_b
   fun:_ZN7WebCore14SubframeLoader10loadPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7_Lm0EEESD_b
   fun:_ZN7WebCore14SubframeLoader13requestPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7_Lm0EEESD_b
   fun:_ZN7WebCore14SubframeLoader13requestObjectEPNS_22HTMLPlugInImageElementERKN3WTF6StringERKNS3_12AtomicStringES6_RKNS3_6VectorIS4_Lm0EEESD_
}
{
   bug_112594_c
   Memcheck:Unaddressable
   fun:_ZN27DocumentOpenInDestroyStream17NPP_DestroyStreamEP9_NPStreams
   fun:NPP_DestroyStream
   fun:_ZN6webkit5npapi14PluginInstance17NPP_DestroyStreamEP9_NPStreams
   fun:_ZN6webkit5npapi12PluginStream5CloseEs
   fun:_ZN6webkit5npapi15PluginStreamUrl5CloseEs
   fun:_ZN6webkit5npapi15PluginStreamUrl16DidFinishLoadingEv
   fun:_ZN6webkit5npapi13WebPluginImpl16didFinishLoadingEPN6WebKit12WebURLLoaderEd
}
{
   bug_112594_d
   Memcheck:Leak
   fun:malloc
   fun:NPN_MemAlloc
   fun:*Enumerate*ObjectPPPvPj
   fun:_ZN7WebCore26npObjectPropertyEnumerator*Info*
   ...
   fun:_ZN2v88internal28Runtime_GetPropertyNamesFast*IsolateE
}
{
   bug_112573
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2v88internal2OS15CreateSemaphoreEi
   fun:_ZN2v88internal8ProfilerC1EPNS0_7IsolateE
   fun:_ZN2v88internal6Logger5SetUpEv
   fun:_ZN2v88internal7Isolate4InitEPNS0_12DeserializerE
   fun:_ZN2v88internal2V810InitializeEPNS0_12DeserializerE
   fun:_ZN2v88internal8Snapshot11DeserializeEPKhi
   fun:_ZN2v88internal8Snapshot10InitializeEPKc
   fun:_ZN2v8L16InitializeHelperEv
   fun:_ZN2v8L27EnsureInitializedForIsolateEPNS_8internal7IsolateEPKc
   fun:_ZN2v82V818AddMessageListenerEPFvNS_6HandleINS_7MessageEEENS1_INS_5ValueEEEES5_
   fun:_ZN7WebCore27WorkerContextExecutionProxy19initContextIfNeededEv
   fun:_ZN7WebCore27WorkerContextExecutionProxy8evaluateERKN3WTF6StringES4_RKNS1_12TextPositionEPNS_27WorkerContextExecutionStateE
   fun:_ZN7WebCore22WorkerScriptController8evaluateERKNS_16ScriptSourceCodeEPNS_11ScriptValueE
   fun:_ZN7WebCore22WorkerScriptController8evaluateERKNS_16ScriptSourceCodeE
   fun:_ZN7WebCore12WorkerThread12workerThreadEv
   fun:_ZN7WebCore12WorkerThread17workerThreadStartEPv
   fun:_ZN3WTFL16threadEntryPointEPv
}
{
   bug_112835
   Memcheck:Unaddressable
   ...
   fun:_ZN6WebKit31WorkerFileSystemCallbacksBridge4stopEv
   fun:_ZN6WebKit31WorkerFileSystemContextObserver10notifyStopEv
   fun:_ZN7WebCore13WorkerContext21notifyObserversOfStopEv
   fun:_ZN7WebCore29WorkerThreadShutdownStartTask11performTaskEPNS_22ScriptExecutionContextE
   fun:_ZN7WebCore13WorkerRunLoop4Task11performTaskERKS0_PNS_22ScriptExecutionContextE
   fun:_ZN7WebCore13WorkerRunLoop15runCleanupTasksEPNS_13WorkerContextE
}
{
   bug_113076
   Memcheck:Uninitialized
   fun:_ZN5mediaL19ConvertYUVToRGB32_CEhhhPh
   fun:_ZN5media35LinearScaleYUVToRGB32RowWithRange_CEPKhS1_S1_Phiii
   fun:_ZN5media23ScaleYUVToRGB32WithRectEPKhS1_S1_Phiiiiiiiiiii
   fun:_ZN8remoting29ConvertAndScaleYUVToRGB32RectEPKhS1_S1_iiRK7SkTSizeIiERK7SkIRectPhiS5_S8_S8_
}
{
   bug_115294
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN17AudioRendererHost14OnCreateStreamEiRK15AudioParameters
}
{
   bug_115419_1
   Memcheck:Uninitialized
   fun:fetch_texel_2d_f_rgba8888
   fun:texture_get_row
   fun:fast_read_rgba_pixels
   fun:read_rgba_pixels
   fun:_swrast_ReadPixels
   fun:_mesa_ReadPixels
   fun:glReadPixels
   fun:_ZN3gpu5gles216GLES2DecoderImpl16HandleReadPixelsEjRKNS0_10ReadPixelsE
   fun:_ZN3gpu5gles216GLES2DecoderImpl9DoCommandEjjPKv
   fun:_ZN3gpu13CommandParser14ProcessCommandEv
   fun:_ZN3gpu12GpuScheduler10PutChangedEv
   fun:_ZN6webkit3gpu18GLInProcessContext12PumpCommandsEv
}
{
   bug_115419_2
   Memcheck:Uninitialized
   fun:get_src_arg_mask
   fun:_mesa_remove_extra_move_use
   fun:_mesa_optimize_program
   fun:_Z16get_mesa_programP14__GLcontextRecP17gl_shader_programP9gl_shader
   fun:_mesa_ir_link_shader
   fun:_mesa_glsl_link_shader
   fun:link_program
   fun:_mesa_LinkProgramARB
   fun:glLinkProgram
   ...
   fun:_ZN3gpu5gles216GLES2DecoderImpl13DoLinkProgram*
   fun:_ZN3gpu5gles216GLES2DecoderImpl17HandleLinkProgram*
   fun:_ZN3gpu5gles216GLES2DecoderImpl9DoCommandEjjPKv
   fun:_ZN3gpu13CommandParser14ProcessCommandEv
   fun:_ZN3gpu12GpuScheduler10PutChangedEv
   fun:_ZN6webkit3gpu18GLInProcessContext12PumpCommandsEv
}
{
   bug_116475
   Memcheck:Uninitialized
   ...
   fun:_ZNK4base9Histogram11BucketIndexEi
   fun:_ZN4base9Histogram3AddEi
   fun:_ZN11webkit_glue25WebKitPlatformSupportImpl21histogramCustomCountsEPKciiii
   fun:_ZN7WebCore15PlatformSupport21histogramCustomCountsEPKciiii
   fun:_ZN7WebCore19CCLayerTreeHostImpl20optimizeRenderPasses*
   fun:_ZN7WebCore19CCLayerTreeHostImpl10drawLayersEv
   fun:_ZN7WebCore19CCSingleThreadProxy11doCompositeEv
}
{
   bug_118890_a
   Memcheck:Leak
   ...
   fun:_ZN8notifier18SingleLoginAttemptC1EPNS_13LoginSettingsEPNS0_8DelegateE
   fun:_ZN8notifier5Login15StartConnectionEv
   fun:_ZN13sync_notifier20InvalidationNotifier17UpdateCredentialsERKSsS2_
}
{
   bug_118890_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN13sync_notifier12_GLOBAL__N_124InvalidationNotifierTest5SetUpEv
}
{
   bug_121729
   Memcheck:Leak
   ...
   fun:_ZN7WebCoreL12parseUASheetERKN3WTF6StringE
   fun:_ZN7WebCoreL12parseUASheetEPKcj
   ...
   fun:_ZN7WebCore7Element16styleForRendererE*
}
{
   bug_122177
   Memcheck:Leak
   ...
   fun:_ZN7history16InMemoryURLIndex23PostSaveToCacheFileTaskEv
   fun:_ZN7history16InMemoryURLIndex8ShutDownEv
   fun:_ZN14HistoryService13UnloadBackendEv
   fun:_ZN14HistoryService7CleanupEv
}
{
   bug_122189
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6WebKit16ChromeClientImpl18createColorChooserEPN7WebCore18ColorChooserClientERKNS1_5ColorE
   fun:_ZN7WebCore6Chrome18createColorChooserEPNS_18ColorChooserClientERKNS_5ColorE
   fun:_ZN7WebCore14ColorInputType22handleDOMActivateEventEPNS_5EventE
   fun:_ZN7WebCore16HTMLInputElement19defaultEventHandlerEPNS_5EventE
   fun:_ZN7WebCore15EventDispatcher13dispatchEventEN3WTF10PassRefPtrINS_5EventEEE
   fun:_ZNK7WebCore21EventDispatchMediator13dispatchEventEPNS_15EventDispatcherE
}
{
   bug_122192
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
   fun:_ZN14webkit_support23CreateGraphicsContext3DERKN6WebKit20WebGraphicsContext3D10AttributesEPNS0_7WebViewEb
   fun:_ZN11WebViewHost23createGraphicsContext3DERKN6WebKit20WebGraphicsContext3D10AttributesE
   fun:_ZN6WebKit11WebViewImpl33createCompositorGraphicsContext3DEv
   fun:_ZN6WebKit11WebViewImpl15createContext3DEv
}
{
   bug_122195
   Memcheck:Leak
   ...
   fun:_ZNSt3*insert*
   fun:_ZN3gpu5gles219GLES2Implementation15GetStringHelperEj
   fun:_ZN3gpu5gles219GLES2Implementation9GetStringEj
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl9getStringEj
   fun:_ZN7WebCore24GraphicsContext3DPrivate9getStringEj
   fun:_ZN7WebCore24GraphicsContext3DPrivate20initializeExtensionsEv
   fun:_ZN7WebCore24GraphicsContext3DPrivate17supportsExtensionERKN3WTF6StringE
   fun:_ZN7WebCore20Extensions3DChromium8supportsERKN3WTF6StringE
}
{
   bug_122201
   Memcheck:Unaddressable
   fun:_ZN3WTF17ChromiumThreading16callOnMainThreadEPFvPvES1_
   fun:_ZN3WTF16callOnMainThreadEPFvPvES0_
}
{
   bug_122245a
   Memcheck:Uninitialized
   ...
   fun:_ZN15SkScalerContext15internalGetPathERK7SkGlyphP6SkPathS4_P8SkMatrix
   fun:_ZN15SkScalerContext10getMetricsEP7SkGlyph
   fun:_ZN12SkGlyphCache13lookupMetricsEjNS_11MetricsTypeE
}
{
   bug_122245b
   Memcheck:Uninitialized
   ...
   fun:_ZNK6SkRect8roundOutEP7SkIRect
   fun:_ZN15SkScalerContext10getMetricsEP7SkGlyph
   fun:_ZN12SkGlyphCache13lookupMetricsEjNS_11MetricsTypeE
   fun:_ZN12SkGlyphCache17getGlyphIDMetricsEt
   fun:_ZL22sk_getMetrics_glyph_00P12SkGlyphCachePPKcii
   fun:_ZNK6SkDraw11drawPosTextEPKcmPKffiRK7SkPaint
   fun:_ZN8SkDevice11drawPosTextERK6SkDrawPKvmPKffiRK7SkPaint
   fun:_ZN11SkGpuDevice11drawPosTextERK6SkDrawPKvmPKffiRK7SkPaint
   fun:_ZN8SkCanvas11drawPosTextEPKvmPK7SkPointRK7SkPaint
   fun:_ZNK7WebCore4Font10drawGlyphsEPNS_15GraphicsContextEPKNS_14SimpleFontDataERKNS_11GlyphBufferEiiRKNS_10FloatPointE
   fun:_ZNK7WebCore4Font15drawGlyphBufferEPNS_15GraphicsContextERKNS_7TextRunERKNS_11GlyphBufferERKNS_10FloatPointE
   fun:_ZNK7WebCore4Font14drawSimpleTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZNK7WebCore4Font8drawTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
   fun:_ZN7WebCore15GraphicsContext12drawBidiTextERKNS_4FontERKNS_7TextRunERKNS_10FloatPointE
   fun:_ZN7WebCore24CanvasRenderingContext2D16drawTextInternalERKN3WTF6StringEffbfb
   fun:_ZN7WebCore24CanvasRenderingContext2D10strokeTextERKN3WTF6StringEfff
   fun:_ZN7WebCore32CanvasRenderingContext2DInternalL18strokeTextCallbackERKN2v89ArgumentsE
   fun:_ZN2v88internalL19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   fun:_ZN2v88internalL21Builtin_HandleApiCallENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
}
{
   bug_122429
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
   fun:_ZN25TestWebKitPlatformSupport32createOffscreenGraphicsContext3DERKN6WebKit20WebGraphicsContext3D10AttributesE
   fun:_ZN13TestWebPlugin10initializeEPN6WebKit18WebPluginContainerE
   fun:_ZN6WebKit21FrameLoaderClientImpl12createPluginERKN7WebCore7IntSizeEPNS1_17HTMLPlugInElementERKNS1_4KURLERKN3WTF6VectorINSA_6StringELm0EEESF_RKSC_b
}
{
   bug_122431
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11WebViewHost12createPluginEPN6WebKit8WebFrameERKNS0_15WebPluginParamsE
   fun:_ZN6WebKit21FrameLoaderClientImpl12createPluginERKN7WebCore7IntSizeEPNS1_17HTMLPlugInElementERKNS1_4KURLERKN3WTF6VectorINSA_6StringELm0EEESF_RKSC_b
   fun:_ZN7WebCore14SubframeLoader10loadPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7_Lm0EEESD_b
   fun:_ZN7WebCore14SubframeLoader13requestPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7_Lm0EEESD_b
   fun:_ZN7WebCore14SubframeLoader13requestObjectEPNS_22HTMLPlugInImageElementERKN3WTF6StringERKNS3_12AtomicStringES6_RKNS3_6VectorIS4_Lm0EEESD_
   fun:_ZN7WebCore16HTMLEmbedElement12updateWidgetENS_20PluginCreationOptionE
}
{
   bug_122435a
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN3gpu5gles219VertexAttribManager10InitializeEj
   fun:_ZN3gpu5gles216GLES2DecoderImpl10InitializeERK13scoped_refptrIN3gfx9GLSurfaceEERKS2_INS3_9GLContext*SizeERKNS0_18DisallowedFeaturesEPKcRKSt6vectorIiSaIiEE
   fun:_ZN6webkit3gpu18GLInProcessContext10InitializeERKN3gfx4SizeEPS1_PKcPKiNS2_13GpuPreferenceE
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
}
{
   bug_122435b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPN3gpu5gles219VertexAttribManager16VertexAttribInfoEEE8allocateEmPKv
   fun:_ZNSt10_List_baseIPN3gpu5gles219VertexAttribManager16VertexAttribInfoESaIS4_EE11_M_get_nodeEv
   fun:_ZNSt4listIPN3gpu5gles219VertexAttribManager16VertexAttribInfoESaIS4_EE14_M_create_nodeERKS4_
   fun:_ZNSt4listIPN3gpu5gles219VertexAttribManager16VertexAttribInfoESaIS4_EE6insertESt14_List_iteratorIS4_ERKS4_
   fun:_ZN3gpu5gles219VertexAttribManager16VertexAttribInfo7SetListEPSt4listIPS2_SaIS4_EE
   fun:_ZN3gpu5gles219VertexAttribManager6EnableEjb
}
{
   bug_122436
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKj10linked_ptrIN3gpu13CommonDecoder6BucketEEEEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeIjSt4pairIKj10linked_ptrIN3gpu13CommonDecoder6BucketEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeIjSt4pairIKj10linked_ptrIN3gpu13CommonDecoder6BucketEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE14_M_create_nodeERKS7_
   fun:_ZNSt8_Rb_treeIjSt4pairIKj10linked_ptrIN3gpu13CommonDecoder6BucketEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE10_M_insert_EPKSt18_Rb_tree_node_baseSG_RKS7_
   fun:_ZNSt8_Rb_treeIjSt4pairIKj10linked_ptrIN3gpu13CommonDecoder6BucketEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueERKS7_
   fun:_ZNSt8_Rb_treeIjSt4pairIKj10linked_ptrIN3gpu13CommonDecoder6BucketEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS7_ERKS7_
   fun:_ZNSt3mapIj10linked_ptrIN3gpu13CommonDecoder6BucketEESt4lessIjESaISt4pairIKjS4_EEE6insertESt17_Rb_tree_iteratorIS9_ERKS9_
   fun:_ZNSt3mapIj10linked_ptrIN3gpu13CommonDecoder6BucketEESt4lessIjESaISt4pairIKjS4_EEEixERS8_
   fun:_ZN3gpu13CommonDecoder12CreateBucketEj
}
{
   bug_122437
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3gpu19MappedMemoryManager5Alloc*
   fun:_ZN3gpu5gles219GLES2Implementation24MapTexSubImage2DCHROMIUM*
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl24mapTexSubImage2DCHROMIUM*
   fun:_ZN7WebCore24GraphicsContext3DPrivate24mapTexSubImage2DCHROMIUM*
   fun:_ZN7WebCore20Extensions3DChromium24mapTexSubImage2DCHROMIUM*
   fun:_ZN7WebCore20LayerTextureSubImage24uploadWithMapTexSubImageEPKhRKNS_7IntRectES5_S5_jPNS_17GraphicsContext3DE
   fun:_ZN7WebCore20LayerTextureSubImage6uploadEPKhRKNS_7IntRectES5_S5_jPNS_17GraphicsContext3DE
   fun:_ZN7WebCore31BitmapCanvasLayerTextureUpdater17updateTextureRectEPNS_17GraphicsContext3DEPNS_16TextureAllocatorEPNS_14ManagedTextureERKNS_7IntRectES9_
   fun:_ZN7WebCore31BitmapCanvasLayerTextureUpdater7Texture10updateRectEPNS_17GraphicsContext3DEPNS_16TextureAllocatorERKNS_7IntRectES8_
}
{
   bug_122454
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11GrGLTexture4initEP7GrGpuGLRKNS_4DescEPKN16GrGLRenderTarget4DescE
   fun:_ZN11GrGLTextureC1EP7GrGpuGLRKNS_4DescE
   fun:_ZN7GrGpuGL15onCreateTextureERK13GrTextureDescPKvm
   fun:_ZN5GrGpu13createTextureERK13GrTextureDescPKvm
   fun:_ZN9GrContext20createAndLockTextureEmPK14GrSamplerStateRK13GrTextureDescPvm
   fun:_Z27sk_gr_create_bitmap_textureP9GrContextmPK14GrSamplerStateRK8SkBitmap
   fun:_ZN11SkGpuDevice17lockCachedTextureERK8SkBitmapPK14GrSamplerState
}
{
   bug_122455
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISsEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE14_M_create_nodeERKSs
   fun:_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE10_M_insert_EPKSt18_Rb_tree_node_baseS8_RKSs
   fun:_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE16_M_insert_uniqueERKSs
   fun:_ZNSt3setISsSt4lessISsESaISsEE6insertERKSs
   fun:_ZN3gpu5gles219GLES2Implementation32GetRequestableExtensionsCHROMIUMEv
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl32getRequestableExtensionsCHROMIUMEv
   fun:_ZN7WebCore24GraphicsContext3DPrivate20initializeExtensionsEv
   fun:_ZN7WebCore24GraphicsContext3DPrivate17supportsExtensionERKN3WTF6StringE
}
{
   bug_122457
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN7WebCore7ArchiveEEnwEm
   fun:_ZN7WebCore12MHTMLArchive6createEv
   ...
   fun:_ZN7WebCore11MHTMLParser22parseArchiveWithHeaderEPNS_10MIMEHeaderE
   fun:_ZN7WebCore11MHTMLParser12parseArchiveEv
   fun:_ZN7WebCore12MHTMLArchive6createERKNS_4KURLEPNS_12SharedBufferE
   fun:_ZN7WebCoreL20archiveFactoryCreateINS_12MHTMLArchiveEEEN3WTF10PassRefPtrINS_7ArchiveEEERKNS_4KURLEPNS_12SharedBufferE
   fun:_ZN7WebCore14ArchiveFactory6createERKNS_4KURLEPNS_12SharedBufferERKN3WTF6StringE
   ...
   fun:_ZN7WebCore14DocumentLoader15finishedLoadingEv
   fun:_ZN7WebCore18MainResourceLoader16didFinishLoadingEd
}
{
   bug_122670
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3WTF11ListHashSetIPN7WebCore12RenderInlineELm256ENS_7PtrHashIS3_EEEC1Ev
   fun:_ZNK7WebCore17RenderLineBoxList5paintEPNS_20RenderBoxModelObjectERNS_9PaintInfoERKNS*
   fun:_ZN7WebCore11RenderBlock13paintContentsERNS_9PaintInfoERKNS*
   fun:_ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoERKNS*
   fun:_ZN7WebCore11RenderBlock5paintERNS_9PaintInfoERKNS*
}
{
   bug_122716
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISsE8allocate*
   fun:_ZNSt12_Vector_baseISsSaISsEE11_M_allocate*
   fun:_ZNSt6vectorISsSaISsEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSsS1_EERKSs
   fun:_ZNSt6vectorISsSaISsEE9push_backERKSs
   fun:_ZN4baseL12SplitStringTISsEEvRKT_NS1_10value_typeEbPSt6vectorIS1_SaIS1_EE
}
{
   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_
   fun:_ZN5gdata15GDataFileSystem37PostBlockingPoolSequencedTaskAndReplyERKSsRKN15tracked_objects8LocationERKN4base8CallbackIFvvEEESC_
   fun:_ZN5gdata15GDataFileSystem29PostBlockingPoolSequencedTaskERKSsRKN15tracked_objects8LocationERKN4base8CallbackIFvvEEE
   fun:_ZN5gdata15GDataFileSystem8SaveFeedE10scoped_ptrIN4base5ValueEE*
   fun:_ZN5gdata15GDataFileSystem14OnGetDocumentsEPNS0_18GetDocumentsParamsENS_14GDataErrorCodeE10scoped_ptrIN4base5ValueEE
}
{
   bug_122733
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorINS_15_Hashtable_nodeISsEEE8allocateEmPKv
   fun:_ZN9__gnu_cxx9hashtableISsSsNS_4hashISsEESt9_IdentityISsESt8equal_toISsESaISsEE11_M_get_nodeEv
   fun:_ZN9__gnu_cxx9hashtableISsSsNS_4hashISsEESt9_IdentityISsESt8equal_toISsESaISsEE11_M_new_nodeERKSs
   fun:_ZN9__gnu_cxx9hashtableISsSsNS_4hashISsEESt9_IdentityISsESt8equal_toISsESaISsEE22insert_unique_noresizeERKSs
   fun:_ZN9__gnu_cxx9hashtableISsSsNS_4hashISsEESt9_IdentityISsESt8equal_toISsESaISsEE13insert_uniqueERKSs
   fun:_ZN9__gnu_cxx8hash_setISsNS_4hashISsEESt8equal_toISsESaISsEE6insertERKSs
   fun:_ZN13safe_browsing6Scorer6CreateERKN4base16BasicStringPieceISsEE
   fun:_ZN13safe_browsing24PhishingClassifierFilter18OnSetPhishingModelERKSs
}
{
   bug_122733b
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN13safe_browsing15ClientSideModel27MergePartialFromCodedStreamEPN6google8protobuf2io16CodedInputStreamE
   fun:_ZN6google8protobuf11MessageLite14ParseFromArrayEPKvi
   fun:_ZN13safe_browsing6Scorer6CreateERKN4base16BasicStringPieceISsEE
   fun:_ZN13safe_browsing24PhishingClassifierFilter18OnSetPhishingModelERKSs
}
{
   bug_122752a
   Memcheck:Unaddressable
   fun:_ZN6WebKit12CCThreadImpl8postTaskEN3WTF10PassOwnPtrIN7WebCore8CCThread4TaskEEE
   fun:_ZN7WebCore13CCThreadProxy18finishAllRenderingEv
   fun:_ZN7WebCore15CCLayerTreeHost18finishAllRenderingEv
   fun:_ZN6WebKit16WebLayerTreeView18finishAllRenderingEv
   fun:_ZN6WebKit11WebViewImpl33setIsAcceleratedCompositingActiveEb
   fun:_ZN6WebKit11WebViewImpl20setRootGraphicsLayerEPN7WebCore13GraphicsLayerE
}
{
   bug_122752b
   Memcheck:Unaddressable
   fun:_ZN6WebKit12CCThreadImpl8postTaskEN3WTF10PassOwnPtrIN7WebCore8CCThread4TaskEEE
   fun:_ZN7WebCore13CCThreadProxy14setNeedsCommitEv
   fun:_ZN7WebCore15CCLayerTreeHost14setNeedsCommitEv
   fun:_ZN7WebCore13LayerChromium14setNeedsCommitEv
   fun:_ZN7WebCore13LayerChromium11removeChildEPS0_
   fun:_ZN7WebCore13LayerChromium16removeFromParentEv
   fun:_ZN7WebCore21GraphicsLayerChromium16removeFromParentEv
}
{
   bug_123307
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF16fastZeroedMallocEm
   ...
   fun:_ZN7WebCore12_GLOBAL__N_111V8ObjectMapIN2v86ObjectEjE3setERKNS2_6HandleIS3_EERKj
   fun:_ZN7WebCore12_GLOBAL__N_110Serializer10greyObjectERKN2v86HandleINS2_6ObjectEEE
   fun:_ZN7WebCore12_GLOBAL__N_110Serializer11doSerializeEN2v86HandleINS2_5ValueEEEPNS1_9StateBaseE
   fun:_ZN7WebCore12_GLOBAL__N_110Serializer9serializeEN2v86HandleINS2_5ValueEEE
   fun:_ZN7WebCore21SerializedScriptValueC1EN2v86HandleINS1_5ValueEEEPN3WTF6VectorINS5_6RefPtrINS_11MessagePortEEELm1EEEPNS6_INS7_INS5_11ArrayBufferEEELm1EEERb
   fun:_ZN7WebCore21SerializedScriptValue6createEN2v86HandleINS1_5ValueEEEPN3WTF6VectorINS5_6RefPtrINS_11MessagePortEEELm1EEEPNS6_INS7_INS5_11ArrayBufferEEELm1EEERb
   fun:_ZN7WebCoreL25handlePostMessageCallbackERKN2v89ArgumentsEb
   fun:_ZN7WebCore11V8DOMWindow19postMessageCallbackERKN2v89ArgumentsE
   fun:_ZN2v88internalL19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   fun:_ZN2v88internalL21Builtin_HandleApiCallENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
}
{
   bug_124156
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:*WebKitPlatformSupport*20CreateResourceLoaderERKN11webkit_glue20ResourceLoaderBridge11RequestInfoE
   fun:_ZN11webkit_glue16WebURLLoaderImpl7Context5StartERKN6WebKit13WebURLRequestEPNS_20ResourceLoaderBridge16SyncLoadResponseEPNS_25WebKitPlatformSupportImplE
   fun:_ZN11webkit_glue16WebURLLoaderImpl18loadAsynchronouslyERKN6WebKit13WebURLRequestEPNS1_18WebURLLoaderClientE
}
{
   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:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
}
{
   bug_124496
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN8notifier26ProxyResolvingClientSocket23ProcessProxyResolveDoneEi
}
{
   bug_124500
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIN6webkit17WebPluginMimeTypeEE8allocateEmPKv
   fun:_ZNSt12_Vector_baseIN6webkit17WebPluginMimeTypeESaIS1_EE11_M_allocateEm
   fun:_ZNSt6vectorIN6webkit17WebPluginMimeTypeESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_
   fun:_ZNSt6vectorIN6webkit17WebPluginMimeTypeESaIS1_EE9push_backERKS1_
   fun:_ZN6webkit5npapi9PluginLib20ParseMIMEDescriptionERKSsPSt6vectorINS_17WebPluginMimeTypeESaIS5_EE
   fun:_ZN6webkit5npapi9PluginLib17ReadWebPluginInfoE*
   fun:_ZN6webkit5npapi10PluginList14ReadPluginInfoE*
   fun:_ZN6webkit5npapi10PluginList10LoadPluginE*
   fun:_ZN17UtilityThreadImpl13OnLoadPluginsE*
}
{
   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:_ZN7WebCore9ClipRects6createERKS0_
   fun:_ZN7WebCore11RenderLayer15updateClipRectsEPKS0_PNS_12RenderRegionENS_13ClipRectsTypeENS_29OverlayScrollbarSizeRelevancyE
   ...
   fun:_ZNK7WebCore11RenderLayer15parentClipRectsEPKS0_PNS_12RenderRegionENS_13ClipRectsTypeERNS_9ClipRectsENS_29OverlayScrollbarSizeRelevancyE
   fun:_ZNK7WebCore11RenderLayer18backgroundClipRectEPKS0_PNS_12RenderRegionENS_13ClipRectsTypeENS_29OverlayScrollbarSizeRelevancyE
}
{
   bug_138058
   Memcheck:Uninitialized
   ...
   fun:_ZN7WebCore12WebVTTParser22constructTreeFromTokenEPNS_8DocumentE
   fun:_ZN7WebCore12WebVTTParser33createDocumentFragmentFromCueTextERKN3WTF6StringE
   fun:_ZN7WebCore12TextTrackCue12getCueAsHTMLEv
   fun:_ZN7WebCore12TextTrackCue17updateDisplayTreeEf
   fun:_ZN7WebCore16HTMLMediaElement25updateActiveTextTrackCuesEf
}
{
   bug_138060
   Memcheck:Uninitialized
   fun:_NPN_EvaluateHelper
   fun:_NPN_Evaluate
   fun:_ZN6WebKit11WebBindings8evaluateEP4_NPPP8NPObjectP9_NPStringP10_NPVariant
   fun:_ZL13executeScriptPK12PluginObjectPKc
   fun:NPP_Destroy
   fun:_ZN6webkit5npapi14PluginInstance11NPP_DestroyEv
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl15DestroyInstanceEv
   fun:_ZN6webkit5npapi21WebPluginDelegateImplD0Ev
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl15PluginDestroyedEv
   fun:_ZN6webkit5npapi13WebPluginImpl22TearDownPluginInstanceEPN6WebKit12WebURLLoaderE
   fun:_ZN6webkit5npapi13WebPluginImpl12SetContainerEPN6WebKit18WebPluginContainerE
   fun:_ZN6webkit5npapi13WebPluginImpl7destroyEv
   fun:_ZN6WebKit22WebPluginContainerImplD0Ev
   fun:_ZN3WTF10RefCountedIN7WebCore6WidgetEE5derefEv
   fun:_ZNSt4pairIN3WTF6RefPtrIN7WebCore6WidgetEEEPNS2_9FrameViewEED1Ev
   fun:_ZN3WTF9HashTableINS_6RefPtrIN7WebCore6WidgetEEESt4pairIS4_PNS2_9FrameViewEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_E15deallocateTableEPS8_i
   fun:_ZN3WTF9HashTableINS_6RefPtrIN7WebCore6WidgetEEESt4pairIS4_PNS2_9FrameViewEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_ED1Ev
   fun:_ZN3WTF7HashMapINS_6RefPtrIN7WebCore6WidgetEEEPNS2_9FrameViewENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEED1Ev
   fun:_ZN7WebCore12RenderWidget28resumeWidgetHierarchyUpdatesEv
   fun:_ZN7WebCore7Element6detachEv
   fun:_ZN7WebCore13ContainerNode14detachChildrenEv
   fun:_ZN7WebCore13ContainerNode6detachEv
}
{
   bug_138220_a
   Memcheck:Uninitialized
   fun:_ZNK7WebCore16HTMLInputElement8dataListEv
   fun:_ZNK7WebCore16HTMLInputElement4listEv
   fun:_ZN7WebCore21RenderSliderContainer6layoutEv
   fun:_ZN7WebCore11RenderBlock16layoutBlockChildEPNS_9RenderBoxERNS0_10MarginInfoERNS_20FractionalLayoutUnitES6_
   fun:_ZN7WebCore11RenderBlock19layoutBlockChildrenEbRNS_20FractionalLayoutUnitE
   fun:_ZN7WebCore11RenderBlock11layoutBlockEbNS_20FractionalLayoutUnitE
   fun:_ZN7WebCore11RenderBlock6layoutEv
   fun:_ZN7WebCore12RenderSlider6layoutEv
}
{
   bug_138220_b
   Memcheck:Uninitialized
   fun:_ZNK7WebCore16HTMLInputElement8dataListEv
   fun:_ZNK7WebCore16HTMLInputElement4listEv
   fun:_ZN7WebCore11RenderTheme16paintSliderTicksEPNS_12RenderObjectERKNS_9PaintInfoERKNS_7IntRectE
   fun:_ZN7WebCore24RenderThemeChromiumLinux16paintSliderTrackEPNS_12RenderObjectERKNS_9PaintInfoERKNS_7IntRectE
   fun:_ZN7WebCore11RenderTheme5paintEPNS_12RenderObjectERKNS_9PaintInfoERKNS_7IntRectE
   fun:_ZN7WebCore9RenderBox19paintBoxDecorationsERNS_9PaintInfoERKNS_21FractionalLayoutPointE
   fun:_ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoERKNS_21FractionalLayoutPointE
}
{
   bug_138233_a
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN7WebCore17ScriptProfileNodeEEnwEm
   fun:_ZN7WebCore17ScriptProfileNode6createEPKN2v814CpuProfileNodeE
   fun:_ZNK7WebCore13ScriptProfile4headEv
   fun:_ZN7WebCore23ScriptProfileV8InternalL14headAttrGetterEN2v85LocalINS1_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:_ZN3WTF10RefCountedIN7WebCore17ScriptProfileNodeEEnwEm
   fun:_ZN7WebCore17ScriptProfileNode6createEPKN2v814CpuProfileNodeE
   fun:_ZNK7WebCore17ScriptProfileNode8childrenEv
   fun:_ZN7WebCore27ScriptProfileNodeV8InternalL16childrenCallbackERKN2v89ArgumentsE
}
{
   bug_138522
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore23v8StringToWebCoreStringIN3WTF12AtomicStringEEET_N2v86HandleINS4_6StringEEENS_12ExternalModeE
   fun:_ZN7WebCore*V8StringResourceILNS_20V8StringResourceMode*
   ...
   fun:_ZN7WebCore23WorkerContextV8InternalL22addEventListenerMethodERKN2v89ArgumentsE
}
{
   bug_138712
   Memcheck:Uninitialized
   fun:_ZN7testing8internal11CmpHelperGEIddEENS_15AssertionResultEPKcS4_RKT_RKT0_
   fun:_ZN3gfx30JPEGCodec_EncodeDecodeRGB_Test8TestBodyEv
}
{
   bug_16089 WorkerPool threads and its tasks can leak by design
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base22PosixDynamicThreadPool7AddTaskEPNS_11PendingTaskE
   fun:_ZN4base22PosixDynamicThreadPool8PostTask*
}
{
   bug_139467
   Memcheck:Uninitialized
   fun:_ZNK7WebCore18AccessibilityTable9roleValueEv
   fun:_ZNK7WebCore25AccessibilityRenderObject20ariaLiveRegionStatusEv
   fun:_ZNK7WebCore19AccessibilityObject22supportsARIALiveRegionEv
   fun:_ZNK7WebCore19AccessibilityObject22supportsARIAAttributesEv
   fun:_ZN7WebCore25AccessibilityRenderObject26determineAccessibilityRoleEv
   fun:_ZN7WebCore23AccessibilityNodeObject4initEv
   fun:_ZN7WebCore25AccessibilityRenderObject4initEv
   fun:_ZN7WebCore18AccessibilityTable4initEv
}
{
   bug_139470
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore22ThreadableBlobRegistry17unregisterBlobURLERKNS_4KURLE
   ...
   fun:_ZN7WebCore15WrapperTypeInfo11derefObjectEPv
   fun:_ZN7WebCore7DOMData11derefObjectEPNS_15WrapperTypeInfoEPv
   fun:_ZN7WebCore7DOMData23WrapperMapObjectRemoverIvE15visitDOMWrapperEPNS_12DOMDataStoreEPvN2v810PersistentINS6_6ObjectEEE
   fun:_ZN7WebCore16WeakReferenceMapIvN2v86ObjectEE5visitEPNS_12DOMDataStoreEPNS_24AbstractWeakReferenceMapIvS2_E7VisitorE
   fun:_ZN7WebCore7DOMData27removeObjectsFromWrapperMapIvEEvPNS_12DOMDataStoreERNS_24AbstractWeakReferenceMapIT_N2v86ObjectEEE
   fun:_ZN7WebCore19removeAllDOMObjectsEv
   fun:_ZN7WebCore22WorkerScriptControllerD1Ev
   fun:_ZN3WTF14deleteOwnedPtrIN7WebCore22WorkerScriptControllerEEEvPT_
   fun:_ZN3WTF6OwnPtrIN7WebCore22WorkerScriptControllerEE5clearEv
   fun:_ZN7WebCore13WorkerContext11clearScriptEv
   fun:_ZN7WebCore30WorkerThreadShutdownFinishTask11performTaskEPNS_22ScriptExecutionContextE
   fun:_ZN7WebCore13WorkerRunLoop4Task11performTaskERKS0_PNS_22ScriptExecutionContextE
   fun:_ZN7WebCore13WorkerRunLoop9runInModeEPNS_13WorkerContextERKNS_13ModePredicateENS0_8WaitModeE
   fun:_ZN7WebCore13WorkerRunLoop3runEPNS_13WorkerContextE
   fun:_ZN7WebCore12WorkerThread12runEventLoopEv
   fun:_ZN7WebCore21DedicatedWorkerThread12runEventLoopEv
}
{
   bug_139662
   Memcheck:Uninitialized
   fun:qcms_transform_data_rgba_out_lut_sse2
   fun:qcms_transform_data_type
   fun:_ZN7WebCore16JPEGImageDecoder15outputScanlinesEv
   fun:_ZN7WebCore15JPEGImageReader6decodeERKNS_12SharedBufferEb
}
{
   bug_139853
   Memcheck:Unaddressable
   fun:_ZN11SkGpuDeviceC1EP9GrContextP9GrTexture
   fun:_ZN7WebCoreL23createAcceleratedCanvas*
   fun:_ZN7WebCore45FrameBufferSkPictureCanvasLayerTextureUpdater17*
   fun:_ZN7WebCore45FrameBufferSkPictureCanvasLayerTextureUpdater7Texture10updateRectEPNS_18CCResourceProviderERKNS_7IntRectES6_
   fun:_ZN7WebCore12_GLOBAL__N_126UnthrottledTextureUploader13uploadTextureEPNS_19LayerTextureUpdater7TextureEPNS_18CCResourceProviderENS_7IntRectES7_
   fun:_ZN7WebCore16CCTextureUpdater6updateEPNS_18CCResourceProviderEPNS_13TextureCopierEPNS_15TextureUploaderEm
   fun:_ZN7WebCore19CCSingleThreadProxy8doCommitERNS_16CCTextureUpdaterE
   fun:_ZN7WebCore19CCSingleThreadProxy18commitAndCompositeEv
   fun:_ZN7WebCore19CCSingleThreadProxy20compositeAndReadbackEPvRKNS_7IntRectE
   fun:_ZN7WebCore15CCLayerTreeHost20compositeAndReadbackEPvRKNS_7IntRectE
   fun:_ZN6WebKit16WebLayerTreeView20compositeAndReadbackEPvRKNS_7WebRectE
   fun:_ZN6WebKit11WebViewImpl23doPixelReadbackToCanvasEP8SkCanvasRKN7WebCore7IntRectE
   fun:_ZN6WebKit11WebViewImpl5paintEP8SkCanvasRKNS_7WebRectE
   fun:_ZN11WebViewHost9paintRectERKN6WebKit7WebRectE
   fun:_ZN11WebViewHost22paintInvalidatedRegionEv
}
{
   bug_139996
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore23v8StringToWebCoreStringIN3WTF6StringEEET_N2v86HandleINS4_6StringEEENS_12ExternalModeE
   fun:_ZN7WebCore15toWebCoreStringEN2v86HandleINS0_5ValueEEE
   fun:_ZN7WebCore6V8Blob19constructorCallbackERKN2v89ArgumentsE
   fun:_ZN2v88internalL19HandleApiCallHelperILb1EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   fun:_ZN2v88internalL30Builtin_HandleApiCallConstructENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
}
{
   bug_139998
   Memcheck:Leak
   fun:*alloc
   ...
   fun:_ZL23link_intrastage_shadersP14__GLcontextRecP17gl_shader_programPP9gl_shaderj
   fun:_Z12link_shadersP14__GLcontextRecP17gl_shader_program
   fun:_mesa_glsl_link_shader
   fun:link_program
   fun:_mesa_LinkProgramARB
   fun:glLinkProgram
   ...
   fun:_ZN3gpu5gles216GLES2DecoderImpl13DoLinkProgramEj
   fun:_ZN3gpu5gles216GLES2DecoderImpl17HandleLinkProgram*
   fun:_ZN3gpu5gles216GLES2DecoderImpl9DoCommandEjjPKv
   fun:_ZN3gpu13CommandParser14ProcessCommandEv
   fun:_ZN3gpu12GpuScheduler10PutChangedEv
   fun:_ZN6webkit3gpu18GLInProcessContext12PumpCommandsEv
}
{
   bug_140196
   Memcheck:Uninitialized
   fun:_ZNK12SkDescriptor6equalsERKS_
   fun:_ZN12SkGlyphCache10VisitCacheEPK12SkDescriptorPFbPKS_PvES5_
   ...
   fun:_ZNK7SkPaint14descriptorProcEPK8SkMatrixPFvPK12SkDescriptorPvES6_b
}
{
   bug_143545
   Memcheck:Uninitialized
   fun:_ZN4aura10RootWindow10ShowCursorEb
   fun:_ZN3ash5Shell10ShowCursorEb
   fun:_ZN3ash13CursorManager10ShowCursorEb
   fun:_ZN3ash4test11AshTestBase5SetUpEv
}
{
   bug_144118
   Memcheck:Unaddressable
   fun:NPP_SetWindow
   fun:_ZN6webkit5npapi14PluginInstance13NPP_SetWindowEP9_NPWindow
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl17WindowedSetWindowEv
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl22WindowedUpdateGeometryERKN3gfx4RectES5_
   fun:_ZN6webkit5npapi21WebPluginDelegateImpl14UpdateGeometryERKN3gfx4RectES5_
   fun:_ZN6webkit5npapi13WebPluginImpl14updateGeometryERKN6WebKit7WebRectES5_RKNS2_9WebVectorIS3_EEb
   fun:_ZN6WebKit22WebPluginContainerImpl14reportGeometryEv
   fun:_ZN6WebKit22WebPluginContainerImpl12setFrameRectERKN7WebCore7IntRectE
   ...
   fun:_ZN9TestShell4dumpEv
}
{
   bug_144118_b
   Memcheck:Unaddressable
   fun:_ZNK3WTF6OwnPtrIN6WebKit14ScrollbarGroupEEcvMS3_PS2_Ev
   fun:_ZN6WebKit22WebPluginContainerImpl14reportGeometryEv
   fun:_ZN6WebKit22WebPluginContainerImpl12setFrameRectERKN7WebCore7IntRectE
   ...
   fun:_ZN9TestShell4dumpEv
}
{
   bug_144913
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8chromeos30BluetoothAdapterClientStubImplC1Ev
   fun:_ZN8chromeos22BluetoothAdapterClient6CreateENS_28DBusClientImplementationTypeEPN4dbus3BusEPNS_22BluetoothManagerClientE
   fun:_ZN8chromeos21DBusThreadManagerImplC1ENS_28DBusClientImplementationTypeE
   fun:_ZN8chromeos17DBusThreadManager10InitializeEv
   fun:_ZN8chromeos23KioskModeIdleLogoutTest5SetUpEv
}
{
   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
   Memcheck:Leak
   fun:_Znw*
   fun:_ZL20cachedPaintLuminancef
}
{
   bug_144930_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZL21cachedDeviceLuminancef
}
{
   bug_145244
   Memcheck:Uninitialized
   fun:_ZN7WebCore15StyleRuleImport17requestStyleSheetEPNS_13CSSStyleSheetERKNS_16CSSParserContextE
   fun:_ZN7WebCore18StyleSheetContents26requestImportedStyleSheetsEPNS_13CSSStyleSheetE
}
{
   bug_145645
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN7WebCore18InjectedScriptHostEEnwEm
   fun:_ZN7WebCore18InjectedScriptHost6createEv
   fun:_ZN7WebCore21InjectedScriptManagerC1EPFbPNS_11ScriptStateEE
   fun:_ZN7WebCore21InjectedScriptManager15createForWorkerEv
   fun:_ZN7WebCore25WorkerInspectorControllerC1EPNS_13WorkerContextE
}
{
   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_145698
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6chrome24ShowSessionCrashedPromptEP7Browser
   fun:_ZN25StartupBrowserCreatorImpl22AddInfoBarsIfNecessaryEP7BrowserN6chrome7startup16IsProcessStartupE
   fun:_ZN25StartupBrowserCreatorImpl17ProcessLaunchURLsEbRKSt6vectorI4GURLSaIS1_EE
   fun:_ZN25StartupBrowserCreatorImpl6LaunchEP7ProfileRKSt6vectorI4GURLSaIS3_EEb
}
{
   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:_ZN7content18RenderViewHostImplC1EPNS_12SiteInstanceEPNS_22RenderViewHostDelegateEPNS_24RenderWidgetHostDelegateEibPNS_23SessionStorageNamespaceE
   fun:_ZN7content21RenderViewHostFactory6CreateEPNS_12SiteInstanceEPNS_22RenderViewHostDelegateEPNS_24RenderWidgetHostDelegateEibPNS_23SessionStorageNamespaceE
   fun:_ZN7content21RenderViewHostManager4InitEPNS_14BrowserContextEPNS_12SiteInstanceEi
   fun:_ZN7content15WebContentsImpl4InitERKNS_11WebContents12CreateParamsE
   fun:_ZN7content15TestWebContents6CreateEPNS_14BrowserContextEPNS_12SiteInstanceE
   fun:_ZN7content17WebContentsTester21CreateTestWebContentsEPNS_14BrowserContextEPNS_12SiteInstanceE
}
{
   bug_145704
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN2v88internal5Debug17CreateScriptCacheEv
   fun:_ZN2v88internal5Debug16GetLoadedScriptsEv
   fun:_ZN2v88internal29Runtime_DebugGetLoadedScriptsENS0_9ArgumentsEPNS0_7IsolateE
}
{
   bug_145705
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN10extensions16SettingsFrontendC1ERK13scoped_refptrINS_22SettingsStorageFactoryEEP7Profile
   fun:_ZN10extensions16SettingsFrontend6CreateEP7Profile
   fun:_ZN16ExtensionServiceC1E*
}
{
   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:_ZN6WebKit25NotificationPresenterImpl17requestPermissionEPN7WebCore22Scri ptExecutionContextEN3WTF10PassRefPtrINS1_12VoidCallbackEEE
   fun:_ZN7WebCore18NotificationCenter17requestPermissionEN3WTF10PassRefPtrINS_1 2VoidCallbackEEE
   fun:_ZN7WebCore20V8NotificationCenter25requestPermissionCallbackERKN2v89Argum entsE
}
{
   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_145733
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN25ExtensionInstallUIDefault35GetNewThemeInstalledInfoBarDelegateEP11TabContentsPKN10extensions9ExtensionERKSsb
   fun:_ZN25ExtensionInstallUIDefault16ShowThemeInfoBarERKSsbPKN10extensions9ExtensionEP7Profile
   fun:_ZN25ExtensionInstallUIDefault16OnInstallSuccessEPKN10extensions9ExtensionEP8SkBitmap
   fun:_ZN22ExtensionInstallPrompt16OnInstallSuccessEPKN10extensions9ExtensionEP8SkBitmap
   fun:_ZN10extensions12CrxInstaller25ReportSuccessFromUIThreadEv
}
{
   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_145747a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN24TranslateInfoBarDelegate19CreateErrorDelegateEN15TranslateErrors4TypeEP14InfoBarServiceP11PrefServiceRKSsS7_
   fun:_ZN16TranslateManager14PageTranslatedEPN7content11WebContentsEP21PageTranslatedDetails
   fun:_ZN16TranslateManager7ObserveEiRKN7content18NotificationSourceERKNS0_19NotificationDetailsE
   fun:_ZN23NotificationServiceImpl6NotifyEiRKN7content18NotificationSourceERKNS0_19NotificationDetailsE
   fun:_ZN18TranslateTabHelper16OnPageTranslatedEiRKSsS1_N15TranslateErrors4TypeE
}
{
   bug_145747b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN24TranslateInfoBarDelegate19CreateErrorDelegateEN15TranslateErrors4TypeEP14InfoBarServiceP11PrefServiceRKSsS7_
   fun:_ZN16TranslateManager18OnURLFetchCompleteEPKN3net10URLFetcherE
   fun:_ZN20TranslateManagerTest31SimulateTranslateScriptURLFetchEb
}
{
   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_147755_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12PluginFinder18GetPluginInstallerERKN6webkit13WebPluginInfoE
   fun:_ZN11PluginPrefs30EnablePluginIfPossibleCallbackE*
}
{
   bug_147755_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12PluginFinder17GetPluginMetadataERKN6webkit13WebPluginInfoE
   fun:_ZN11PluginPrefs12EnablePluginE*
   fun:_ZN15PluginPrefsTest25EnablePluginSynchronouslyE*
   fun:_ZN44PluginPrefsTest_UnifiedPepperFlashState_Test8TestBodyEv
}
{
   bug_148637_a
   Memcheck:Unaddressable
   ...
   fun:_ZN9SkPathRef6EditorC1EP12SkAutoTUnrefIS_Eii
   fun:_ZN6SkPath10incReserveEj
   fun:_ZN7WebCoreL23setPathFromConvexPointsEP6SkPathmPKNS_10FloatPointE
   fun:_ZN7WebCore15GraphicsContext17drawConvexPolygonEmPKNS_10FloatPointEb
}
{
   bug_148637_b
   Memcheck:Unaddressable
   fun:_Z13sk_atomic_incPi
   fun:_ZNK8SkRefCnt3refEv
   fun:_ZN9SkPathRef11CreateEmptyEv
   fun:_ZN6SkPathC1Ev
   fun:_ZN11SkClipStack3RecC1EiRK6SkRectN8SkRegion2OpEb
   fun:_ZN11SkClipStack11clipDevRectERK6SkRectN8SkRegion2OpEb
   fun:_ZN8SkCanvas8clipRectERK6SkRectN8SkRegion2OpEb
   fun:_ZN7WebCore15GraphicsContext4clipERKNS_9FloatRectE
   fun:_ZN7WebCore15GraphicsContext4clipERKNS_7IntRectE
}
{
   bug_149734a
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF16VectorBufferBaseIN7WebCore9AttributeEE14allocateBufferEm
   fun:_ZN3WTF12VectorBufferIN7WebCore9AttributeELm4EE14allocateBufferEm
   fun:_ZN3WTF6VectorIN7WebCore9AttributeELm4EE22reserveInitialCapacityEm
   fun:_ZN7WebCore20ElementAttributeData13cloneDataFromERKS0_RKNS_7ElementERS3_
}
{
   bug_149734b
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF16VectorBufferBaseIN7WebCore9AttributeEE14allocateBufferEm
   fun:_ZN3WTF12VectorBufferIN7WebCore9AttributeELm4EE14allocateBufferEm
   fun:_ZN3WTF6VectorIN7WebCore9AttributeELm4EE15reserveCapacityEm
   fun:_ZN3WTF6VectorIN7WebCore9AttributeELm4EE14expandCapacityEm
   fun:_ZN3WTF6VectorIN7WebCore9AttributeELm4EE14expandCapacityEmPKS2_
   fun:_ZN3WTF6VectorIN7WebCore9AttributeELm4EE14appendSlowCaseIS2_EEvRKT_
   fun:_ZN7WebCore20ElementAttributeData12addAttributeERKNS_9AttributeEPNS_7ElementENS_30SynchronizationOfLazyAttributeE
}
{
   bug_150995
   Memcheck:Leak
   fun:_Zna*
   fun:_ZN14webkit_support12_GLOBAL__N_113DoLibpngWrite*
   fun:_ZN14webkit_support26EncodeWithCompressionLevel*
   fun:_ZN14webkit_support6EncodeEPKhNS_12_GLOBAL__N_111ColorFormat*
   fun:_ZN14webkit_support25EncodeBGRAPNGWithChecksum*
   fun:_ZNK9TestShell9dumpImageEP8SkCanvas
   fun:_ZN9TestShell4dumpEv
   fun:_ZN9TestShell12testFinishedEP11WebViewHost
   fun:_ZN11WebViewHost12testFinishedEv
   fun:_ZN13WebTestRunner10TestRunner9WorkQueue15processWorkSoonEv
}
{
   bug_151006
   Memcheck:Leak
   fun:malloc
   fun:uprv_malloc_46
   fun:_ZN6icu_467UMemorynwEm
   fun:_ZN6icu_4610DateFormat6createENS0_6EStyleES1_RKNS_6LocaleE
   fun:_ZN6icu_4610DateFormat22createDateTimeInstanceENS0_6EStyleES1_RKNS_6LocaleE
   fun:udat_open_46
   fun:_ZNK7WebCore9LocaleICU14openDateFormatE16UDateFormatStyleS1_
   fun:_ZN7WebCore9LocaleICU24initializeDateTimeFormatEv
   fun:_ZN7WebCore9LocaleICU15shortTimeFormatEv
   fun:_ZN7WebCore19DateTimeEditElement6layoutERKNS_9StepRangeERKNS_14DateComponentsERNS_9LocalizerE
   fun:_ZN7WebCore19DateTimeEditElement13setEmptyValueERKNS_9StepRangeERKNS_14DateComponentsERNS_9LocalizerE
   fun:_ZN7WebCore13TimeInputType20updateInnerTextValueEv
   fun:_ZN7WebCore13TimeInputType19createShadowSubtreeEv
   fun:_ZN7WebCore16HTMLInputElement10updateTypeEv
   fun:_ZN7WebCore16HTMLInputElement14parseAttributeERKNS_9AttributeE
   fun:_ZN7WebCore7Element16attributeChangedERKNS_9AttributeE
   fun:_ZN7WebCore13StyledElement16attributeChangedERKNS_9AttributeE
   fun:_ZN7WebCore7Element19parserSetAttributesERKN3WTF6VectorINS_9AttributeELm0EEENS_27FragmentScriptingPermissionE
   fun:_ZN7WebCore20HTMLConstructionSite17createHTMLElementEPNS_15AtomicHTMLTokenE
   fun:_ZN7WebCore20HTMLConstructionSite28insertSelfClosingHTMLElementEPNS_15AtomicHTMLTokenE
   fun:_ZN7WebCore15HTMLTreeBuilder24processStartTagForInBodyEPNS_15AtomicHTMLTokenE
   fun:_ZN7WebCore15HTMLTreeBuilder15processStartTagEPNS_15AtomicHTMLTokenE
}
{
   bug_151007
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10RefCountedIN7WebCore15AtomicHTMLTokenEEnwEm
   fun:_ZN7WebCore15AtomicHTMLToken6createERNS_9HTMLTokenE
   fun:_ZN7WebCore15HTMLTreeBuilder22constructTreeFromTokenERNS_9HTMLTokenE
   fun:_ZN7WebCore18HTMLDocumentParser13pumpTokenizerENS0_15SynchronousModeE
   fun:_ZN7WebCore18HTMLDocumentParser23pumpTokenizerIfPossibleENS0_15SynchronousModeE
   fun:_ZN7WebCore18HTMLDocumentParser6insertERKNS_15SegmentedStringE
   fun:_ZN7WebCore18HTMLDocumentParser21parseDocumentFragmentERKN3WTF6StringEPNS_16DocumentFragmentEPNS_7ElementENS_27FragmentScriptingPermissionE
   fun:_ZN7WebCore16DocumentFragment9parseHTMLERKN3WTF6StringEPNS_7ElementENS_27FragmentScriptingPermissionE
   fun:_ZN7WebCore31createFragmentForInnerOuterHTMLERKN3WTF6StringEPNS_7ElementENS_27FragmentScriptingPermissionERi
   fun:_ZN7WebCore11HTMLElement12setInnerHTMLERKN3WTF6StringERi
   fun:_ZN7WebCore21HTMLElementV8InternalL19innerHTMLAttrSetterEN2v85LocalINS1_6StringEEENS2_INS1_5ValueEEERKNS1_12AccessorInfoE
   fun:_ZN2v88internal21StoreCallbackPropertyENS0_9ArgumentsEPNS0_7IsolateE
   ...
   fun:_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_Pb
}
{
   bug_151017
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN19GrTextureStripAtlas8GetAtlasERKNS_4DescE
   fun:_ZN16GrGradientEffectC2EP9GrContextRK20SkGradientShaderBaseN8SkShader8TileModeE
   ...
   fun:_ZN12_GLOBAL__N_121skPaint2GrPaintShaderEP11SkGpuDeviceRK7SkPaintbPNS0_19SkAutoCachedTextureEP7GrPaint
   fun:_ZN11SkGpuDevice8drawRectERK6SkDrawRK6SkRectRK7SkPaint
   fun:_ZN8SkCanvas8drawRectERK6SkRectRK7SkPaint
   fun:_ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectE
   fun:_ZN7WebCore24CanvasRenderingContext2D8fillRectEffff
   fun:_ZN7WebCore34CanvasRenderingContext2DV8InternalL16fillRectCallbackERKN2v89ArgumentsE
   fun:_ZN2v88internalL19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   fun:_ZN2v88internalL21Builtin_HandleApiCallENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   ...
   fun:_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_Pb
   fun:_ZN2v88internal9Execution4CallENS0_6HandleINS0_6ObjectEEES4_iPS4_Pbb
   fun:_ZN2v88Function4CallENS_6HandleINS_6ObjectEEEiPNS1_INS_5ValueEEE
}
{
   bug_151908
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
   fun:_ZN14webkit_support23CreateGraphicsContext3DERKN6WebKit20WebGraphicsContext3D10AttributesEPNS0_7WebViewE
   fun:_ZN11WebViewHost19createOutputSurfaceEv
   fun:_ZN6WebKit11WebViewImpl19createOutputSurfaceEv
   fun:_ZN6WebKit20WebLayerTreeViewImpl19createOutputSurfaceEv
}
{
   bug_155404
   Memcheck:Uninitialized
   fun:_ZN2v88internalL21ProfilerSignalHandlerEiP7siginfoPv
   obj:/lib/libpthread-2.11.1.so
}
{
   bug_156829
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content23AudioInputDeviceManager23EnumerateOnDeviceThread*
}
{
   bug_158510
   Memcheck:Uninitialized
   fun:_ZN7WebCore11RenderTable6layoutEv
   ...
   fun:_ZN7WebCore11RenderBlock6layoutEv
}
{
   bug_158514
   Memcheck:Uninitialized
   ...
   fun:_ZN2v88internal16ProfileGenerator16RecordTickSampleERKNS0_10TickSampleE
   fun:_ZN2v88internal23ProfilerEventsProcessor12ProcessTicksEj
   fun:_ZN2v88internal23ProfilerEventsProcessor3RunEv
   fun:_ZN2v88internalL11ThreadEntryEPv
}
{
   bug_159005
   Memcheck:Uninitialized
   fun:_ZN7WebCore13RenderMarquee18updateMarqueeStyleEv
   fun:_ZN7WebCore11RenderLayer12styleChangedENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore22RenderLayerModelObject14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore9RenderBox14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore11RenderBlock14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore12RenderObject8setStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
}
{
   bug_160877
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7content*DummyListenSocketC1Ev
   fun:_ZNK7content*DummyListenSocketFactory15CreateAndListenEPN3net18StreamListenSocket8DelegateE
   ...
   fun:_ZN3net10HttpServerC1ERKNS_25StreamListenSocketFactoryEPNS0_8DelegateE
   fun:_ZN7content23DevToolsHttpHandlerImpl4InitEv
}
{
   bug_162825
   Memcheck:Uninitialized
   fun:bcmp
   fun:_ZNK3gpu5gles221ShaderTranslatorCache26ShaderTranslatorInitParamsltERKS2_
   fun:_ZNKSt4lessIN3gpu5gles221ShaderTranslatorCache26ShaderTranslatorInitParamsEEclERKS3_S6_
   ...
   fun:_ZNSt3mapIN3gpu5gles221ShaderTranslatorCache26ShaderTranslatorInitParamsEPNS1_16ShaderTranslatorESt4lessIS3_ESaISt4pairIKS3_S5_EEE4findERS9_
   fun:_ZN3gpu5gles221ShaderTranslatorCache13GetTranslatorE12ShShaderType12ShShaderSpecPK18ShBuiltInResourcesNS0_25ShaderTranslatorInterface22GlslImplementationTypeENS7_27GlslBuiltInFunctionBehaviorE
   fun:_ZN3gpu5gles216GLES2DecoderImpl26InitializeShaderTranslatorEv
}
{
   bug_162828
   Memcheck:Leak
   fun:malloc
   fun:_Z15sk_malloc_flagsmj
   fun:_Z15sk_malloc_throwm
   fun:_ZN6SkMask10AllocImageEm
   fun:_ZL17drawRectsIntoMaskPK6SkRectiP6SkMask
   fun:_ZN20SkBlurMaskFilterImpl17filterRectsToNineEPK6SkRectiRK8SkMatrixRK7SkIRectPN12SkMaskFilter9NinePatchE
   fun:_ZN12SkMaskFilter10filterPathERK6SkPathRK8SkMatrixRK12SkRasterClipP9SkBounderP9SkBlitterN7SkPaint5StyleE
   fun:_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixb
}
{
   bug_163111
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4dbus8Response14FromMethodCallEPNS_10MethodCallE
   fun:_ZN8chromeos20IBusPanelServiceImpl*
}
{
   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_164198
   Memcheck:Uninitialized
   fun:_ZN7WebCore9RenderBox15paintFillLayersERKNS_9PaintInfoERKNS_5ColorEPKNS_9FillLayerERKNS_10LayoutRectENS_24BackgroundBleedAvoidanceENS_17CompositeOperatorEPNS_12RenderObjectE
   ...
   fun:_ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN7WebCore11RenderBlock5paintERNS_9PaintInfoERKNS_11LayoutPointE
   fun:_ZN7WebCore11RenderLayer18paintLayerContentsEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj
   fun:_ZN7WebCore11RenderLayer31paintLayerContentsAndReflectionEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj
   fun:_ZN7WebCore11RenderLayer10paintLayerEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj
   fun:_ZN7WebCore11RenderLayer9paintListEPN3WTF6VectorIPS0_Lm0EEEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj
   fun:_ZN7WebCore11RenderLayer18paintLayerContentsEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj
   fun:_ZN7WebCore11RenderLayer31paintLayerContentsAndReflectionEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj
   fun:_ZN7WebCore11RenderLayer10paintLayerEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj
}
{
   bug_166470
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMN11dom_storage17DomStorageContextEFvRK4GURLE13scoped_refptrIS2_ES3_EENS_8CallbackINS_8internal9BindStateINSB_13FunctorTraitsIT_E12RunnableTypeENSF_7RunTypeEFvNSB_19CallbackParamTraitsIT0_E11StorageTypeENSI_IT1_E11StorageTypeEEE14UnboundRunTypeEEESE_RKSJ_RKSM_
   fun:_ZN7content21DOMStorageContextImpl18DeleteLocalStorageERK4GURL
  ...
   fun:_ZN10extensions11DataDeleter13StartDeletingEP7ProfileRKSsRK4GURL
   fun:_ZN16ExtensionService18UninstallExtensionESsbPSbItN4base20string16_char_traitsESaItEE
}
{
   bug_166470c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN11dom_storage19DomStorageNamespace24DeleteLocalStorageOriginERK4GURL
   fun:_ZN11dom_storage17DomStorageContext18DeleteLocalStorageERK4GURL
}
{
   bug_166470d
   Memcheck:Leak
   ...
   fun:_ZN7fileapi26GetOriginIdentifierFromURLERK4GURL
   fun:_ZN11dom_storage14DomStorageArea26DatabaseFileNameFromOriginERK4GURL
   fun:_ZN11dom_storage14DomStorageAreaC1E*
   fun:_ZN11dom_storage19DomStorageNamespace24DeleteLocalStorageOriginERK4GURL
   fun:_ZN11dom_storage17DomStorageContext18DeleteLocalStorageERK4GURL
}
{
   bug_166709
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMNS_12_GLOBAL__N_121PostTaskAndReplyRelayEFvvENS_8internal17UnretainedWrapper*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8Location*
   ...
   fun:_ZN16ExtensionService12AddExtensionEPKN10extensions9ExtensionE
   fun:_ZN52BackgroundApplicationListModelTest_ExplicitTest_Test8TestBodyEv
}
{
   bug_166709b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base12_GLOBAL__N_112CreateThreadEmbPNS_14PlatformThread8DelegateEPmNS_14ThreadPriorityE
   fun:_ZN4base14PlatformThread6CreateEmPNS0_8DelegateEPm
   fun:_ZN4base12SimpleThread5StartEv
   fun:_ZN4base19SequencedWorkerPool6WorkerC1ERK13scoped_refptrIS0_EiRKSs
   fun:_ZN4base19SequencedWorkerPool5Inner30FinishStartingAdditionalThreadEi
   fun:_ZN4base19SequencedWorkerPool5Inner10ThreadLoopEPNS0_6WorkerE
   fun:_ZN4base19SequencedWorkerPool6Worker3RunEv
   fun:_ZN4base12SimpleThread10ThreadMainEv
   fun:_ZN4base12_GLOBAL__N_110ThreadFuncEPv
}
{
   bug_166709c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN7content13BrowserThread28PostBlockingPoolTaskAndReplyERKN15tracked_objects8LocationERKN4base8CallbackIFvvEEESA_
   fun:_ZN10extensions11ImageLoader15LoadImagesAsyncEPKNS_9ExtensionERKSt6vectorINS0_19ImageRepresentationESaIS5_EERKN4base8CallbackIFvRKN3gfx5ImageEEEE
}
{
   bug_166818
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   ...
   fun:gdk_pixbuf_loader_load_module
   fun:gdk_pixbuf_loader_close
   fun:_ZN2ui12_GLOBAL__N_110LoadPixbufEPN4base22RefCountedStaticMemoryEb
   fun:_ZN2ui14ResourceBundle19GetNativeImageNamedEiNS0_8ImageRTLE
   fun:_ZN2ui14ResourceBundle19GetNativeImageNamedEi
}
{
   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_166976a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base19SequencedWorkerPool5Inner30FinishStartingAdditionalThreadEi
   fun:_ZN4base19SequencedWorkerPool5Inner10ThreadLoopEPNS0_6WorkerE
   fun:_ZN4base19SequencedWorkerPool6Worker3RunEv
   fun:_ZN4base12SimpleThread10ThreadMainEv
   fun:_ZN4base12_GLOBAL__N_110ThreadFuncEPv
}
{
   bug_166976b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPN4base13WaitableEvent6WaiterEEE8allocateEmPKv
   fun:_ZNSt10_List_baseIPN4base13WaitableEvent6WaiterESaIS3_EE11_M_get_nodeEv
   fun:_ZNSt4listIPN4base13WaitableEvent6WaiterESaIS3_EE14_M_create_nodeERKS3_
   fun:_ZNSt4listIPN4base13WaitableEvent6WaiterESaIS3_EE9_M_insertESt14_List_iteratorIS3_ERKS3_
   fun:_ZNSt4listIPN4base13WaitableEvent6WaiterESaIS3_EE9push_backERKS3_
   fun:_ZN4base13WaitableEvent7EnqueueEPNS0_6WaiterE
   fun:_ZN4base13WaitableEvent9TimedWaitERKNS_9TimeDeltaE
   fun:_ZN4base13WaitableEvent4WaitEv
   ...
   fun:_ZN4base19SequencedWorkerPool6WorkerC1ERK13scoped_refptrIS0_EiRKSs
   fun:_ZN4base19SequencedWorkerPool5Inner30FinishStartingAdditionalThreadEi
   fun:_ZN4base19SequencedWorkerPool5Inner10ThreadLoopEPNS0_6WorkerE
   fun:_ZN4base19SequencedWorkerPool6Worker3RunEv
}
{
   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_164781a
   Memcheck:Uninitialized
   ...
   fun:vp8cx_encode_*_macroblock
   fun:thread_encoding_proc
}
{
   bug_167481b
   Memcheck:Uninitialized
   ...
   fun:encode_frame_to_data_rate
   fun:vp8_get_compressed_data
   fun:vp8e_encode
   fun:vpx_codec_encode
}
{
   bug_170340
   Memcheck:Uninitialized
   fun:_ZN3WTF12AtomicString3addEPKt
   fun:_ZN3WTF12AtomicStringC1EPKt
   fun:_ZN7WebCore18HTMLPreloadScanner12processTokenEv
   fun:_ZN7WebCore18HTMLPreloadScanner4scanEv
   fun:_ZN7WebCore18HTMLDocumentParser13pumpTokenizerENS0_15SynchronousModeE
   fun:_ZN7WebCore18HTMLDocumentParser23pumpTokenizerIfPossibleENS0_15SynchronousModeE
   fun:_ZN7WebCore18HTMLDocumentParser6appendERKNS_15SegmentedStringE
   fun:_ZN7WebCore25DecodedDataDocumentParser5flushEPNS_14DocumentWriterE
   fun:_ZN7WebCore14DocumentWriter3endEv
   fun:_ZN7WebCore14DocumentLoader15finishedLoadingEv
}
{
   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_172025
   Memcheck:Uninitialized
   fun:_ZN11WebViewHost19didCreateDataSourceEPN6WebKit8WebFrameEPNS0_13WebDataSourceE
   fun:_ZN6WebKit21FrameLoaderClientImpl20createDocumentLoaderERKN7WebCore15ResourceRequestERKNS1_14SubstituteDataE
   fun:_ZN7WebCore11FrameLoader4initEv
   fun:_ZN7WebCore5Frame4initEv
   fun:_ZN6WebKit12WebFrameImpl21initializeAsMainFrameEPN7WebCore4PageE
   fun:_ZN6WebKit11WebViewImpl19initializeMainFrameEPNS_14WebFrameClientE
   fun:_ZN9TestShell15createNewWindowERKN6WebKit6WebURLEP16DRTDevToolsAgentPN13WebTestRunner17WebTestInterfacesE
   fun:_ZN9TestShell16createMainWindowEv
   fun:_ZN9TestShell10initializeEv
}
{
   bug_172884
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiSt3setIPN10extensions15DeclarativeRuleINS5_16ContentConditionENS5_13ContentActionEEESt4lessISA_ESaISA_EEEEE8allocateEmPKv
   ...
   fun:_ZNSt3mapIiSt3setIPN10extensions15DeclarativeRuleINS1_16ContentConditionENS1_13ContentActionEEESt4lessIS6_ESaIS6_EES7_IiESaISt4pairIKiSA_EEE6insertESt17_Rb_tree_iteratorISE_ERKSE_
   fun:_ZNSt3mapIiSt3setIPN10extensions15DeclarativeRuleINS1_16ContentConditionENS1_13ContentActionEEESt4lessIS6_ESaIS6_EES7_IiESaISt4pairIKiSA_EEEixERSD_
   fun:_ZN10extensions20ContentRulesRegistry5ApplyEPN7content11WebContentsERKSt6vectorISsSaISsEE
   fun:_ZN10extensions20ContentRulesRegistry20DidNavigateMainFrameEPN7content11WebContentsERKNS1_20LoadCommittedDetailsERKNS1_19FrameNavigateParamsE
   fun:_ZN10extensions9TabHelper20DidNavigateMainFrameERKN7content20LoadCommittedDetailsERKNS1_19FrameNavigateParamsE
   fun:_ZN7content15WebContentsImpl30DidNavigateMainFramePostCommitERKNS_20LoadCommittedDetailsERK32ViewHostMsg_FrameNavigate_Params
   fun:_ZN7content15WebContentsImpl11DidNavigateEPNS_14RenderViewHostERK32ViewHostMsg_FrameNavigate_Params
   fun:_ZN7content18RenderViewHostImpl10OnNavigateERKN3IPC7MessageE
   fun:_ZN7content18RenderViewHostImpl17OnMessageReceivedERKN3IPC7MessageE
   fun:_ZN7content21RenderProcessHostImpl17OnMessageReceivedERKN3IPC7MessageE
   fun:_ZN3IPC12ChannelProxy7Context17OnDispatchMessageERKNS_7MessageE
}
{
   bug_173096
   Memcheck:Uninitialized
   fun:bcmp
   fun:_ZN2cc19LayerTreeDebugState5equalERKS0_S2_
   fun:_ZN2cc13LayerTreeHost13setDebugStateERKNS_19LayerTreeDebugStateE
   fun:_ZN6WebKit20WebLayerTreeViewImpl*set*
   fun:_ZN6WebKit11WebViewImpl33setIsAcceleratedCompositingActiveEb
   fun:_ZN6WebKit11WebViewImpl20setRootGraphicsLayerEPN7WebCore13GraphicsLayerE
   fun:_ZN6WebKit16ChromeClientImpl23attachRootGraphicsLayerEPN7WebCore5FrameEPNS1_13GraphicsLayerE
   fun:_ZN7WebCore21RenderLayerCompositor15attachRootLayerENS0_19RootLayerAttachmentE
   fun:_ZN7WebCore21RenderLayerCompositor15ensureRootLayerEv
   fun:_ZN7WebCore21RenderLayerCompositor21enableCompositingModeEb
   fun:_ZN7WebCore21RenderLayerCompositor13updateBackingEPNS_11RenderLayerENS0_24CompositingChangeRepaintE
   fun:_ZN7WebCore21RenderLayerCompositor27updateLayerCompositingStateEPNS_11RenderLayerENS0_24CompositingChangeRepaintE
   fun:_ZN7WebCore11RenderLayer12styleChangedENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore22RenderLayerModelObject14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore9RenderBox14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
}
{
   bug_175100
   Memcheck:Leak
   ...
   fun:_ZN20OneClickSigninHelper14DidStopLoadingEPN7content14RenderViewHostE
   fun:_ZN*OneClickSigninHelperTest*
}
{
   bug_175815
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base5Value18CreateIntegerValueEi
   fun:_ZNK4base16FundamentalValue8DeepCopyEv
   fun:_ZN4base8internal12_GLOBAL__N_125DictionaryHiddenRootValue26RemoveWithoutPathExpansionERKSsPPNS_5ValueE
   fun:_ZN4base15DictionaryValue6RemoveERKSsPPNS_5ValueE
   fun:_ZN32PluginFinderTest_JsonSyntax_Test8TestBodyEv
}
{
   bug_175823
   Memcheck:Leak
   ...
   fun:_ZN18ValueStoreFrontend*
}
{
    bug_175985
    Memcheck:Uninitialized
    fun:_ZN2cc13LayerTreeHost13setDebugStateERKNS_19LayerTreeDebugStateE
    ...
    fun:_ZN6WebKit20WebLayerTreeViewImpl*
}
{
   bug_176270
   Memcheck:Uninitialized
   fun:_ZNK2cc19LayerTreeDebugState20recordRenderingStatsEv
}
{
   bug_176616_a
   Memcheck:Uninitialized
   fun:_ZN13WebTestRunner16WebTestProxyBase19didCreateDataSourceEPN6WebKit8WebFrameEPNS1_13WebDataSourceE
   fun:_ZN13WebTestRunner12WebTestProxyI11WebViewHostP9TestShellE19didCreateDataSourceEPN6WebKit8WebFrameEPNS5_13WebDataSourceE
   fun:_ZN6WebKit21FrameLoaderClientImpl20createDocumentLoaderERKN7WebCore15ResourceRequestERKNS1_14SubstituteDataE
   fun:_ZN7WebCore11FrameLoader4initEv
   fun:_ZN7WebCore5Frame4initEv
   fun:_ZN6WebKit12WebFrameImpl21initializeAsMainFrameEPN7WebCore4PageE
   fun:_ZN6WebKit11WebViewImpl19initializeMainFrameEPNS_14WebFrameClientE
   fun:_ZN9TestShell15createNewWindowERKN6WebKit6WebURLEP16DRTDevToolsAgentPN13WebTestRunner17WebTestInterfacesE
   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:_ZN7WebCore12WebVTTParser22constructTreeFromTokenEPNS_8DocumentE
   fun:_ZN7WebCore12WebVTTParser33createDocumentFragmentFromCueTextERKN3WTF6StringE
   fun:_ZN7WebCore12TextTrackCue20createWebVTTNodeTreeEv
   fun:_ZN7WebCore12TextTrackCue22createCueRenderingTreeEv
   fun:_ZN7WebCore12TextTrackCue17updateDisplayTreeEf
}
{
   bug_176619_b
   Memcheck:Uninitialized
   fun:_ZN7WebCore12WebVTTParser13collectDigitsERKN3WTF6StringEPj
   fun:_ZN7WebCore12WebVTTParser16collectTimeStampERKN3WTF6StringEPj
   fun:_ZN7WebCore12WebVTTParser22constructTreeFromTokenEPNS_8DocumentE
   fun:_ZN7WebCore12WebVTTParser33createDocumentFragmentFromCueTextERKN3WTF6StringE
   fun:_ZN7WebCore12TextTrackCue20createWebVTTNodeTreeEv
   fun:_ZN7WebCore12TextTrackCue22createCueRenderingTreeEv
   fun:_ZN7WebCore12TextTrackCue17updateDisplayTreeEf
}
{
   bug_176621
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN13WebTestRunner10TestPlugin6createEPN6WebKit8WebFrameERKNS1_15WebPluginParamsEPNS_15WebTestDelegateE
   fun:_ZN13WebTestRunner16WebTestProxyBase12createPluginEPN6WebKit8WebFrameERKNS1_15WebPluginParamsE
   fun:_ZN13WebTestRunner12WebTestProxyI11WebViewHostP9TestShellE12createPluginEPN6WebKit8WebFrameERKNS5_15WebPluginParamsE
   fun:_ZN6WebKit21FrameLoaderClientImpl12createPluginERKN7WebCore7IntSizeEPNS1_17HTMLPlugInElementERKNS1_4KURLERKN3WTF6VectorINSA_6String*
   fun:_ZN7WebCore14SubframeLoader10loadPluginEPNS_22HTMLPlugInImageElementERKNS_4KURLERKN3WTF6StringERKNS6_6VectorIS7*
}
{
   bug_176888
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:p11_kit_registered_module_to_name
   fun:gnutls_pkcs11_init
   fun:gnutls_global_init
   fun:_ZN12_GLOBAL__N_117GcryptInitializer4InitEv
   fun:_ZN12_GLOBAL__N_117GcryptInitializerC1Ev
   fun:_ZN4base25DefaultLazyInstanceTraitsIN12_GLOBAL__N_117GcryptInitializerEE3NewEPv
}
{
   bug_176889_a
   Memcheck:Uninitialized
   fun:inflateReset2
   fun:inflateInit2_
   fun:png_create_read_struct_2
   obj:/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
   obj:/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2600.1
   fun:gdk_pixbuf_loader*
}
{
   bug_176889_b
   Memcheck:Uninitialized
   fun:sse2_composite_over_8888_8888
   ...
   fun:gdk_pixbuf_loader_close
}
{
   bug_176889_c
   Memcheck:Uninitialized
   fun:sse2_combine_over_u
   ...
   fun:gdk_pixbuf_loader_close
}
{
   bug_176889_d
   Memcheck:Uninitialized
   obj:*/librsvg-2.so*
   fun:rsvg_handle_get_pixbuf_sub
   obj:*/libpixbufloader-svg.so
   fun:gdk_pixbuf_loader_close
}
{
   bug_176889_e
   Memcheck:Uninitialized
   fun:gdk_pixbuf_saturate_and_pixelate
}
{
   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
   ...
   fun:_ZN3net15NSSCertDatabase16DeleteCertAndKeyEPKNS_15X509CertificateE
}
{
   bug_177213
   Memcheck:Leak
   ...
   fun:_ZN10extensionsL9SerializeERKSt6vectorINS_10UserScriptESaIS1_EE
}
{
   bug_178424a
   Memcheck:Param
   write(buf)
   obj:/lib*/libpthread-*.so
   fun:_ZN3net10FileStream7Context13WriteFileImplE13scoped_refptrINS_8IOBufferEEi
}
{
   bug_178424b
   Memcheck:Param
   read(buf)
   obj:/lib*/libpthread-*.so
   fun:_ZN3net10FileStream7Context12ReadFileImplE13scoped_refptrINS_8IOBufferEEi
}
{
   bug_179758_a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base54WeakPtrTest_NonOwnerThreadCanCopyAndAssignWeakPtr_Test8TestBodyEv
}
{
   bug_179758_b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base58WeakPtrTest_NonOwnerThreadCanCopyAndAssignWeakPtrBase_Test8TestBodyEv
}
{
   bug_180381
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN4base8FilePath31StripTrailingSeparatorsInternalEv
   fun:_ZNK4base8FilePath7DirNameEv
   fun:_ZN11dom_storage18DomStorageDatabase18GetJournalFilePathERKN4base8FilePathE
   fun:_ZN11dom_storage27LocalStorageDatabaseAdapter11DeleteFilesEv
   fun:_ZN11dom_storage14DomStorageArea12DeleteOriginEv
   fun:_ZN11dom_storage19DomStorageNamespace24DeleteLocalStorageOriginERK4GURL
   fun:_ZN11dom_storage17DomStorageContext18DeleteLocalStorageERK4GURL
}
{
   bug_181038
   Memcheck:Leak
   ...
   fun:_ZN3gfx9GLApiBase17glCompileShaderFnEj
   fun:_ZN3gpu5gles214ProgramManager18ForceCompileShaderEPKSsPNS0_6ShaderEPNS0_16ShaderTranslatorEPNS0_11FeatureInfoE
   fun:_ZN3gpu5gles214ProgramManager15DoCompileShaderEPNS0_6ShaderEPNS0_16ShaderTranslatorEPNS0_11FeatureInfoE
   fun:_ZN3gpu5gles216GLES2DecoderImpl15DoCompileShaderEj
}
{
   bug_181038_link
   Memcheck:Leak
   fun:malloc
   ...
   fun:_ZN3gfx9GLApiBase15glLinkProgramFnEj
   fun:_ZN3gpu5gles27Program4LinkEPNS0_13ShaderManagerEPNS0_16ShaderTranslatorES5_PNS0_11FeatureInfoE
   fun:_ZN3gpu5gles216GLES2DecoderImpl13DoLinkProgramEj
   fun:_ZN3gpu5gles216GLES2DecoderImpl17HandleLinkProgramEjRKNS0_4cmds11LinkProgramE
   fun:_ZN3gpu5gles216GLES2DecoderImpl9DoCommandEjjPKv
   fun:_ZN3gpu13CommandParser14ProcessCommandEv
   fun:_ZN3gpu12GpuScheduler10PutChangedEv
   fun:_ZN6webkit3gpu18GLInProcessContext12PumpCommandsEv
}
{
   bug_181082
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12_GLOBAL__N_124ResourceLoaderBridgeImpl5StartEPN11webkit_glue20ResourceLoaderBridge4PeerE
   fun:_ZN11webkit_glue16WebURLLoaderImpl7Context5StartERKN6WebKit13WebURLRequestEPNS_20ResourceLoaderBridge16SyncLoadResponseEPNS_25WebKitPlatformSupportImplE
   fun:_ZN11webkit_glue16WebURLLoaderImpl18loadAsynchronouslyERKN6WebKit13WebURLRequestEPNS1_18WebURLLoaderClientE
   fun:_ZN7WebCore22ResourceHandleInternal5start*
   ...
   fun:_ZN7WebCore14CachedResource4loadEPNS_20CachedResourceLoaderERKNS_21ResourceLoaderOptionsE
   fun:_ZN7WebCore20CachedResourceLoader15requestResourceENS_14CachedResource4TypeERNS_21CachedResourceRequestE
}
{
   bug_181680
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore11ScriptState10forContextEN2v85LocalINS1_7ContextEEE
   fun:_ZN7WebCore17ScriptDebugServer12breakProgramEN2v86HandleINS1_6ObjectEEENS2_INS1_5ValueEEE
   fun:_ZN7WebCore17ScriptDebugServer18handleV8DebugEventERKN2v85Debug12EventDetailsE
   fun:_ZN7WebCore17ScriptDebugServer20v8DebugEventCallbackERKN2v85Debug12EventDetailsE
   fun:_ZN2v88internal8Debugger18CallCEventCallbackENS_10DebugEventENS0_6HandleINS0_6ObjectEEES5_PNS_5Debug10ClientDataE
}
{
   bug_181691
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_Z10InitThreadv
   fun:ShCompile
   fun:_ZN3gpu5gles216ShaderTranslator9TranslateEPKc
   fun:_ZN3gpu5gles214ProgramManager18ForceCompileShaderEPKSsPNS0_6ShaderEPNS0_16ShaderTranslatorEPNS0_11FeatureInfoE
   fun:_ZN3gpu5gles214ProgramManager15DoCompileShaderEPNS0_6ShaderEPNS0_16ShaderTranslatorEPNS0_11FeatureInfoE
}
{
   bug_184264
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore24createDragImageFromImageEPNS_5ImageENS_27RespectImageOrientationEnumE
   fun:_ZN7WebCore5Frame21dragImageForSelectionEv
   fun:_ZN7WebCore27createDragImageForSelectionEPNS_5FrameE
   fun:_ZN7WebCore14DragController9startDragEPNS_5FrameERKNS_9DragStateENS_13DragOperationERKNS_18PlatformMouseEventERKNS_8IntPointE
   fun:_ZN7WebCore12EventHandler10handleDragERKNS_28MouseEventWithHitTestResultsENS_19CheckDragHysteresisE
   fun:_ZN7WebCore12EventHandler23handleMouseDraggedEventERKNS_28MouseEventWithHitTestResultsE
   fun:_ZN7WebCore12EventHandler20handleMouseMoveEventERKNS_18PlatformMouseEventEPNS_13HitTestResultEb
   fun:_ZN7WebCore12EventHandler28passMouseMoveEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameEPNS_13HitTestResultE
   fun:_ZN7WebCore12EventHandler20handleMouseMoveEventERKNS_18PlatformMouseEventEPNS_13HitTestResultEb
   fun:_ZN7WebCore12EventHandler10mouseMovedERKNS_18PlatformMouseEventE
}
{
   bug_189194
   Memcheck:Leak
   ...
   fun:*ProfileSigninConfirmationDialogTest_*
}
{
   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_222363
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN18WebDatabaseService12LoadDatabaseERKN4base8CallbackIFvN3sql10InitStatusEEEE
}
{
   bug_222687a
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN6chrome12_GLOBAL__N_134CreateMtabWatcherLinuxOnFileThread*
}
{
   bug_222687b
   Memcheck:Leak
   ...
   fun:_ZN4base26PostTaskAndReplyWithResultIPN6chrome16MtabWatcherLinux*
   fun:_ZN7content13BrowserThread26PostTaskAndReplyWithResultIPN6chrome16MtabWatcherLinux*
   fun:_ZN6chrome19StorageMonitorLinux4InitEv
}
{
   bug_222687c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMN6chrome19StorageMonitorLinux*
   fun:_ZN6chrome19StorageMonitorLinux4InitEv
   fun:_ZN27ChromeBrowserMainPartsLinux15PostProfileInitEv
   fun:_ZN22ChromeBrowserMainParts25PreMainMessageLoopRunImplEv
   fun:_ZN22ChromeBrowserMainParts21PreMainMessageLoopRunEv
   fun:_ZN7content15BrowserMainLoop13CreateThreadsEv
}
{
   bug_222687d
   Memcheck:Leak
   ...
   fun:_ZN21TestingBrowserProcess15storage_monitorEv
   fun:_ZN6chrome14StorageMonitor11GetInstanceEv
   fun:_ZN6chrome12_GLOBAL__N_131GetMediaTransferProtocolManagerEv
   fun:_ZN6chrome40MediaTransferProtocolDeviceObserverLinuxD1Ev
   fun:_ZN6chrome40MediaTransferProtocolDeviceObserverLinuxD0Ev
   fun:_ZNK4base14DefaultDeleterIN6chrome40MediaTransferProtocolDeviceObserverLinuxEEclEPS2_
   fun:_ZN4base8internal15scoped_ptr_implIN6chrome40MediaTransferProtocolDeviceObserverLinuxENS_14DefaultDeleterIS3_EEED1Ev
   fun:_ZN10scoped_ptrIN6chrome40MediaTransferProtocolDeviceObserverLinuxEN4base14DefaultDeleterIS1_EEED1Ev
   fun:_ZN6chrome19StorageMonitorLinuxD1Ev
   ...
   fun:_ZN6chrome4test18TestStorageMonitor15RemoveSingletonEv
}
{
   bug_222876
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN21WebDataServiceWrapperC1EP7Profile
   fun:_ZNK21WebDataServiceFactory23BuildServiceInstanceForEPN7content14BrowserContextE
   fun:_ZN33BrowserContextKeyedServiceFactory27GetServiceForBrowserContextEPN7content14BrowserContextEb
   fun:_ZN21WebDataServiceFactory13GetForProfileEP7ProfileNS0_17ServiceAccessTypeE
   ...
   fun:_ZN12TokenService10InitializeEPKcP7Profile
}
{
   bug_222880
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF16VectorBufferBaseINS_6RefPtrIN7WebCore7ArchiveEEEE14allocateBufferEm
   ...
   fun:_ZN7WebCore7Archive18addSubframeArchiveEN3WTF10PassRefPtrIS0_EE
   fun:_ZN7WebCore11MHTMLParser22parseArchiveWithHeaderEPNS_10MIMEHeaderE
   fun:_ZN7WebCore11MHTMLParser12parseArchiveEv
   fun:_ZN7WebCore12MHTMLArchive6createERKNS_4KURLEPNS_12SharedBufferE
}
{
   bug_222883
   Memcheck:Uninitialized
   fun:_ZN2v88internal15ScavengeVisitor15ScavengePointerEPPNS0_6ObjectE.isra.327
   fun:_ZN2v88internal15ScavengeVisitor13VisitPointersEPPNS0_6ObjectES4_
   fun:_ZNK2v88internal13StandardFrame18IterateExpressionsEPNS0_13ObjectVisitorE
   ...
   fun:_ZN2v88internal4Heap8ScavengeEv
   fun:_ZN2v88internal4Heap24PerformGarbageCollectionENS0_16GarbageCollectorEPNS0_8GCTracerE.constprop.678
}
{
   bug_222887
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6webkit3gpu18GLInProcessContext10InitializeERKN3gfx4SizeEPS1_PKcPKiNS2_13GpuPreferenceE
   fun:_ZN6webkit3gpu18GLInProcessContext22CreateOffscreenContextEPS1_RKN3gfx4SizeES2_PKcPKiNS3_13GpuPreferenceE
   fun:_ZN6webkit3gpu46WebGraphicsContext3DInProcessCommandBufferImpl10InitializeEN6WebKit20WebGraphicsContext3D10AttributesEPS3_
   fun:_ZN25TestWebKitPlatformSupport32createOffscreenGraphicsContext3DERKN6WebKit20WebGraphicsContext3D10AttributesE
   fun:_ZN7WebCore17GraphicsContext3D6createENS0_10AttributesEPNS_10HostWindowENS0_11RenderStyleE
}
{
   bug_222898
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF9BitVector13OutOfLineBits6createEm
   fun:_ZN3WTF9BitVector15resizeOutOfLineEm
   fun:_ZN3WTF9BitVector10ensureSizeEm
   fun:_ZN3WTF9BitVectorC1Em
   fun:_ZN7WebCore10UseCounter10didObserveENS0_7FeatureE
   fun:_ZN7WebCore10UseCounter7observeEPNS_8DocumentENS0_7FeatureE
}
{
   bug_224747
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   ...
   fun:_ZN64BackgroundApplicationListModelTest_AddRemovePermissionsTest_Test8TestBodyEv
}
{
   bug_225028
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN31SafeBrowsingDatabaseFactoryImpl26CreateSafeBrowsingDatabaseEbbbb
   fun:_ZN20SafeBrowsingDatabase6CreateEbbbb
   fun:_ZN27SafeBrowsingDatabaseManager11GetDatabaseEv
}
{
   bug_225596
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8chromeos12input_method22InputMethodManagerImpl4InitERK13scoped_refptrIN4base19SequencedTaskRunnerEES7_
   fun:_ZN8chromeos12input_method10InitializeERK13scoped_refptrIN4base19SequencedTaskRunnerEES6_
   fun:_ZN8chromeos12input_method48InputMethodConfigurationTest_TestInitialize_Test8TestBodyEv
}
{
   bug_226254
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMN10extensions16UserScriptMaster14ScriptReloader*
   fun:_ZN10extensions16UserScriptMaster14ScriptReloader9StartLoad*
   fun:_ZN10extensions16UserScriptMaster9StartLoadEv
   fun:_ZN10extensions16UserScriptMaster7ObserveEiRKN7content18NotificationSourceERKNS1_19NotificationDetailsE
}
{
   bug_227278a
   Memcheck:Uninitialized
   ...
   fun:_ZN7content35CompositingIOSurfaceTransformerTest13RunResizeTestERK8SkBitmapRKN3gfx4RectERKNS4_4SizeE
   fun:_ZN7content65CompositingIOSurfaceTransformerTest_ResizesTexturesCorrectly_Test8TestBodyEv
}
{
   bug_227278b
   Memcheck:Uninitialized
   ...
   fun:_ZN7content35CompositingIOSurfaceTransformerTest25RunTransformRGBToYV12TestERK8SkBitmapRKN3gfx4RectERKNS4_4SizeE
   fun:_ZN7content60CompositingIOSurfaceTransformerTest_TransformsRGBToYV12_Test8TestBodyEv
}
{
   bug_227278c
   Memcheck:Uninitialized
   fun:BitSetNextSetBit
   fun:RegistersReInterfere
   fun:RegistersMerge
   fun:glpPPShaderLinearizeStreamMgr
   fun:glpPPShaderLinearize
   fun:glePrepareShaderForEmulation
   fun:gleSetVPTransformFuncAll
   fun:gleVPRenderQuadsSmooth
   fun:gleDrawArraysOrElements_ExecCore
   fun:glDrawArrays_Exec
   fun:glDrawArrays
   fun:_ZN7content12_GLOBAL__N_18DrawQuadEffffbff
   fun:_ZN7content31CompositingIOSurfaceTransformer14ResizeBilinearEjRKN3gfx4RectERKNS1_4SizeEPj
   fun:_ZN7content35CompositingIOSurfaceTransformerTest13RunResizeTestERK8SkBitmapRKN3gfx4RectERKNS4_4SizeE
   fun:_ZN7content65CompositingIOSurfaceTransformerTest_ResizesTexturesCorrectly_Test8TestBodyEv
}
{
   bug_227278d
   Memcheck:Uninitialized
   fun:glViewport_Exec
   fun:glViewport
   fun:_ZN7content12_GLOBAL__N_139SetTransformationsForOffScreenRenderingERKN3gfx4SizeE
   fun:_ZN7content31CompositingIOSurfaceTransformer18TransformRGBToYV12EjRKN3gfx4RectERKNS1_4SizeEPjS8_S8_PS5_S9_
   fun:_ZN7content35CompositingIOSurfaceTransformerTest25RunTransformRGBToYV12TestERK8SkBitmapRKN3gfx4RectERKNS4_4SizeE
   fun:_ZN7content60CompositingIOSurfaceTransformerTest_TransformsRGBToYV12_Test8TestBodyEv
}
{
   bug_227278e
   Memcheck:Free
   fun:_ZdlPv
   fun:_ZN12BindingTableD2Ev
   fun:_ZN14TGenericLinkerD0Ev
   fun:ShDestruct
   fun:gleFreeProgramObject
   fun:gleUnbindDeleteHashNameAndObject
   fun:glDeleteObjectARB_Exec
   fun:glDeleteProgram
   fun:_ZN7content34CompositingIOSurfaceShaderPrograms5ResetEv
   fun:_ZN7content35CompositingIOSurfaceTransformerTestD2Ev
   fun:_ZN7content69CompositingIOSurfaceTransformerTest_ShaderProgramsCompileAndLink_TestD2Ev
   fun:_ZN7content69CompositingIOSurfaceTransformerTest_ShaderProgramsCompileAndLink_TestD1Ev
   fun:_ZN7content69CompositingIOSurfaceTransformerTest_ShaderProgramsCompileAndLink_TestD0Ev
   fun:_ZN7testing4Test11DeleteSelf_Ev
}
{
   bug_230366a
   Memcheck:Leak
   fun:_Znw*
   fun:_Z28InitializeGlobalParseContextv
   fun:_Z10InitThreadv
   fun:ShCompile
   fun:_ZN6webkit3gpu33WebGraphicsContext3DInProcessImpl25AngleValidateShaderSourceEPNS1_17ShaderSourceEntryE
   fun:_ZN6webkit3gpu33WebGraphicsContext3DInProcessImpl13compileShaderEj
   fun:_ZN2cc18ProgramBindingBase10LoadShaderEPN6WebKit20WebGraphicsContext3DEjRKSs
   fun:_ZN2cc18ProgramBindingBase4InitEPN6WebKit20WebGraphicsContext3DERKSsS5_
   fun:_ZN2cc14ProgramBindingINS_26VertexShaderPosTexIdentityENS_21FragmentShaderRGBATexEEC1EPN6WebKit20WebGraphicsContext3DENS_17TexCoordPrecisionE
   fun:_ZN2cc24AcceleratedTextureCopierC1EPN6WebKit20WebGraphicsContext3DEbi
   fun:_ZN2cc24AcceleratedTextureCopier6CreateEPN6WebKit20WebGraphicsContext3DEbi
   fun:_ZN2cc16ResourceProvider10InitializeEi
   fun:_ZN2cc16ResourceProvider6CreateEPNS_13OutputSurfaceEi
   fun:_ZN2cc17LayerTreeHostImpl18InitializeRendererE10scoped_ptrINS_13OutputSurfaceEN4base14DefaultDeleterIS2_EEE
   fun:_ZN2cc11ThreadProxy30InitializeRendererOnImplThreadEPNS_15CompletionEventEPbPNS_20RendererCapabilitiesE
}
{
   bug_230366b
   Memcheck:Leak
   fun:_Znw*
   fun:_Z21InitializeGlobalPoolsv
   fun:_Z10InitThreadv
   fun:ShCompile
   fun:_ZN6webkit3gpu33WebGraphicsContext3DInProcessImpl25AngleValidateShaderSourceEPNS1_17ShaderSourceEntryE
   fun:_ZN6webkit3gpu33WebGraphicsContext3DInProcessImpl13compileShaderEj
   fun:_ZN2cc18ProgramBindingBase10LoadShaderEPN6WebKit20WebGraphicsContext3DEjRKSs
   fun:_ZN2cc18ProgramBindingBase4InitEPN6WebKit20WebGraphicsContext3DERKSsS5_
   fun:_ZN2cc14ProgramBindingINS_26VertexShaderPosTexIdentityENS_21FragmentShaderRGBATexEEC1EPN6WebKit20WebGraphicsContext3DENS_17TexCoordPrecisionE
   fun:_ZN2cc24AcceleratedTextureCopierC1EPN6WebKit20WebGraphicsContext3DEbi
   fun:_ZN2cc24AcceleratedTextureCopier6CreateEPN6WebKit20WebGraphicsContext3DEbi
   fun:_ZN2cc16ResourceProvider10InitializeEi
   fun:_ZN2cc16ResourceProvider6CreateEPNS_13OutputSurfaceEi
   fun:_ZN2cc17LayerTreeHostImpl18InitializeRendererE10scoped_ptrINS_13OutputSurfaceEN4base14DefaultDeleterIS2_EEE
   fun:_ZN2cc11ThreadProxy30InitializeRendererOnImplThreadEPNS_15CompletionEventEPbPNS_20RendererCapabilitiesE
}
{
   bug_233541
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN22DiskCacheTestWithCache13CreateBackendEjPN4base6ThreadE
   fun:_ZN22DiskCacheTestWithCache13InitDiskCacheEv
   fun:_ZN22DiskCacheTestWithCache9InitCacheEv
   fun:*DiskCacheBackendTest_SimpleDoom*
}
{
   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_238170a
   Memcheck:Uninitialized
   fun:_ZN7WebCore20ElementRuleCollector20collectMatchingRulesERKNS_12MatchRequestERNS_13StyleResolver9RuleRangeE
   fun:_ZN7WebCore20ElementRuleCollector19hasAnyMatchingRulesEPNS_7RuleSetE
}
{
   bug_238170b
   Memcheck:Uninitialized
   fun:_ZN7WebCore20ElementRuleCollector20collectMatchingRulesERKNS_12MatchRequestERNS_13StyleResolver9RuleRangeE
   fun:_ZN7WebCore13StyleResolver16matchAuthorRulesERNS_20ElementRuleCollectorEb
}
{
   bug_238170c
   Memcheck:Uninitialized
   fun:_ZN7WebCore23ReplaceSelectionCommand7doApplyEv
   fun:_ZN7WebCore20CompositeEditCommand5applyEv
   fun:_ZN7WebCore12applyCommandEN3WTF10PassRefPtrINS_20CompositeEditCommandEEE
}
{
   bug_238547
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorIPN4base11PendingTaskEE8allocateEmPKv
   fun:_ZNSt11_Deque_baseIN4base11PendingTaskESaIS1_EE15_M_allocate_mapEm
   fun:_ZNSt5dequeIN4base11PendingTaskESaIS1_EE17_M_reallocate_mapEmb
   fun:_ZNSt5dequeIN4base11PendingTaskESaIS1_EE22_M_reserve_map_at_backEm
   fun:_ZNSt5dequeIN4base11PendingTaskESaIS1_EE16_M_push_back_auxERKS1_
   fun:_ZNSt5dequeIN4base11PendingTaskESaIS1_EE9push_backERKS1_
   fun:_ZNSt5queueIN4base11PendingTaskESt5dequeIS1_SaIS1_EEE4pushERKS1_
   ...
   fun:_ZN4base*MessageLoop*15PostDelayedTaskERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEENS_9TimeDeltaE
}
{
   bug_239141
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF9BitVector13OutOfLineBits6createEm
   fun:_ZN3WTF9BitVector15resizeOutOfLineEm
   fun:_ZN3WTF9BitVector10ensureSizeEm
   fun:_ZN3WTF9BitVectorC1Em
   fun:_ZN7WebCore10UseCounter17recordMeasurementENS0_7FeatureE
}
{
   bug_241044
   Memcheck:Uninitialized
   fun:_ZN7WebCore8Settings29setOpenGLMultisamplingEnabledEb
   fun:_ZN6WebKit15WebSettingsImpl29setOpenGLMultisamplingEnabledEb
   fun:_ZN11webkit_glue19ApplyWebPreferencesERK14WebPreferencesPN6WebKit7WebViewE
   fun:_ZN7content14RenderViewImpl10InitializeEPNS_20RenderViewImplParamsE
   fun:_ZN7content14RenderViewImpl6CreateEiRKNS_19RendererPreferencesERK14WebPreferencesPN4base14RefCountedDataIiEEiilRKSbItNS7_20string16_char_traitsESaItEEbbiRKN6WebKit13WebScreenInfoE17AccessibilityModeb
   fun:_ZN7content16RenderThreadImpl15OnCreateNewViewERK18ViewMsg_New_Params
}
{
   bug_241892a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore11CSSSelector8RareData6createEN3WTF10PassRefPtrINS2_16AtomicStringImplEEE
   fun:_ZN7WebCore11CSSSelector14createRareDataEv
   ...
   fun:_Z10cssyyparsePN7WebCore9CSSParserE
   fun:_ZN7WebCore9CSSParser10parseSheetEPNS_18StyleSheetContentsE*
   fun:_ZN7WebCore18StyleSheetContents17parseStringAtLineERKN3WTF6StringEib
   fun:_ZN7WebCore12StyleElement11createSheetE*
   fun:_ZN7WebCore12StyleElement7processEPNS_7ElementE
}
{
   bug_241892b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore11CSSSelector8RareData6createEN3WTF10PassRefPtrINS2_16AtomicStringImplEEE
   fun:_ZN7WebCore11CSSSelector14createRareDataEv
   ...
   fun:_Z10cssyyparsePN7WebCore9CSSParserE
   fun:_ZN7WebCore9CSSParser13parseSelectorERKN3WTF6StringERNS_15CSSSelectorListE
}
{
   bug_241892c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore11CSSSelector8RareData6createEN3WTF10PassRefPtrINS2_16AtomicStringImplEEE
   fun:_ZN7WebCore11CSSSelector14createRareDataEv
   fun:_ZN7WebCore11CSSSelector12setAttributeERKNS_13QualifiedNameE
   fun:_ZN7WebCore17CSSParserSelector12setAttributeERKNS_13QualifiedNameE
   fun:_Z10cssyyparsePN7WebCore9CSSParserE
   fun:_ZN7WebCore9CSSParser10parseSheetEPNS_18StyleSheetContentsERKN3WTF6StringERKNS3_12TextPositionEPNS0_17SourceDataHandlerEb
   fun:_ZN7WebCore18StyleSheetContents21parseStringAtPositionERKN3WTF6StringERKNS1_12TextPositionEb
   fun:_ZN7WebCore12StyleElement11createSheetEPNS_7ElementERKN3WTF6StringE
   fun:_ZN7WebCore12StyleElement7processEPNS_7ElementE
   fun:_ZN7WebCore12StyleElement17processStyleSheetEPNS_8DocumentEPNS_7ElementE
   fun:_ZN7WebCore16HTMLStyleElement26didNotifySubtreeInsertionsEPNS_13ContainerNodeE
   fun:_ZN7WebCore26ChildNodeInsertionNotifier6notifyEPNS_4NodeE
   fun:_ZN7WebCoreL24updateTreeAfterInsertionEPNS_13ContainerNodeEPNS_4NodeENS_14AttachBehaviorE
   fun:_ZN7WebCore13ContainerNode11appendChildEN3WTF10PassRefPtrINS_4NodeEEERiNS_14AttachBehaviorE
   fun:_ZN7WebCore4Node11appendChildEN3WTF10PassRefPtrIS0_EERiNS_14AttachBehaviorE
   fun:_ZN7WebCore6V8Node23appendChildMethodCustomERKN2v820FunctionCallbackInfoINS1_5ValueEEE
   fun:_ZN7WebCore14NodeV8InternalL37appendChildMethodCallbackForMainWorldERKN2v820FunctionCallbackInfoINS1_5ValueEEE
}

{
   bug_241932
   Memcheck:Leak
   fun:calloc
   fun:_ZN3WTF13tryFastCallocEmm
   fun:_ZN3WTF9RawBufferC1EjjNS0_20InitializationPolicyE
   fun:_ZN3WTF19ArrayBufferContentsC1EjjNS_9RawBuffer20InitializationPolicyE
   fun:_ZN3WTF11ArrayBuffer6createEPKvj
   fun:_ZN7WebCore12_GLOBAL__N_16Reader17doReadArrayBufferEv
   fun:_ZN7WebCore12_GLOBAL__N_16Reader15readArrayBufferEPN2v86HandleINS2_5ValueEEE
   fun:_ZN7WebCore12_GLOBAL__N_16Reader4readEPN2v86HandleINS2_5ValueEEERNS0_16CompositeCreatorE
   fun:_ZN7WebCore12_GLOBAL__N_112Deserializer13doDeserializeEv
   fun:_ZN7WebCore12_GLOBAL__N_112Deserializer11deserializeEv
   fun:_ZN7WebCore21SerializedScriptValue11deserializeEPN2v87IsolateEPN3WTF6VectorINS4_6RefPtrINS_11MessagePortEEELm1EEE
   fun:_ZN7WebCore14V8MessageEvent20dataAttrGetterCustomEN2v85LocalINS1_6StringEEERKNS1_12AccessorInfoE
   fun:_ZN7WebCore22MessageEventV8InternalL22dataAttrGetterCallbackEN2v85LocalINS1_6StringEEERKNS1_12AccessorInfoE
}
{
   bug_242672
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF9BitVector13OutOfLineBits6createEm
   fun:_ZN3WTF9BitVector15resizeOutOfLineEm
   fun:_ZN3WTF9BitVector10ensureSizeEm
   fun:_ZN7WebCore10UseCounterC1Ev
   fun:_ZN7WebCore4PageC1ERNS0_11PageClientsE
}
{
   bug_243132
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10StringImpl19createUninitializedEjRPh
   fun:_ZN3WTF6String6appendERKS0_
   fun:_ZN7WebCoreL24valueForGridTrackBreadthERKNS_10GridLengthEPKNS_11RenderStyleEPNS_10RenderViewE
   fun:_ZN7WebCoreL21valueForGridTrackSizeERKNS_13GridTrackSizeEPKNS_11RenderStyleEPNS_10RenderViewE
   fun:_ZN7WebCoreL21valueForGridTrackListERKN3WTF6VectorINS_13GridTrackSizeELm0EEERKNS0_7HashMap*
   fun:_ZNK7WebCore27CSSComputedStyleDeclaration19getPropertyCSSValueENS_13CSSPropertyIDENS_13EUpdateLayoutE
   fun:_ZNK7WebCore27CSSComputedStyleDeclaration19getPropertyCSSValueENS_13CSSPropertyIDE
   fun:_ZNK7WebCore27CSSComputedStyleDeclaration16getPropertyValueENS_13CSSPropertyIDE
   fun:_ZN7WebCore27CSSComputedStyleDeclaration16getPropertyValueERKN3WTF6StringE
}
{
   bug_243137
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore11RenderStyle6createEv
   fun:_ZN7WebCore13StyleResolver15styleForElementEPNS_7ElementEPNS_11RenderStyle*
   fun:_ZN7WebCore7Element16styleForRendererEv
   fun:_ZN7WebCore20NodeRenderingContext32createRendererForElementIfNeededEv
   fun:_ZN7WebCore7Element22createRendererIfNeededEv
   fun:_ZN7WebCore7Element6attachEv
   fun:_ZN7WebCore22HTMLPlugInImageElement6attachEv
}
{
   bug_243753
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7fileapi28SandboxFileSystemBackendTest11GetRootPathERK4GURLNS_14FileSystemTypeEbPN4base8FilePathE
}
{
   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_245828
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN7content13BrowserThread16PostTaskAndReplyENS0_2IDERKN15tracked_objects8LocationERKN4base8CallbackIFvvEEESB_
   fun:_ZN7content23DevToolsHttpHandlerImpl4StopEv
   fun:_ZN7content21ShellDevToolsDelegate4StopEv
   fun:_ZN7content21ShellBrowserMainParts22PostMainMessageLoopRunEv
   fun:_ZN7content15BrowserMainLoop25ShutdownThreadsAndCleanUpEv
   fun:_ZN7content21BrowserMainRunnerImpl8ShutdownEv
   fun:_Z16ShellBrowserMainRKN7content18MainFunctionParams*
   fun:_ZN7content17ShellMainDelegate10RunProcessERKSsRKNS_18MainFunctionParamsE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl3RunEv
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
}
{
   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_246148
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN7content16SiteInstanceImpl10GetProcessEv
   fun:_ZN7content18RenderViewHostImplC1EPNS_12SiteInstanceEPNS_22RenderViewHostDelegateEPNS_24RenderWidgetHostDelegateEiibPNS_23SessionStorageNamespaceE
   fun:_ZN7content21RenderViewHostFactory6CreateEPNS_12SiteInstanceEPNS_22RenderViewHostDelegateEPNS_24RenderWidgetHostDelegateEiibPNS_23SessionStorageNamespaceE
   fun:_ZN7content21RenderViewHostManager4InitEPNS_14BrowserContextEPNS_12SiteInstanceEii
   fun:_ZN7content15WebContentsImpl4InitERKNS_11WebContents12CreateParamsE
   fun:_ZN7content15TestWebContents6CreateEPNS_14BrowserContextEPNS_12SiteInstanceE
   fun:_ZN7content17WebContentsTester21CreateTestWebContentsEPNS_14BrowserContextEPNS_12SiteInstanceE
   fun:_ZN8autofill12_GLOBAL__N_128AutofillDialogControllerTest5SetUpEv
}
{
   bug_246153
   Memcheck:Uninitialized
   fun:_ZN7WebCore8Settings29setOpenGLMultisamplingEnabledEb
   fun:_ZN6WebKit15WebSettingsImpl29setOpenGLMultisamplingEnabledEb
   fun:_ZN11webkit_glue19ApplyWebPreferencesERK14WebPreferencesPN6WebKit7WebViewE
   ...
   fun:_ZN7content14RenderViewImpl10InitializeEPNS_20RenderViewImplParamsE
   fun:_ZN7content14RenderViewImpl6CreateEiRKNS_19RendererPreferencesERK14WebPreferencesPN4base14RefCountedDataIiEEiiilRKSbItNS7_20string16_char_traitsESaItEEbbiRKN6WebKit13WebScreenInfoE17AccessibilityModeb
   fun:_ZN7content16RenderThreadImpl15OnCreateNewViewERK18ViewMsg_New_Params
}
{
   bug_247525a
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7fileapi24SandboxFileSystemBackendC1EPN5quota17QuotaManagerProxyEPN4base19SequencedTaskRunnerERKNS4_8FilePathERKNS_17FileSystemOptionsEPNS1_20SpecialStoragePolicyE
   fun:_ZN7fileapi17FileSystemContextC1E10scoped_ptrINS_21FileSystemTaskRunnersEN4base14DefaultDeleterIS2_EEEPNS_19ExternalMountPointsEPN5quota20SpecialStoragePolicyEPNS9_17QuotaManagerProxyE12ScopedVectorINS_17FileSystemBackendEERKNS3_8FilePathERKNS_17FileSystemOptionsE
   fun:_ZN7content23CreateFileSystemContextERKN4base8FilePathEbPN7fileapi19ExternalMountPointsEPN5quota20SpecialStoragePolicyEPNS7_17QuotaManagerProxyE
   fun:_ZN7content20StoragePartitionImpl6CreateEPNS_14BrowserContextEbRKN4base8FilePathE
   fun:_ZN7content23StoragePartitionImplMap3GetERKSsS2_b
   fun:_ZN7content12_GLOBAL__N_129GetStoragePartitionFromConfigEPNS_14BrowserContextERKSsS4_b
   fun:_ZN7content14BrowserContext19GetStoragePartitionEPS0_PNS_12SiteInstanceE
   fun:_ZN7content24NavigationControllerImpl26GetSessionStorageNamespaceEPNS_12SiteInstanceE
   fun:_ZN7content21RenderViewHostManager4InitEPNS_14BrowserContextEPNS_12SiteInstanceEii
   fun:_ZN7content15WebContentsImpl4InitERKNS_11WebContents12CreateParamsE
   fun:_ZN7content15TestWebContents6CreateEPNS_14BrowserContextEPNS_12SiteInstanceE
   fun:_ZN7content25RenderViewHostTestHarness21CreateTestWebContentsEv
   fun:_ZN7content25RenderViewHostTestHarness5SetUpEv
   fun:_ZN31ChromeRenderViewHostTestHarness5SetUpEv
}
{
   bug_247525b
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN8appcache19AppCacheStorageImpl10InitializeERKN4base8FilePathEPNS1_16MessageLoopProxyES6_
   fun:_ZN8appcache15AppCacheService10InitializeERKN4base8FilePathEPNS1_16MessageLoopProxyES6_
   fun:_ZN7content21ChromeAppCacheService20InitializeOnIOThreadERKN4base8FilePathEPNS_15ResourceContextEPN3net23URLRequestContextGetterE13scoped_refptrIN5quota20SpecialStoragePolicyEE
}
{
   bug_247525c
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content20StoragePartitionImpl6CreateEPNS_14BrowserContextEbRKN4base8FilePathE
   fun:_ZN7content23StoragePartitionImplMap3GetERKSsS2_b
   fun:_ZN7content12_GLOBAL__N_129GetStoragePartitionFromConfigEPNS_14BrowserContextERKSsS4_b
   fun:_ZN7content14BrowserContext19GetStoragePartitionEPS0_PNS_12SiteInstanceE
   fun:_ZN7content24NavigationControllerImpl26GetSessionStorageNamespaceEPNS_12SiteInstanceE
   fun:_ZN7content21RenderViewHostManager4InitEPNS_14BrowserContextEPNS_12SiteInstanceEii
   fun:_ZN7content15WebContentsImpl4InitERKNS_11WebContents12CreateParamsE
   fun:_ZN7content15TestWebContents6CreateEPNS_14BrowserContextEPNS_12SiteInstanceE
   fun:_ZN7content25RenderViewHostTestHarness21CreateTestWebContentsEv
   fun:_ZN7content25RenderViewHostTestHarness5SetUpEv
   fun:_ZN31ChromeRenderViewHostTestHarness5SetUpEv
}
{
   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
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3net21TestURLRequestContext4InitEv
   fun:_ZN3net21TestURLRequestContextC1Ev
   fun:_ZN3net27TestURLRequestContextGetter20GetURLRequestContextEv
   fun:_ZN11jingle_glue26ProxyResolvingClientSocketC1EPN3net19ClientSocketFactoryERK13scoped_refptrINS1_23URLRequestContextGetterEERKNS1_9SSLConfigERKNS1_12HostPortPairE
   fun:_ZN11jingle_glue23XmppClientSocketFactory27CreateTransportClientSocketERKN3net12HostPortPairE
   fun:_ZN11jingle_glue17ChromeAsyncSocket7ConnectERKN9talk_base13SocketAddressE
}
{
   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_250688
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKN3net9HostCache3KeyES2_INS4_5EntryEN4base9TimeTicksEEEEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeIN3net9HostCache3KeyESt4pairIKS2_S3_INS1_5EntryEN4base9TimeTicksEEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeIN3net9HostCache3KeyESt4pairIKS2_S3_INS1_5EntryEN4base9TimeTicksEEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE14_M_create_nodeERKS9_
   fun:_ZNSt8_Rb_treeIN3net9HostCache3KeyESt4pairIKS2_S3_INS1_5EntryEN4base9TimeTicksEEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE10_M_insert_EPKSt18_Rb_tree_node_baseSI_RKS9_
   fun:_ZNSt8_Rb_treeIN3net9HostCache3KeyESt4pairIKS2_S3_INS1_5EntryEN4base9TimeTicksEEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE16_M_insert_uniqueERKS9_
   fun:_ZNSt3mapIN3net9HostCache3KeyESt4pairINS1_5EntryEN4base9TimeTicksEESt4lessIS2_ESaIS3_IKS2_S7_EEE6insertERKSB_
   fun:_ZN3net13ExpiringCacheINS_9HostCache3KeyENS1_5EntryEN4base9TimeTicksESt4lessIS5_ENS1_15EvictionHandlerEE3PutERKS2_RKS3_RKS5_SF_
   fun:_ZN3net9HostCache3SetERKNS0_3KeyERKNS0_5EntryEN4base9TimeTicksENS7_9TimeDeltaE
   fun:_ZN3net20MockHostResolverBase11ResolveProcEmRKNS_12HostResolver11RequestInfoEPNS_11AddressListE
   fun:_ZN3net20MockHostResolverBase10ResolveNowEm
}
{
   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:_ZNK7WebCore32PlatformSpeechSynthesisUtterance6clientEv
   fun:_ZN7WebCore15SpeechSynthesis17didFinishSpeakingEN3WTF10PassRefPtrINS_32PlatformSpeechSynthesisUtteranceEEE
   fun:_ZN7WebCore29PlatformSpeechSynthesizerMock16speakingFinishedEPNS_5TimerIS0_EE
   fun:_ZN7WebCore5TimerINS_29PlatformSpeechSynthesizerMockEE5firedEv
   fun:_ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv
   fun:_ZN7WebCore12ThreadTimers16sharedTimerFiredEv
   fun:_ZN11webkit_glue25WebKitPlatformSupportImpl9DoTimeoutEv
}
{
   bug_252036
   Memcheck:Uninitialized
   fun:_ZN2cc9Scheduler27SetupNextBeginFrameIfNeededEv
   fun:_ZN2cc9Scheduler23ProcessScheduledActionsEv
}
{
   bug_252209
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7content18ResourceDispatcher12CreateBridgeERKN11webkit_glue20ResourceLoaderBridge11RequestInfoE
   fun:_ZN7content11ChildThread12CreateBridgeERKN11webkit_glue20ResourceLoaderBridge11RequestInfoE
   fun:_ZN7content25WebKitPlatformSupportImpl20CreateResourceLoaderERKN11webkit_glue20ResourceLoaderBridge11RequestInfoE
   fun:_ZN11webkit_glue16WebURLLoaderImpl7Context5StartERKN6WebKit13WebURLRequestEPNS_20ResourceLoaderBridge16SyncLoadResponseEPNS_25WebKitPlatformSupportImplE
   fun:_ZN11webkit_glue16WebURLLoaderImpl18loadAsynchronouslyERKN6WebKit13WebURLRequestEPNS1_18WebURLLoaderClientE
   fun:_ZN7WebCore22ResourceHandleInternal5startENS_17StoredCredentialsE
   fun:_ZN7WebCore14ResourceHandle5startENS_17StoredCredentialsE
   fun:_ZN7WebCore14ResourceHandle6createERKNS_15ResourceRequestEPNS_20ResourceHandleClientEbbNS_17StoredCredentialsE
}
{
   bug_252228
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN2v88internal25FunctionCallbackArguments4CallEPFNS_6HandleINS_5ValueEEERKNS_9ArgumentsEE
   fun:_ZN2v88internalL19HandleApiCallHelperILb0EEEPNS0_11MaybeObjectENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   fun:_ZN2v88internalL25Builtin_implHandleApiCallENS0_12_GLOBAL__N_116BuiltinArgumentsILNS0_21BuiltinExtraArgumentsE1EEEPNS0_7IsolateE
   fun:_ZN2v88internalL21Builtin_HandleApiCallEiPPNS0_6ObjectEPNS0_7IsolateE
   ...
   fun:_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_Pb
   fun:_ZN2v88internal9Execution4CallENS0_6HandleINS0_6ObjectEEES4_iPS4_Pbb
}
{
   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
   Memcheck:Uninitialized
   fun:pthread_rwlock_init$UNIX2003
   fun:_ZN3re25MutexC2Ev
   fun:_ZN3re25MutexC1Ev
   ...
   fun:_ZN11leveldb_env19ParseMethodAndErrorEPKcPNS_8MethodIDEPi
   fun:_ZN7contentL21HistogramLevelDBErrorERKSsRKN7leveldb6StatusE
   fun:_ZN7content15LevelDBDatabase4OpenERKN4base8FilePathEPKNS_17LevelDBComparatorEPb
   fun:_ZN7content12_GLOBAL__N_139LevelDBDatabaseTest_CorruptionTest_Test8TestBodyEv
}
{
   bug_253797
   Memcheck:Uninitialized
   fun:_ZNSt11char_traitsIcE6lengthEPKc
   fun:_ZN4base8internal17StringPieceDetail*
   fun:_ZN4base16BasicStringPieceISsEC1EPKc
   fun:_ZN8autofill22AutofillQueryXmlParser13CharacterDataEPN4buzz15XmlParseContextEPKci
   fun:_ZN4buzz9XmlParser18ExpatCharacterDataEPKci
   fun:_ZN4buzzL21CharacterDataCallbackEPvPKci
   obj:*libexpat.so*
   obj:*libexpat.so*
   obj:*libexpat.so*
   obj:*libexpat.so*
   fun:XML_ParseBuffer
   fun:_ZN4buzz9XmlParser5ParseEPKcmb
   fun:_ZN8autofill12_GLOBAL__N_126AutofillQueryXmlParserTest13ParseQueryXMLERKSsb
   fun:_ZN8autofill12_GLOBAL__N_149AutofillQueryXmlParserTest_ParseAutofillFlow_Test8TestBodyEv
}
{
   bug_255718
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN4base4BindIMNS_12_GLOBAL__N_121PostTaskAndReplyRelayEFvvENS_8internal17UnretainedWrapperIS2_EEEENS_8CallbackINS5_9BindStateINS5_13FunctorTraitsIT_E12RunnableTypeENSC_7RunTypeEFvNS5_19CallbackParamTraitsIT0_E11StorageTypeEEE14UnboundRunTypeEEESB_RKSG_
   fun:_ZN4base8internal20PostTaskAndReplyImpl16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEESA_
   fun:_ZN4base10TaskRunner16PostTaskAndReplyERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEES9_
   fun:_ZN4base26PostTaskAndReplyWithResultIN5quota15QuotaStatusCodeES2_EEbPNS_10TaskRunnerERKN15tracked_objects8LocationERKNS_8CallbackIFT_vEEERKNS9_IFvT0_EEE
   fun:_ZN7fileapi21FileSystemQuotaClient16DeleteOriginDataERK4GURLN5quota11StorageTypeERKN4base8CallbackIFvNS4_15QuotaStatusCodeEEEE
   fun:_ZN5quota12QuotaManager17OriginDataDeleter3RunEv
   fun:_ZN5quota9QuotaTask5StartEv
   fun:_ZN5quota12QuotaManager16DeleteOriginDataERK4GURLNS_11StorageTypeEiRKN4base8CallbackIFvNS_15QuotaStatusCodeEEEE
   fun:_ZN7content12_GLOBAL__N_134ClearQuotaManagedOriginsOnIOThreadERK13scoped_refptrIN5quota12QuotaManagerEERKSt3setI4GURLSt4lessIS8_ESaIS8_EENS2_11StorageTypeE
   fun:_ZN7content12_GLOBAL__N_121ClearOriginOnIOThreadEjRK4GURLRK13scoped_refptrIN3net23URLRequestContextGetterEERKS4_IN5quota12QuotaManagerEE
}
{
   bug_258466
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN22ChromeBrowserMainParts25PreMainMessageLoopRunImplEv
   fun:_ZN22ChromeBrowserMainParts21PreMainMessageLoopRunEv
   fun:_ZN7content15BrowserMainLoop13CreateThreadsEv
   fun:_ZN7content21BrowserMainRunnerImpl10InitializeERKNS_18MainFunctionParamsE
   fun:_ZN7content11BrowserMainERKNS_18MainFunctionParamsE
   fun:_ZN7content23RunNamedProcessTypeMainERKSsRKNS_18MainFunctionParamsEPNS_19ContentMainDelegateE
   fun:_ZN7content21ContentMainRunnerImpl3RunEv
   fun:_ZN7content11ContentMainEiPPKcPNS_19ContentMainDelegateE
   fun:ChromeMain
}
{
   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_259188
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN7WebCore16V8PerIsolateData6createEPN2v87IsolateE
   fun:_ZN7WebCore16V8PerIsolateData17ensureInitializedEPN2v87IsolateE
   fun:_ZN6WebKit10initializeEPNS_8PlatformE
}
{
   bug_259303
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3IPC7Message23EnsureFileDescriptorSetEv
   fun:_ZN3IPC7Message19file_descriptor_setEv
   fun:_ZN3IPC7Channel11ChannelImpl24WillDispatchInputMessageEPNS_7MessageE
   fun:_ZN3IPC8internal13ChannelReader17DispatchInputDataEPKci
   fun:_ZN3IPC8internal13ChannelReader23ProcessIncomingMessagesEv
   fun:_ZN3IPC7Channel11ChannelImpl28OnFileCanReadWithoutBlockingEi
   fun:_ZN4base19MessagePumpLibevent21FileDescriptorWatcher28OnFileCanReadWithoutBlockingEiPS0_
   fun:_ZN4base19MessagePumpLibevent22OnLibeventNotificationEisPv
}
{
   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_259789
   Memcheck:Uninitialized
   fun:_ZN7WebCore12_GLOBAL__N_116adjustAttributesERKNS_17GraphicsContext3D10AttributesEPNS_8SettingsE
   fun:_ZN7WebCore21WebGLRenderingContext19maybeRestoreContextEPNS_5TimerIS0_EE
   fun:_ZN7WebCore5TimerINS_21WebGLRenderingContextEE5firedEv
   fun:_ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv
   fun:_ZN7WebCore12ThreadTimers16sharedTimerFiredEv
   fun:_ZN11webkit_glue25WebKitPlatformSupportImpl9DoTimeoutEv
}
{
   bug_259799
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6WebKit16EditorClientImpl23requestCheckingOfStringEN3WTF10PassRefPtrIN7WebCore19TextCheckingRequestEEE
   fun:_ZN7WebCore12SpellChecker13invokeRequestEN3WTF10PassRefPtrINS_17SpellCheckRequestEEE
   fun:_ZN7WebCore12SpellChecker18requestCheckingForEN3WTF10PassRefPtrINS_17SpellCheckRequestEEE
   fun:_ZN7WebCore6Editor40markAllMisspellingsAndBadGrammarInRangesEjPNS_5RangeES2_
   fun:_ZN7WebCore6Editor33markMisspellingsAfterTypingToWordERKNS_15VisiblePositionERKNS_16VisibleSelectionE
   fun:_ZN7WebCore13TypingCommand27markMisspellingsAfterTypingENS0_14ETypingCommandE
   fun:_ZN7WebCore13TypingCommand24typingAddedToOpenCommandENS0_14ETypingCommandE
   fun:_ZN7WebCore13TypingCommand28insertTextRunWithoutNewlinesERKN3WTF6StringEb
   fun:_ZNK7WebCore26TypingCommandLineOperationclEmmb
}
{
   bug_262875
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3sql10Connection18GetCachedStatementERKNS_11StatementIDEPKc
   ...
   fun:_ZN15webkit_database15DatabaseTracker23UpgradeToCurrentVersionEv
   fun:_ZN15webkit_database15DatabaseTracker8LazyInitEv
   fun:_ZN15webkit_database15DatabaseTracker23GetAllOriginIdentifiersEPSt6vectorISsSaISsEE
   fun:_ZN15webkit_database12_GLOBAL__N_120GetOriginsOnDBThreadEPNS_15DatabaseTrackerEPSt3setI4GURLSt4lessIS4_ESaIS4_EE
}
{
   bug_268258
   Memcheck:Leak
   fun:malloc
   fun:_ZN3WTF10fastMallocEm
   fun:_ZN3WTF10StringImpl12createStaticEPKcjj
   fun:_ZN7WebCore*Names*init*
}
{
   bug_268267
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK4base8internal18WeakReferenceOwner6GetRefEv
   fun:_ZN4base14WeakPtrFactoryINS_12_GLOBAL__N_16TargetEE10GetWeakPtrEv
   fun:_ZN4base45WeakPtrTest_MoveOwnershipAfterInvalidate_Test8TestBodyEv
}
{
  bug_268368
  Memcheck:Leak
  fun:calloc
  fun:_dlerror_run
  ...
  fun:_ZN4base17LoadNativeLibraryERKNS_8FilePathEPSs
  fun:_ZN7content10PluginList17ReadWebPluginInfoERKN4base8FilePathEPNS_13WebPluginInfoE
  fun:_ZN7content10PluginList14ReadPluginInfoERKN4base8FilePathEPNS_13WebPluginInfoE
}
{
   bug_269201
   Memcheck:Unaddressable
   ...
   fun:_ZN4base8internal17IncomingTaskQueue18AddToIncomingQueueERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEENS_9TimeDeltaEb
   fun:_ZN4base11MessageLoop8PostTaskERKN15tracked_objects8LocationERKNS_8CallbackIFvvEEE
   fun:_ZN8printing8PrintJob21UpdatePrintedDocumentEPNS_15PrintedDocumentE
   fun:_ZN8printing8PrintJob4StopEv
 }
