# Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Suppress some common (not fatal) errors in system libraries found by valgrind
#
#
# Pthread doesn't free all thread specific memory before program exists
#
{
pthread allocate_tls memory loss
Memcheck:Leak
fun:calloc
fun:_dl_allocate_tls
fun:allocate_stack
fun:pthread_create*
}
{
pthread allocate_tls memory loss
Memcheck:Leak
fun:calloc
fun:_dl_allocate_tls
fun:pthread_create*
}
{
pthead_exit memory loss 1
Memcheck:Leak
fun:malloc
fun:_dl_new_object
fun:_dl_map_object_from_fd
}
{
pthread_exit memory loss 2
Memcheck:Leak
fun:malloc
fun:_dl_map_object
fun:dl_open_worker
}
{
pthread_exit memory loss 3
Memcheck:Leak
fun:malloc
fun:_dl_map_object_deps
fun:dl_open_worker
}
{
pthread_exit memory loss 4
Memcheck:Leak
fun:calloc
fun:_dl_check_map_versions
fun:dl_open_worker
}
{
pthread_exit memory loss 5
Memcheck:Leak
fun:calloc
fun:_dl_new_object
fun:_dl_map_object_from_fd
}
{
pthread allocate_dtv memory loss
Memcheck:Leak
fun:calloc
fun:allocate_dtv
fun:_dl_allocate_tls_storage
fun:__GI__dl_allocate_tls
fun:pthread_create
}
{
pthread allocate_dtv memory loss second
Memcheck:Leak
fun:calloc
fun:allocate_dtv
fun:_dl_allocate_tls
fun:pthread_create*
}
{
pthread memalign memory loss
Memcheck:Leak
fun:memalign
fun:_dl_allocate_tls_storage
fun:__GI__dl_allocate_tls
fun:pthread_create
}
{
pthread pthread_key_create
Memcheck:Leak
fun:malloc
fun:*
fun:*
fun:pthread_key_create
fun:my_thread_global_init
}
{
pthread strstr uninit
Memcheck:Cond
fun:strstr
obj:/lib/tls/libpthread.so.*
obj:/lib/tls/libpthread.so.*
fun:call_init
fun:_dl_init
obj:/lib/ld-*.so
}
{
pthread strstr uninit
Memcheck:Cond
fun:strstr
obj:/lib/tls/libpthread.so.*
obj:/lib/tls/libpthread.so.*
fun:call_init
fun:_dl_init
obj:/lib/ld-*.so
}
{
strlen/_dl_init_paths/dl_main/_dl_sysdep_start(Cond)
Memcheck:Cond
fun:strlen
fun:_dl_init_paths
fun:dl_main
fun:_dl_sysdep_start
}
{
pthread errno
Memcheck:Leak
fun:calloc
fun:_dlerror_run
fun:dlsym
fun:__errno_location
}
#
# Warnings in libz becasue it works with aligned memory(?)
#
{
libz tr_flush_block
Memcheck:Cond
fun:_tr_flush_block
fun:deflate_slow
fun:deflate
fun:do_flush
fun:gzclose
}
{
libz tr_flush_block2
Memcheck:Cond
fun:_tr_flush_block
fun:deflate_slow
fun:deflate
fun:compress2
}
{
libz longest_match
Memcheck:Cond
fun:longest_match
fun:deflate_slow
fun:deflate
}
{
libz deflate
Memcheck:Cond
obj:*/libz.so.*
obj:*/libz.so.*
fun:deflate
fun:compress2
}
{
libz deflate2
Memcheck:Cond
obj:*/libz.so.*
obj:*/libz.so.*
fun:deflate
obj:*/libz.so.*
fun:gzflush
}
{
libz deflate3
Memcheck:Cond
obj:*/libz.so.*
obj:*/libz.so.*
fun:deflate
fun:do_flush
}
{
libz deflate4
Memcheck:Param
write(buf)
fun:*
fun:my_write
fun:do_flush
fun:azclose
}
#
# Warning from my_thread_init becasue mysqld dies before kill thread exists
#
{
my_thread_init kill thread memory loss second
Memcheck:Leak
fun:calloc
fun:my_thread_init
fun:kill_server_thread
}
# Red Hat AS 4 32 bit
{
dl_relocate_object
Memcheck:Cond
fun:_dl_relocate_object
}
#
# Warning from my_thread_init becasue mysqld dies before kill thread exists
#
{
my_thread_init kill thread memory loss second
Memcheck:Leak
fun:calloc
fun:my_thread_init
fun:kill_server_thread
}
#
# Leaks reported in _dl_* internal functions on Linux amd64 / glibc2.3.2.
#
{
_dl_start invalid write8
Memcheck:Addr8
fun:_dl_start
}
{
_dl_start invalid write4
Memcheck:Addr4
fun:_dl_start
}
{
_dl_start/_dl_setup_hash invalid read8
Memcheck:Addr8
fun:_dl_setup_hash
fun:_dl_start
}
{
_dl_sysdep_start invalid write8
Memcheck:Addr8
fun:_dl_sysdep_start
}
{
_dl_init invalid write8
Memcheck:Addr8
fun:_dl_init
}
{
_dl_init invalid write4
Memcheck:Addr4
fun:_dl_init
}
{
_dl_init/_dl_init invalid read8
Memcheck:Addr8
fun:_dl_debug_initialize
fun:_dl_init
}
{
_dl_init/_dl_debug_state invalid read8
Memcheck:Addr8
fun:_dl_debug_state
fun:_dl_init
}
{
init invalid write8
Memcheck:Addr8
fun:init
}
{
fixup invalid write8
Memcheck:Addr8
fun:fixup
}
{
fixup/_dl_lookup_versioned_symbol invalid read8
Memcheck:Addr8
fun:_dl_lookup_versioned_symbol
fun:fixup
}
{
_dl_runtime_resolve invalid read8
Memcheck:Addr8
fun:_dl_runtime_resolve
}
{
__libc_start_main invalid write8
Memcheck:Addr8
fun:__libc_start_main
}
{
__libc_start_main/__sigjmp_save invalid write4
Memcheck:Addr4
fun:__sigjmp_save
fun:__libc_start_main
}
#
# These seem to be libc threading stuff, not related to MySQL code (allocations
# during pthread_exit()). Googling shows other projects also using these
# suppressions.
#
# Note that these all stem from pthread_exit() deeper in the call stack, but
# Valgrind only allows the top four calls in the suppressions.
#
{
libc pthread_exit 1
Memcheck:Leak
fun:malloc
fun:_dl_new_object
fun:_dl_map_object_from_fd
fun:_dl_map_object
}
{
libc pthread_exit 2
Memcheck:Leak
fun:malloc
fun:_dl_map_object
fun:dl_open_worker
fun:_dl_catch_error
}
{
libc pthread_exit 3
Memcheck:Leak
fun:malloc
fun:_dl_map_object_deps
fun:dl_open_worker
fun:_dl_catch_error
}
{
libc pthread_exit 4
Memcheck:Leak
fun:calloc
fun:_dl_check_map_versions
fun:dl_open_worker
fun:_dl_catch_error
}
{
libc pthread_exit 5
Memcheck:Leak
fun:calloc
fun:_dl_new_object
fun:_dl_map_object_from_fd
fun:_dl_map_object
}
{
libc pthread_exit 6
Memcheck:Leak
fun:malloc
fun:_dl_map_object
fun:openaux
fun:_dl_catch_error
}
{
libc pthread_exit 7
Memcheck:Leak
fun:malloc
fun:dl_open_worker
fun:_dl_catch_error
fun:_dl_open
}
{
libc pthread_exit 8
Memcheck:Leak
fun:malloc
fun:local_strdup
fun:_dl_map_object
fun:dl_open_worker
}
#
# This is seen internally in the system libraries on 64-bit RHAS3.
#
{
__lll_mutex_unlock_wake uninitialized
Memcheck:Param
futex(utime)
fun:__lll_mutex_unlock_wake
}
#
# BUG#19940: NDB sends uninitialized parts of field buffers across the wire.
# This is "works as designed"; the uninitialized part is not used at the
# other end (but Valgrind cannot see this).
#
{
bug19940
Memcheck:Param
socketcall.sendto(msg)
fun:send
fun:_ZN15TCP_Transporter6doSendEv
fun:_ZN19TransporterRegistry11performSendEv
fun:_ZN19TransporterRegistry14forceSendCheckEi
}
# Warning when printing stack trace (to suppress some not needed warnings)
#
{
vprintf on stacktrace
Memcheck:Cond
fun:vfprintf
fun:uffered_vfprintf
fun:vfprintf
fun:fprintf
fun:print_stacktrace
}
#
# Safe warnings, that may happen because of thread scheduling
#
{
dbug initialization by kill_server
Memcheck:Leak
fun:malloc
fun:DbugMalloc
fun:code_state
fun:_db_enter_
fun:kill_server
}
#
# Warning caused by small memory leak in threaded dlopen
#
{
dlopen threaded memory leak
Memcheck:Leak
fun:calloc
obj:*/libdl-*.so
fun:dlopen*
}
#
# Pthread doesn't free all thread specific memory before program exists
#
{
pthread allocate_tls memory loss in 2.6.1.
Memcheck:Leak
fun:calloc
obj:*/ld-*.so
fun:_dl_allocate_tls
fun:pthread_create*
}
{
buf_buddy_relocate peeking (space,page) in potentially free blocks
Memcheck:Addr1
fun:buf_buddy_relocate
}
#
# See related Bug#56666
# Race condition between the server main thread and the kill server thread.
#
# Because of this race condition, the call to shutdown_performance_schema()
# was commented in sql/mysqld.cc, causing the reported leaks.
#
{
missing shutdown_performance_schema 1a
Memcheck:Leak
fun:malloc
fun:_Z10pfs_mallocmi
}
{
missing shutdown_performance_schema 1b
Memcheck:Leak
fun:memalign
fun:posix_memalign
fun:_Z10pfs_mallocmi
}
{
missing shutdown_performance_schema 2
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_lf_alloc_new
fun:lf_hash_insert
}
#
# Note that initialize_bucket() is reccursive,
# can't provide more stack context.
#
{
missing shutdown_performance_schema 3a
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:initialize_bucket
}
{
missing shutdown_performance_schema 3b
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_lf_dynarray_lvalue
fun:initialize_bucket
}
{
missing shutdown_performance_schema 4
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_lf_dynarray_lvalue
fun:_lf_pinbox_get_pins
}
{
missing shutdown_performance_schema 5
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_lf_dynarray_lvalue
fun:lf_hash_insert
}
{
missing shutdown_performance_schema 6
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_lf_dynarray_lvalue
fun:lf_hash_delete
}
{
missing shutdown_performance_schema 7
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_lf_dynarray_lvalue
fun:lf_hash_search
}
{
missing shutdown_performance_schema 8
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_Z22add_pfs_instr_to_arrayPKcS0_
fun:mysqld_get_one_option
fun:my_handle_options
fun:handle_options
fun:_Z20handle_early_optionsv
}
{
missing shutdown_performance_schema 9
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:init_dynamic_array2
fun:_Z25init_pfs_instrument_arrayv
fun:_Z11mysqld_mainiPPc
fun:main
}
{
missing shutdown_performance_schema 9a
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:_Z22add_pfs_instr_to_arrayPKcS0_
fun:mysqld_get_one_option
fun:my_handle_options
fun:_Z20handle_early_optionsv
fun:_Z11mysqld_mainiPPc
}
# Same as shutdown_performance_schema 9,
# but the compiler/linker can sometime change the
# calls from:
# main()
# --> init_pfs_instrument_array()
# --> init_dynamic_array2()
# to:
# main()
# --> init_dynamic_array2()
# when building with optimizations.
{
missing shutdown_performance_schema 10
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:init_dynamic_array2
fun:_Z11mysqld_mainiPPc
fun:main
}
{
missing shutdown_performance_schema 11
Memcheck:Leak
fun:malloc
fun:my_malloc
fun:init_dynamic_array2
fun:_Z11mysqld_mainiPPc
fun:(below main)
}
{
Bug 59874 Valgrind warning in InnoDB compression code
Memcheck:Cond
fun:*
fun:*
fun:deflate
fun:btr_store_big_rec_extern_fields_func
fun:row_ins_index_entry_low
fun:row_ins_index_entry
fun:row_ins_index_entry_step
fun:row_ins
fun:row_ins_step
fun:row_insert_for_mysql
}
{
In page0zip.c we have already checked that the memory is initialized before calling deflate()
Memcheck:Cond
fun:*
fun:*
fun:deflate
fun:page_zip_compress
}
{
In page0zip.c we have already checked that the memory is initialized before calling deflate()
Memcheck:Cond
fun:*
fun:*
fun:deflate
fun:page_zip_compress_deflate
}
{
In page0zip.c we have already checked that the memory is initialized before calling deflate()
Memcheck:Cond
obj:*/libz.so*
obj:*/libz.so*
fun:deflate
fun:page_zip_compress
fun:page_zip_reorganize
fun:page_cur_insert_rec_zip_reorg
fun:page_cur_insert_rec_zip
fun:page_cur_tuple_insert
fun:btr_cur_optimistic_insert
fun:btr_cur_pessimistic_insert
fun:row_ins_index_entry_low
fun:row_ins_index_entry
fun:row_ins_index_entry_step
fun:row_ins
fun:row_ins_step
fun:row_insert_for_mysql
}
{
In page0zip.c we have already checked that the memory is initialized before calling deflate()
Memcheck:Cond
obj:*/libz.so*
obj:*/libz.so*
fun:deflate
fun:page_zip_compress
fun:page_zip_reorganize
fun:page_cur_insert_rec_zip_reorg
fun:page_cur_insert_rec_zip
fun:page_cur_tuple_insert
fun:btr_cur_optimistic_insert
fun:row_ins_index_entry_low
fun:row_ins_index_entry
fun:row_ins_index_entry_step
fun:row_ins
fun:row_ins_step
fun:row_insert_for_mysql
}
{
In page0zip.c we have already checked that the memory is initialized before calling deflate()
Memcheck:Cond
obj:*/libz.so*
obj:*/libz.so*
fun:deflate
fun:page_zip_compress
fun:page_copy_rec_list_end
fun:page_move_rec_list_end
fun:btr_page_split_and_insert
fun:btr_root_raise_and_insert
fun:btr_cur_pessimistic_insert
fun:row_ins_index_entry_low
fun:row_ins_index_entry
fun:row_ins_index_entry_step
fun:row_ins
fun:row_ins_step
fun:row_insert_for_mysql
}
{
In page0zip.c we have already checked that the memory is initialized before calling deflate()
Memcheck:Cond
obj:*/libz.so*
obj:*/libz.so*
fun:deflate
fun:page_zip_compress
fun:page_cur_insert_rec_zip_reorg
fun:page_cur_insert_rec_zip
fun:page_cur_tuple_insert
fun:btr_cur_optimistic_insert
fun:btr_cur_pessimistic_insert
fun:row_ins_index_entry_low
fun:row_ins_index_entry
fun:row_ins_index_entry_step
fun:row_ins
fun:row_ins_step
fun:row_insert_for_mysql
}
{
Bug 59875 Valgrind warning in buf0buddy.c
Memcheck:Addr1
fun:mach_read_from_4
fun:buf_buddy_relocate
fun:buf_buddy_free_low
fun:buf_buddy_free
}
# Note the wildcard in the (mangled) function signatures of
# write_keys() and find_all_keys().
# They both return ha_rows, which is platform dependent.
#
# The '...' wildcards are for 'fun:inline_mysql_file_write' which *may*
# be inlined.
{
Bug#12856915 VALGRIND FAILURE IN FILESORT/CREATE_SORT_INDEX / one
Memcheck:Param
write(buf)
...
fun:my_b_flush_io_cache
fun:_my_b_write
fun:_Z*10write_keysP10Sort_paramP13Filesort_infojP11st_io_cacheS4_
...
fun:_Z8filesortP3THDP5TABLEP8FilesortbPyS5_
}
{
Bug#12856915 VALGRIND FAILURE IN FILESORT/CREATE_SORT_INDEX / two
Memcheck:Param
write(buf)
...
fun:my_b_flush_io_cache
fun:_Z15merge_many_buffP10Sort_paramPhP10st_buffpekPjP11st_io_cache
fun:_Z8filesortP3THDP5TABLEP8FilesortbPyS5_
}
{
Bug#12856915 VALGRIND FAILURE IN FILESORT/CREATE_SORT_INDEX / three
Memcheck:Param
write(buf)
...
fun:my_b_flush_io_cache
fun:_Z8filesortP3THDP5TABLEP8FilesortbPyS5_
}
{
Bug#12856915 VALGRIND FAILURE IN FILESORT/CREATE_SORT_INDEX / four
Memcheck:Param
write(buf)
...
fun:my_b_flush_io_cache
fun:_my_b_write
fun:_Z*10write_keysP10Sort_paramP13Filesort_infojP11st_io_cacheS4_
fun:_Z8filesortP3THDP5TABLEP8FilesortbPyS5_
}
{
OpenSSL still reachable.
Memcheck:Leak
fun:malloc
fun:CRYPTO_malloc
fun:sk_new
...
fun:SSL_COMP_get_compression_methods
fun:SSL_library_init
}
{
OpenSSL still reachable.
Memcheck:Leak
fun:malloc
fun:CRYPTO_malloc
fun:engine_cleanup_add_last
fun:ENGINE_add
}
{
OpenSSL still reachable.
Memcheck:Leak
fun:malloc
fun:CRYPTO_malloc
fun:sk_new
fun:engine_cleanup_add_last
fun:ENGINE_add
}
{
OpenSSL still reachable.
Memcheck:Leak
fun:malloc
fun:CRYPTO_malloc
fun:ENGINE_new
}
{
BUG#14801497 CONDITIONAL JUMP OR MOVE DEPENDS ON UNINITIALISED VALUE(S) IN CREATE_TMP_TABLE
Memcheck:Cond
fun:_Z16create_tmp_tableP3THDP15TMP_TABLE_PARAMR4ListI4ItemEP8st_orderbbyyPKc
fun:_Z19create_schema_tableP3THDP10TABLE_LIST
fun:_Z18mysql_schema_tableP3THDP3LEXP10TABLE_LIST
...
fun:_Z11open_tablesP3THDPP10TABLE_LISTPjjP19Prelocking_strategy
fun:_Z20open_and_lock_tablesP3THDP10TABLE_LISTbjP19Prelocking_strategy
fun:_Z20open_and_lock_tablesP3THDP10TABLE_LISTbj
fun:_Z21mysql_execute_commandP3THD
fun:_Z11mysql_parseP3THDPcjP12Parser_state
fun:_Z16dispatch_command19enum_server_commandP3THDPcj
fun:_Z24do_handle_one_connectionP3THD
fun:handle_one_connection
fun:pfs_spawn_thread
}
{
Bug#16039908 "BYTES STILL REACHABLE" IN VALGRIND TEST ON 5.6/TRUNK
Memcheck:Leak
fun:calloc
fun:_dlerror_run
fun:dlclose
fun:_ZL15free_plugin_memP12st_plugin_dl
fun:_ZL13plugin_dl_delPK19st_mysql_lex_string
fun:_ZL10plugin_delP13st_plugin_int
fun:_ZL12reap_pluginsv
fun:_Z15plugin_shutdownv
fun:_ZL8clean_upb
fun:_Z10unireg_endv
fun:_ZL11kill_serverPv
fun:kill_server_thread
}
{
Bug#25391948 RPL_CHECK_GTID TEST FAILS SPORADICALLY ON PB2 - WEEKLY-5.6 FOR LINUX-VALGRIND
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
fun:_dl_close_worker
fun:_dl_close
fun:_dl_catch_error
fun:__libc_dlclose
...
}
{
Bug#25391948 RPL_CHECK_GTID TEST FAILS SPORADICALLY ON PB2 - WEEKLY-5.6 FOR LINUX-VALGRIND
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:dl_open_worker
fun:_dl_catch_error
fun:_dl_open
fun:do_dlopen
fun:_dl_catch_error
fun:__libc_dlopen_mode
...
}
#Suppress warnings from glibc implementation of 'malloc_info'
{
Malloc_info uninitialised value of size 8
Memcheck:Value8
fun:_itoa_word
fun:vfprintf
fun:fprintf
fun:mi_arena.*
fun:malloc_info
}
{
Malloc_info conditional jump depends on uninitialised values
Memcheck:Cond
...
fun:mi_arena.*
fun:malloc_info
}
#supress warnings from openssl
{
OpenSSL PB2 / 1
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
fun:CRYPTO_malloc
fun:sk_new
fun:SSL_COMP_get_compression_methods
fun:SSL_library_init
fun:ssl_start
fun:_Z8init_sslv
fun:_Z11mysqld_mainiPPc
fun:main
}
{
OpenSSL PB2 / 2
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
fun:CRYPTO_malloc
fun:sk_new
fun:SSL_COMP_get_compression_methods
fun:SSL_library_init
fun:ssl_start
fun:_ZL8init_sslv
fun:_Z11mysqld_mainiPPc
fun:main
}
{
OpenSSL libstdc++ version 5 / three
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
obj:*/libstdc++.so*
fun:call_init.part.0
fun:call_init
fun:_dl_init
}
{
Memory leak in dlerror
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
fun:vasprintf
fun:asprintf
fun:dlerror
}