# Probably this: https://bugzilla.redhat.com/show_bug.cgi?id=754026
{
   <glibc noai6ai_cached>
   Memcheck:Free
   fun:free
   fun:__libc_freeres
   fun:_vgnU_freeres
   fun:__run_exit_handlers
   fun:exit
}



# Custom suppressions added by @Pro

{
   osx_tmpfile_2
   Memcheck:Cond
   ...
   fun:find_temp_path
   ...
   fun:open_tmp_file
   ...
}
{
   osx_tmpfile_3
   Memcheck:Value8
   ...
   fun:find_temp_path
   ...
   fun:open_tmp_file
   ...
}
{
   osx_tmpfile_4
   Memcheck:Leak
   fun:malloc
   ...
   fun:find_temp_path
   ...
   fun:open_tmp_file
   ...
   fun:main
}
{
   osx_leak_1
   Memcheck:Leak
   ...
   fun:map_images_nolock
   fun:map_images
   ...
}



# Suppressions for Darwin 14.x / Mac OS X 10.10 Yosemite

# Source: https://raw.githubusercontent.com/svn2github/valgrind/master/darwin14.supp

############################################
## Leaks.  For other stuff see below.

{
   OSX1010:1-Leak
   Memcheck:Leak
   match-leak-kinds: possible
   fun:malloc_zone_?alloc
   ...
   fun:_read_images
}

#{
#   OSX1010:2-Leak
#   Memcheck:Leak
#   match-leak-kinds: definite
#   fun:?alloc
#   ...
#   fun:_ZN4dyld24initializeMainExecutableEv
#}

{
   OSX1010:3-Leak
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc_zone_?alloc
   fun:recursive_mutex_init
   ...
   fun:_os_object_init
   fun:libdispatch_init
   fun:libSystem_initializer
   ...
}

#{
#   OSX1010:4-Leak
#   Memcheck:Leak
#   match-leak-kinds: reachable
#   fun:malloc_zone_?alloc
#   ...
#   fun:dyld_register_image_state_change_handler
#   ...
#}

{
   OSX1010:5-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:?alloc
   ...
   fun:dyld_register_image_state_change_handler
   ...
}

{
   OSX1010:6-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc_zone_?alloc
   ...
   fun:map_images_nolock
   fun:map_images
   ...
}

{
   OSX1010:7-Leak
   Memcheck:Leak
   match-leak-kinds: possible
   fun:malloc_zone_?alloc
   ...
   fun:map_images_nolock
   fun:map_images
   ...
}

#{
#   OSX1010:8-Leak
#   Memcheck:Leak
#   match-leak-kinds: indirect
#   fun:?alloc
#   ...
#   fun:libSystem_initializer
#   ...
#}

{
   OSX1010:9-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc_zone_?alloc
   ...
   fun:libSystem_initializer
   ...
}

{
   OSX1010:10-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:?alloc
   ...
   fun:libSystem_initializer
   ...
}

#{
#   OSX1010:11-Leak
#   Memcheck:Leak
#   match-leak-kinds: definite
#   fun:malloc
#   fun:currentlocale
#}
#
#{
#   OSX1010:12-Leak
#   Memcheck:Leak
#   match-leak-kinds: possible
#   fun:malloc
#   fun:tzsetwall_basic
#   fun:_st_tzset_basic
#}

{
   OSX1010:13-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc_zone_memalign
   ...
   fun:_ZN4dyld24initializeMainExecutableEv
   ...
}

############################################
## Non-leak errors

##{
##   OSX1010:CoreFoundation-1
##   Memcheck:Cond
##   obj:*CoreFoundation.framework*CoreFoundation*
##   obj:*CoreFoundation.framework*CoreFoundation*
##   obj:*CoreFoundation.framework*CoreFoundation*
##}

{
   OSX1010:CoreFoundation-2
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

{
   OSX1010:CoreFoundation-3
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*Foundation.framework*Foundation*
}

{
   OSX1010:CoreFoundation-4
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

{
   OSX1010:CoreFoundation-5
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*HIServices.framework*HIServices*
}

{
   OSX1010:CoreFoundation-6
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*SystemConfiguration.framework*SystemConfiguration*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

{
   OSX1010:CoreFoundation-7
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*SystemConfiguration.framework*SystemConfiguration*
   obj:*CoreFoundation.framework*CoreFoundation*
}

{
   OSX1010:CoreFoundation-8
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*IOKit.framework*IOKit*
}

{
   OSX1010:CoreFoundation-9
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*Foundation.framework*Foundation*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1010:CoreFoundation-10
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1010:CoreFoundation-11
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*AE.framework*AE*
   obj:*AE.framework*AE*
}

{
   OSX1010:CoreFoundation-12
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1010:CoreFoundation-13
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*AE.framework*AE*
}

{
   OSX1010:AppKit-1
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1010:AppKit-2
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
   obj:*libdispatch.dylib*
}

#{
#   OSX1010:AppKit-3
#   Memcheck:Cond
#   obj:*AppKit.framework*AppKit*
#   obj:*libdispatch.dylib*
#   obj:*libdispatch.dylib*
#}

##{
##   OSX1010:AppKit-4
##   Memcheck:Cond
##   obj:*AppKit.framework*AppKit*
##   obj:*AppKit.framework*AppKit*
##   obj:*CoreFoundation.framework*CoreFoundation*
##}

{
   OSX1010:AppKit-5
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
   obj:*Foundation.framework*Foundation*
}

{
   OSX1010:AppKit-6
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*Foundation.framework*Foundation*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1010:AppKit-7
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

{
   OSX1010:AppKit-8
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*Foundation.framework*Foundation*
   obj:*Foundation.framework*Foundation*
}

{
   OSX1010:ColorSync-1
   Memcheck:Cond
   obj:*ColorSync.framework*ColorSync*
   obj:*ColorSync.framework*ColorSync*
   obj:*ColorSync.framework*ColorSync*
}

#{
#   OSX1010:ColorSync-2
#   Memcheck:Value8
#   obj:*ColorSync.framework*ColorSync*
#   obj:*ColorSync.framework*ColorSync*
#   obj:*ColorSync.framework*ColorSync*
#}

{
   OSX1010:CoreGraphics-1
   Memcheck:Cond
   obj:*CoreGraphics.framework*CoreGraphics*
   obj:*CoreGraphics.framework*CoreGraphics*
}

#{
#   OSX1010:CoreGraphics-2
#   Memcheck:Value8
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#}

{
   OSX1010:CoreGraphics-3
   Memcheck:Cond
   obj:*CoreGraphics.framework*CoreGraphics*
   obj:*CoreGraphics.framework*libRIP*
   obj:*CoreGraphics.framework*libRIP*
}

#{
#   OSX1010:CoreGraphics-4
#   Memcheck:Cond
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*libRIP*
#}

{
   OSX1010:CoreGraphics-5
   Memcheck:Cond
   obj:*CoreGraphics.framework*CoreGraphics*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

#{
#   OSX1010:CoreGraphics-6
#   Memcheck:Cond
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*HIToolbox.framework*HIToolbox*
#}

{
   OSX1010:HIServices-1
   Memcheck:Cond
   obj:*HIServices.framework*HIServices*
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1010:LaunchServices-1
   Memcheck:Cond
   obj:*LaunchServices.framework*LaunchServices*
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1010:LaunchServices-2
   Memcheck:Cond
   obj:*LaunchServices.framework*LaunchServices*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

{
   OSX1010:QuartzCore-1
   Memcheck:Cond
   obj:*QuartzCore.framework*QuartzCore
   obj:*QuartzCore.framework*QuartzCore
   obj:*QuartzCore.framework*QuartzCore
}

#{
#   OSX1010:vImage-1
#   Memcheck:Cond
#   obj:*vImage.framework*vImage*
#   obj:*vImage.framework*vImage*
#   obj:*CoreGraphics.framework*CoreGraphics*
#}

{
   OSX1010:zlib-C
   Memcheck:Cond
   obj:/usr/lib/libz.*dylib
   obj:/usr/lib/libz.*dylib
}

{
   OSX1010:zlib-8
   Memcheck:Value8
   obj:/usr/lib/libz.*dylib
   obj:/usr/lib/libz.*dylib
}

#{
#   OSX1010:32bit:_libxpc_initializer
#   Memcheck:Cond
#   fun:_libxpc_initializer
#   fun:libSystem_initializer
#   fun:*ImageLoaderMachO*doModInitFunctions*
#}

{
   OSX1010:dyld-1
   Memcheck:Cond
   fun:*ImageLoader*weakBind*
   fun:*ImageLoader*link*
   fun:*dyld*link*
}

{
   OSX1010:dyld-2
   Memcheck:Cond
   fun:exit
   obj:*libdyld*dylib*
}

{
   OSX1010:libsystem_kernel-1
   Memcheck:Cond
   obj:*libsystem_kernel*dylib*
   obj:*libsystem_kernel*dylib*
   obj:*CoreFoundation.framework*CoreFoundation*
}

{
   OSX1010:CoreServicesInternal-1
   Memcheck:Cond
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServices.framework*LaunchServices*
   obj:*CoreServices.framework*LaunchServices*
}

{
   OSX1010:CoreServicesInternal-2
   Memcheck:Cond
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
}

{
   OSX1010:CoreServicesInternal-3
   Memcheck:Cond
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreFoundation.framework*CoreFoundation*
}

{
   OSX1010:CoreServices-1
   Memcheck:Cond
   obj:*CoreServices.framework*LaunchServices*
   obj:*CoreServices.framework*LaunchServices*
   obj:*CoreServices.framework*LaunchServices*
}

##{
##   OSX1010:libsystem_pthread-1
##   Memcheck:Cond
##   obj:*libsystem_pthread*dylib*
##   obj:*ImageIO.framework*ImageIO*
##   obj:*ImageIO.framework*ImageIO*
##}

{
   OSX1010:ApplicationServices-1
   Memcheck:Cond
   obj:*ApplicationServices.framework*ATS*
   obj:*libsystem_pthread*dylib*
   obj:*libsystem_platform*dylib*
}

{
   OSX1010:HIToolbox-1
   Memcheck:Cond
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1010:RawCamera-1
   Memcheck:Cond
   obj:*RawCamera.bundle*RawCamera*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

##{
##   OSX1010:CoreImage-1
##   Memcheck:Cond
##   obj:*CoreImage.framework*CoreImage*
##   obj:*CoreImage.framework*CoreImage*
##   obj:*CoreImage.framework*CoreImage*
##}

##{
##   OSX1010:strncpy-1
##   Memcheck:Cond
##   fun:strncpy
##   obj:*CoreServicesInternal.framework*CoreServicesInternal
##   obj:*CoreServicesInternal.framework*CoreServicesInternal
##}

{
   OSX1010:pthread_rwlock_init
   Memcheck:Cond
   fun:pthread_rwlock_init
   obj:*ImageIO.framework*ImageIO*
   obj:*ImageIO.framework*ImageIO*
}

{
   OSX1010:CFBasicHash
   Memcheck:Value8
   fun:*CFBasicHash*
   fun:*CF*
}

{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-1-Addr8
   Memcheck:Addr8
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}
{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-1-Addr8
   Memcheck:Addr4
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}

{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-2-Addr8
   Memcheck:Addr8
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}
{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-2-Addr2
   Memcheck:Addr2
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}

{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-3-Addr8
   Memcheck:Addr8
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}
{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-3-Addr2
   Memcheck:Addr2
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}
{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-3-Addr1
   Memcheck:Addr1
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}

{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-4
   Memcheck:Addr8
   fun:*platform_bzero*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}

{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-6-Addr8
   Memcheck:Addr8
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}
{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-6-Addr4
   Memcheck:Addr4
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}

{
   OSX1010:AppleIntelHD4000GraphicsGLDriver-7
   Memcheck:Addr4
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}

{
   OSX1010:OSAtomicAdd32
   Memcheck:Addr4
   fun:*OSAtomicAdd32*
   obj:*IOAccelerator.framework*IOAccelerator*
   obj:*GPUSupport.framework*GPUSupportMercury*
}

{
   OSX1010:IOAccelerator-1
   Memcheck:Addr4
   obj:*IOAccelerator.framework*IOAccelerator*
   obj:*GPUSupport.framework*GPUSupportMercury*
}

{
   OSX1010:mach_msg_trap-1
   Memcheck:Param
   msg->desc.port.name
   fun:mach_msg_trap
   obj:*libsystem_kernel.dylib*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

{
   OSX1010:mach_msg_trap-2
   Memcheck:Param
   msg->desc.port.name
   fun:mach_msg_trap
   obj:*SystemConfiguration.framework*SystemConfiguration*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

# See https://bugs.kde.org/show_bug.cgi?id=188572 about this;  it's
# unavoidable due to BSD setenv() semantics.
{
   macos-__setenv-leak-see-our-bug-188572
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   fun:_owned_ptr_alloc
   fun:setenv
}

# See https://bugs.kde.org/show_bug.cgi?id=196528
{
macos-__pthread_rwlock_init-see-our-bug-196528
Memcheck:Cond
fun:pthread_rwlock_init
}
