##----------------------------------------------------------------------## # Errors to suppress by default with glibc 2.3.x # Format of this file is: # { # name_of_suppression # tool_name:supp_kind # (optional extra info for some suppression types) # caller0 name, or /name/of/so/file.so # caller1 name, or ditto # (optionally: caller2 name) # (optionally: caller3 name) # } # # For Memcheck, the supp_kinds are: # # Param Value1 Value2 Value4 Value8 Value16 # Free Addr1 Addr2 Addr4 Addr8 Addr16 # Cond (previously known as Value0) # # and the optional extra info is: # if Param: name of system call param # if Free: name of free-ing fn) { __GI___stpcpy/* Memcheck:Cond fun:__GI___stpcpy fun:* } { strlen/__GI__dl_open/dlopen_doit Memcheck:Cond fun:strlen fun:__GI__dl_open fun:dlopen_doit } { strlen/_dl_signal_cerror/_dl_lookup_symbol_internal/do_dlsym Memcheck:Cond fun:_dl_signal_cerror fun:_dl_lookup_symbol_internal fun:do_dlsym } { strlen/*dl_map_object*(Cond) Memcheck:Cond fun:strlen fun:*dl_map_object* } { strlen/*dl_open_worker*(Cond) Memcheck:Cond fun:strlen fun:*dl_open_worker* } { strlen/_dl_sym/dlsym_doit Memcheck:Cond fun:strlen fun:_dl_sym fun:dlsym_doit } { realpath is inefficiently coded Memcheck:Overlap fun:memcpy fun:realpath* } { realpath stupidity part II Memcheck:Overlap fun:strcpy fun:realpath* } { strlen/decompose_rpath/_dl_map_object Memcheck:Cond fun:strlen fun:decompose_rpath fun:*dl_map_object* } { stpcpy/_dl_sym* Memcheck:Cond fun:__stpcpy fun:_dl_* } #-------- For R H 8.0 { elf_dynamic_do_rel.7/_dl_relocate_object_internal/dl_open_worker(Cond) Memcheck:Cond fun:elf_dynamic_do_rel.7 fun:_dl_relocate_object_internal fun:dl_open_worker } { dl_relocate/dl_open_worker Memcheck:Cond fun:_dl_relocate_object_internal fun:dl_open_worker } #-------- glibc 2.3.2/ Fedora Core 1 { dl_relocate/dl_main Memcheck:Cond fun:_dl_relocate_object_internal fun:dl_main } #-------- glibc 2.3.3/ Fedora Core 2 { dl_relocate_object/dl_main Memcheck:Cond fun:_dl_relocate_object fun:dl_main } { _dl_relocate_object/dl_open_worker Memcheck:Cond fun:_dl_relocate_object fun:dl_open_worker } #-------- glibc 2.3.4/ Fedora Core 3 { dl_relocate_object Memcheck:Cond fun:_dl_relocate_object } #-------- Data races { _dl_lookup_symbol_internal/fixup/_dl_runtime_resolve Helgrind:Eraser fun:_dl_lookup_symbol_internal fun:fixup fun:_dl_runtime_resolve } { _dl_lookup_symbol_x/fixup/_dl_runtime_resolve Helgrind:Eraser fun:_dl_lookup_symbol_x fun:fixup fun:_dl_runtime_resolve } { _dl_lookup_versioned_symbol_internal/fixup/_dl_runtime_resolve Helgrind:Eraser fun:_dl_lookup_versioned_symbol_internal fun:fixup fun:_dl_runtime_resolve } { _dl_lookup_versioned_symbol/ld-2.3.2.so/ld-2.3.2.so Helgrind:Eraser fun:_dl_lookup_versioned_symbol obj:/lib/ld-2.3.2.so obj:/lib/ld-2.3.2.so } { _dl_lookup_symbol/ld-2.3.2.so/ld-2.3.2.so Helgrind:Eraser fun:_dl_lookup_symbol obj:/lib/ld-2.3.2.so obj:/lib/ld-2.3.2.so } { _dl_fini Helgrind:Eraser fun:_dl_fini } { ld-2.3.2.so/exit/__libc_start_main Helgrind:Eraser obj:/lib/ld-2.3.2.so fun:exit fun:__libc_start_main } #-------- Threading bugs? # glibc 'knows' that destroying a locked mutex will unlock it { pthread_error/pthread_mutex_destroy/__closedir core:PThread fun:pthread_error fun:pthread_mutex_destroy fun:__closedir } { pthread_error/pthread_mutex_destroy/_IO_default_finish core:PThread fun:pthread_error fun:pthread_mutex_destroy fun:_IO_default_finish* } { pthread_mutex_unlock/_IO_funlockfile core:PThread fun:pthread_mutex_unlock fun:_IO_funlockfile } ##----------------------------------------------------------------------## ## Bugs in helper library supplied with Intel Icc 7.0 (65) ## in /opt/intel/compiler70/ia32/lib/libcxa.so.3 { Intel compiler70/ia32/lib/libcxa.so.3 below-esp accesses Memcheck:Addr4 obj:/opt/intel/compiler70/ia32/lib/libcxa.so.3 } ##----------------------------------------------------------------------## ## SuSE 9 after FV changes (post 2.1.0) { 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 } { Ugly strchr error in /lib/ld-2.3.2.so Memcheck:Cond obj:/lib/ld-2.3.2.so } ##----------------------------------------------------------------------## ## SuSE 9.1 with post 2.1.2 { Ugly strchr error in /lib/ld-2.3.3.so Memcheck:Cond obj:/lib/ld-2.3.3.so } ##----------------------------------------------------------------------## ## SuSE 9.1 with 3.0 branch (x86) { Strstr dubiousness in pthread_initialize Memcheck:Cond fun:strstr fun:pthread_initialize obj:/lib/libpthread.so.0 obj:/lib/libpthread.so.0 } ##----------------------------------------------------------------------## ## glibc-2.3.3 on FC2 ## Assumes that sysctl returns \0-terminated strings in is_smp_system #{ # Unterminated strstr string in is_smp_system() (NPTL) # Memcheck:Cond # fun:strstr # fun:__pthread_initialize_minimal # obj:/lib/tls/libpthread*.so* # obj:/lib/tls/libpthread*.so* #} #{ # Unterminated strstr string in is_smp_system() (LinuxThreads) # Memcheck:Cond # fun:strstr # fun:pthread_initialize # obj:/lib/i686/libpthread*.so* # obj:/lib/i686/libpthread*.so* #} #{ # Unterminated strstr string in is_smp_system() (LinuxThreads) # Memcheck:Cond # fun:strstr # fun:pthread_initialize # obj:/lib/libpthread-0.10.so # obj:/lib/libpthread-0.10.so #} ## Bug in PRE(sys_clone), really. Some args are not used. { LinuxThread clone use (parent_tidptr) Memcheck:Param clone(parent_tidptr) fun:clone fun:pthread_create } { LinuxThread clone use (child_tidptr) Memcheck:Param clone(child_tidptr) fun:clone fun:pthread_create } { LinuxThread clone use (tlsinfo) Memcheck:Param clone(tlsinfo) fun:clone fun:pthread_create } { LinuxThread clone use (parent_tidptr) Memcheck:Param clone(parent_tidptr) fun:clone fun:pthread_create@@GLIBC_2.1 } { LinuxThread clone use (child_tidptr) Memcheck:Param clone(child_tidptr) fun:clone fun:pthread_create@@GLIBC_2.1 } { LinuxThread clone use (tlsinfo) Memcheck:Param clone(tlsinfo) fun:clone fun:pthread_create@@GLIBC_2.1 } ## LinuxThreads manager writes messages containing undefined bytes { LinuxThreads: write/pthread_onexit_process Memcheck:Param write(buf) fun:pthread_onexit_process fun:exit } { LinuxThreads: write/pthread_join Memcheck:Param write(buf) fun:pthread_join } { LinuxThreads: write/pthread_create Memcheck:Param write(buf) fun:pthread_create@@GLIBC_2.1 } { LinuxThreads: write/__pthread_initialize_manager/pthread_create Memcheck:Param write(buf) fun:__pthread_initialize_manager fun:pthread_create@@GLIBC_2.1 } { LinuxThreads: write/pthread_create Memcheck:Param write(buf) fun:write fun:pthread_create } ## LinuxThreads leaks the stack and TLS data for the manager thread { LinuxThreads: leaks stack of manager thread Memcheck:Leak fun:malloc fun:__pthread_initialize_manager fun:pthread_create@@GLIBC_2.1 } { LinuxThreads: leaks TLS data for manager thread Memcheck:Leak fun:calloc fun:_dl_allocate_tls fun:__pthread_initialize_minimal } { LinuxThreads: leaks TLS data for manager thread Memcheck:Leak fun:memalign fun:_dl_allocate_tls fun:__pthread_initialize_minimal } ##----------------------------------------------------------------------## ## glibc-2.3.4 on FC3 ## Assumes that sysctl returns \0-terminated strings in is_smp_system #{ # Unterminated strstr string in is_smp_system() (NPTL) # Memcheck:Cond # fun:strstr # fun:__pthread_initialize_minimal # obj:/lib/tls/libpthread-2.3.4.so # obj:/lib/tls/libpthread-2.3.4.so #} #{ # Unterminated strstr string in is_smp_system() (NPTL) # Memcheck:Cond # fun:strstr # fun:__pthread_initialize_minimal # obj:/lib64/tls/libpthread*.so* #} ##----------------------------------------------------------------------## ## glibc-2.3.5 on FC4 ## Assumes that sysctl returns \0-terminated strings in is_smp_system #{ # Unterminated strstr string in is_smp_system() (NPTL) # Memcheck:Cond # fun:strstr # fun:__pthread_initialize_minimal # obj:*/libpthread-2.3.5.so # obj:*/libpthread-2.3.5.so #} ##----------------------------------------------------------------------## # # I don't know why this is needed, but still: { glibc-2.3.x-on-SuSE-10.0-(PPC)-1 Memcheck:Cond fun:_dl_start fun:_start } { glibc-2.3.x-on-SuSE-10.1-(PPC)-1 Memcheck:Cond fun:_dl_start_final fun:_dl_start fun:_start } { glibc-2.3.x-on-SuSE-10.0/10.1-(PPC)-2a Memcheck:Cond fun:index obj:*ld-2.3.*.so } { glibc-2.3.x-on-SuSE-10.0/10.1-(PPC)-2b Memcheck:Addr4 fun:index fun:expand_dynamic_string_token } { glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-2c Memcheck:Addr4 fun:index obj:*ld-2.3.*.so } { glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-3 Memcheck:Addr4 fun:*wordcopy_fwd_dest_aligned* fun:mem*cpy obj:*lib*2.3.*.so } ##----------------------------------------------------------------------## # Hacks pertaining to the fact that our intercept mechanism can't # always get hold of strlen early enough, due to idiocy in the low # level memory manager. ## HACK to do with strlen not being intercepted early enough { strlen-not-intercepted-early-enough-HACK-1 Memcheck:Addr4 fun:strlen fun:_dl_map_object_from_fd fun:_dl_map_object } { strlen-not-intercepted-early-enough-HACK-2 Memcheck:Addr4 fun:strlen fun:decompose_rpath fun:cache_rpath fun:_dl_map_object } { strlen-not-intercepted-early-enough-HACK-3 Memcheck:Cond fun:strlen fun:_dl_new_object fun:_dl_map_object_from_fd fun:_dl_map_object } { strlen-not-intercepted-early-enough-HACK-4 Memcheck:Cond fun:strlen fun:expand_dynamic_string_token fun:_dl_map_object } { strlen-not-intercepted-early-enough-HACK-5 Memcheck:Cond fun:strlen fun:fillin_rpath fun:_dl_init_paths } ## HACK to do with index not being intercepted early enough { index-not-intercepted-early-enough-HACK-1 Memcheck:Cond fun:index obj:* fun:_dl_map_object } { index-not-intercepted-early-enough-HACK-2 Memcheck:Cond fun:index fun:_dl_map_object obj:* fun:_dl_catch_error } { index-not-intercepted-early-enough-HACK-3 Memcheck:Cond fun:index fun:_dl_map_object obj:* fun:_dl_sysdep_start } { index-not-intercepted-early-enough-HACK-4 Memcheck:Cond fun:index fun:expand_dynamic_string_token } ##----------------------------------------------------------------------## ## MontaVista 3.1 on ppc32 integer only { MontaVista-3.1-ppc32-#1 Memcheck:Value4 obj:/lib/ld-2.3.2.so obj:/lib/ld-2.3.2.so fun:*dl_map_object* obj:/lib/libc-2.3.2.so } { MontaVista-3.1-ppc32-#2 Memcheck:Value4 fun:malloc obj:/lib/ld-2.3.2.so obj:/lib/ld-2.3.2.so obj:/lib/libc-2.3.2.so } { MontaVista-3.1-ppc32-#3 Memcheck:Value4 obj:/lib/ld-2.3.2.so obj:/lib/ld-2.3.2.so } ##----------------------------------------------------------------------## ## Ubuntu something (based on Debian 3.0?) on x86 { Ubuntu-stripped-ld.so Memcheck:Cond obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so }