#
# avoid false alarms from valgrind
# 
#  
# use with:
#
# valgrind \
#  -v \
#  --gen-suppressions=all \
#  --suppressions=./CMake/Slicer3ValgrindSuppressions.supp                            \
#  --suppressions=../Slicer3-lib/VTK/CMake/VTKValgrindSuppressions.supp               \
#  --suppressions=../Slicer3-lib/KWWidgets/CMake/KWWidgetsValgrindSuppressions.supp   \
#  --suppressions=../Slicer3-lib/Insight/CMake/InsightValgrind.supp                   \
#  --suppressions=../Slicer3-lib/Insight/Utilities/gdcm/CMake/gdcmValgrind.supp       \
#  --suppressions=../Slicer3-lib/Insight/Utilities/vxl/config/valgrind.supp           \
#  ../Slicer3-build/bin/Slicer3-real |& tee /tmp/slicerval
#
# or, on one line for easy cut and paste:
#
#   valgrind -v --gen-suppressions=all --suppressions=./CMake/Slicer3ValgrindSuppressions.supp --suppressions=../Slicer3-lib/VTK/CMake/VTKValgrindSuppressions.supp --suppressions=../Slicer3-lib/KWWidgets/CMake/KWWidgetsValgrindSuppressions.supp --suppressions=../Slicer3-lib/Insight/CMake/InsightValgrind.supp --suppressions=../Slicer3-lib/Insight/Utilities/gdcm/CMake/gdcmValgrind.supp --suppressions=../Slicer3-lib/Insight/Utilities/vxl/config/valgrind.supp ../Slicer3-build/bin/Slicer3-real --no-modules | & tee /tmp/slicerval
#
# add --leak-check=full to get report on leaks (not as useful as the VTK leak tool)
# 
#
# vi map command to copy suppressions from slicerval to this file 
# when they are both open with a split pane (not to re-escape controls)
#  map ; y%^Ww:$^Ma^M^[p^Ww
#
# Memory leak suppressions
#
{
   <XimOpen>
   Memcheck:Leak
   fun:malloc
   fun:_XimOpenIM
   fun:TkpOpenDisplay
}
{
   <X locale modifiers>
   Memcheck:Leak
   fun:malloc
   fun:_XlcDefaultMapModifiers
   fun:XSetLocaleModifiers
}
{
   <X11 open>
   Memcheck:Leak
   fun:malloc
   obj:/usr/lib64/libX11.so.6.2.0
   obj:/usr/lib64/libX11.so.6.2.0
   fun:_X11TransConnectDisplay
   fun:XOpenDisplay
}
{
   <kw registry>
   Memcheck:Leak
   fun:_Znam
   fun:_ZN27vtkKWMostRecentFilesManager14SetRegistryKeyEPKc
   fun:_ZN27vtkKWMostRecentFilesManagerC1Ev
}
{
   <kw script ext>
   Memcheck:Leak
   fun:_Znam
   fun:_ZN15vtkKWWindowBase18SetScriptExtensionEPKc
   fun:_ZN15vtkKWWindowBaseC2Ev
}
{
   <X local>
   Memcheck:Leak
   fun:malloc
   obj:/usr/lib64/libX11.so.6.2.0
   obj:/usr/lib64/libX11.so.6.2.0
   fun:_XlcCreateLC
   fun:_XlcUtf8Loader
   fun:_XOpenLC
   fun:_XlcCurrentLC
   fun:XSetLocaleModifiers
}
{
   <kww allocate>
   Memcheck:Leak
   fun:_Znwm
   fun:_ZN9__gnu_cxx13new_allocatorIP15vtkKWWindowBaseE8allocateEmPKv
   fun:_ZNSt12_Vector_baseIP15vtkKWWindowBaseSaIS1_EE11_M_allocateEm
   fun:_ZNSt6vectorIP15vtkKWWindowBaseSaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_
   fun:_ZNSt6vectorIP15vtkKWWindowBaseSaIS1_EE9push_backERKS1_
   fun:_ZN16vtkKWApplication9AddWindowEP15vtkKWWindowBase
}
{
   <X Open>
   Memcheck:Leak
   fun:malloc
   fun:_XimOpenIM
   fun:TkpOpenDisplay
   fun:CreateTopLevelWindow
}
{
   <vtk vector text>
   Memcheck:Leak
   fun:_Znam
   fun:_ZN13vtkVectorText7SetTextEPKc
}
{
   <X locale>
   Memcheck:Leak
   fun:malloc
   fun:_XlcCreateLC
   fun:_XlcUtf8Loader
   fun:_XOpenLC
   fun:_XlcCurrentLC
   fun:XSetLocaleModifiers
}
{
   <kww window class>
   Memcheck:Leak
   fun:_Znam
   fun:_ZN13vtkKWTopLevel14SetWindowClassEPKc
   fun:_ZN15vtkKWWindowBaseC2Ev
   fun:_ZN11vtkKWWindowC2Ev
}
{
   <X open display>
   Memcheck:Leak
   fun:malloc
   fun:_X11TransConnectDisplay
   fun:XOpenDisplay
}
{
   <X intersect region>
   Memcheck:Leak
   fun:malloc
   obj:/usr/lib64/libX11.so.6.2.0
   fun:XIntersectRegion
   fun:ImgPhotoSetSize
   fun:Tk_PhotoSetSize
   fun:_ZN16vtkKWTkUtilities11UpdatePhotoEP10Tcl_InterpPKcPKhiiimi
}
{
   <kww text>
   Memcheck:Leak
   fun:_Znwm
   fun:_ZN9vtkKWTextC1Ev
   fun:_ZN9vtkKWText3NewEv
   fun:_ZN23vtkKWTextWithScrollbarsC1Ev
}
{
   <vtk text mapper>
   Memcheck:Leak
   fun:_Znam
   fun:_ZN13vtkTextMapper8SetInputEPKc
   fun:_ZN19vtkCornerAnnotation11TextReplaceEP13vtkImageActorP30vtkImageMapToWindowLevelColors
}
{
   <kww recent files>
   Memcheck:Leak
   fun:_Znwm
   fun:_ZN27vtkKWMostRecentFilesManagerC1Ev
   fun:_ZN27vtkKWMostRecentFilesManager3NewEv
   fun:_ZN15vtkKWWindowBaseC2Ev
}
#
#
# general access supressions
#
{
   <tcl delete hash>
   Memcheck:Value8
   fun:Tcl_DeleteHashEntry
}
{
   <tcl compare keys>
   Memcheck:Cond
   fun:CompareArrayKeys
}
{
   <tcl create hash>
   Memcheck:Value8
   fun:Tcl_CreateHashEntry
}
{
   <kww background>
   Memcheck:Cond
   fun:_ZN17vtkKWRenderWidget26SetRendererBackgroundColorEddd
}
{
   <tk frame>
   Memcheck:Cond
   fun:FrameWidgetObjCmd
}
{
   <X11 write>
   Memcheck:Param
   writev(vector[...])
   fun:writev
   obj:/usr/lib64/libX11.so.6.2.0
}
{
   <X11 pthread>
   Memcheck:Param
   write(buf)
   obj:/lib64/libpthread-2.4.so
   obj:/usr/lib64/libX11.so.6.2.0
}
{
   <tk create frame>
   Memcheck:Cond
   fun:CreateFrame
}
{
   <strtod >
   Memcheck:Cond
   fun:____strtod_l_internal
   fun:Tcl_GetDouble
}
{
   <strlen>
   Memcheck:Cond
   fun:strlen
   fun:_ZNSsaSEPKc
   fun:_ZN19vtkKWOptionDataBase8AddEntryEPKcS1_S1_
}
{
   <tcl evalex>
   Memcheck:Cond
   fun:Tcl_EvalEx
   fun:Tcl_Eval
   fun:Tcl_GlobalEval
   fun:_ZN16vtkKWTkUtilities28EvaluateSimpleStringInternalEP10Tcl_InterpP9vtkObjectPKc
}
{
   <printf>
   Memcheck:Cond
   fun:__mpn_extract_double
   fun:__printf_fp
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   fun:_ZN19vtkKWOptionDataBase17AddEntryAsDouble3EPKcS1_ddd
}
{
   <printf>
   Memcheck:Cond
   fun:__printf_fp
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   fun:_ZN19vtkKWOptionDataBase17AddEntryAsDouble3EPKcS1_ddd
}
{
   <printf>
   Memcheck:Cond
   fun:strnlen
   fun:mbsnrtowcs
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   fun:Tcl_LogCommandInfo
   fun:TclExecuteByteCode
   fun:TclCompEvalObj
   fun:Tcl_EvalObjEx
   fun:Tcl_CatchObjCmd
   fun:TclEvalObjvInternal
   fun:Tcl_EvalEx
}
{
   <printf>
   Memcheck:Cond
   fun:__gconv_transform_utf8_internal
   fun:mbsnrtowcs
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   fun:Tcl_LogCommandInfo
   fun:TclExecuteByteCode
   fun:TclCompEvalObj
   fun:Tcl_EvalObjEx
   fun:Tcl_CatchObjCmd
   fun:TclEvalObjvInternal
   fun:Tcl_EvalEx
}
{
   <printf>
   Memcheck:Cond
   fun:mbsnrtowcs
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   fun:Tcl_LogCommandInfo
   fun:TclExecuteByteCode
   fun:TclCompEvalObj
   fun:Tcl_EvalObjEx
   fun:Tcl_CatchObjCmd
   fun:TclEvalObjvInternal
   fun:Tcl_EvalEx
   fun:Tcl_Eval
}
{
   <slicer set color>
   Memcheck:Cond
   fun:_ZN14vtkSlicerColor8SetColorEPdddd
   fun:_ZN14vtkSlicerColor8SetColorEPdS0_
}
{
   <slicer set color palette>
   Memcheck:Cond
   fun:_ZN14vtkSlicerColor8SetColorEPdddd
   fun:_ZN14vtkSlicerColor25DefineDefaultColorPaletteEv
}
{
   <socket sendto>
   Memcheck:Param
   socketcall.sendto(msg)
   fun:send
   fun:get_mapping
   fun:__nscd_get_map_ref
   fun:__nscd_getai
   fun:gaih_inet
   fun:getaddrinfo
   obj:/usr/lib64/libX11.so.6.2.0
   fun:_X11TransConnect
   fun:_X11TransConnectDisplay
   fun:XOpenDisplay
   fun:TkpOpenDisplay
   fun:CreateTopLevelWindow
}

{
   <X11 strcpy>
   Memcheck:Addr8
   fun:__strcpy_chk
   obj:/usr/lib64/libX11.so.6.2.0
   obj:/usr/lib64/libX11.so.6.2.0
}
{
   <tcl parse braces>
   Memcheck:Value8
   fun:Tcl_ParseBraces
   fun:Tcl_ParseCommand
   fun:Tcl_EvalEx
   fun:Tcl_Eval
   fun:Tcl_GlobalEval
   fun:_ZN16vtkKWTkUtilities28EvaluateSimpleStringInternalEP10Tcl_InterpP9vtkObjectPKc
}
{
   <tcl parse tokens>
   Memcheck:Value8
   fun:ParseTokens
   fun:Tcl_ParseCommand
   fun:TclCompileScript
   fun:TclSetByteCodeFromAny
   fun:SetByteCodeFromAny
   fun:TclCompEvalObj
   fun:Tcl_EvalObjEx
   fun:Tcl_CatchObjCmd
   fun:TclEvalObjvInternal
   fun:Tcl_EvalEx
   fun:Tcl_Eval
   fun:Tcl_GlobalEval
}
{
   <tcl register literal>
   Memcheck:Value8
   fun:TclRegisterLiteral
   fun:TclCompileScript
}
{
   <tcl add literal>
   Memcheck:Value8
   fun:AddLocalLiteralEntry
   fun:TclRegisterLiteral
   fun:TclCompileScript
   fun:TclSetByteCodeFromAny
}
{
   <tcl register literal>
   Memcheck:Cond
   fun:TclRegisterLiteral
   fun:TclCompileScript
}
{
   <printf>
   Memcheck:Cond
   fun:strnlen
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   fun:Tcl_LogCommandInfo
   fun:TclExecuteByteCode
   fun:TclCompEvalObj
   fun:Tcl_EvalObjEx
   fun:Tcl_CatchObjCmd
   fun:TclEvalObjvInternal
   fun:Tcl_EvalEx
   fun:Tcl_Eval
}
{
   <tcl new string>
   Memcheck:Cond
   fun:Tcl_NewStringObj
   fun:Tcl_AddObjErrorInfo
   fun:Tcl_LogCommandInfo
   fun:TclExecuteByteCode
   fun:TclCompEvalObj
   fun:Tcl_EvalObjEx
   fun:Tcl_CatchObjCmd
   fun:TclEvalObjvInternal
   fun:Tcl_EvalEx
   fun:Tcl_Eval
   fun:Tcl_GlobalEval
   fun:_ZN16vtkKWTkUtilities28EvaluateSimpleStringInternalEP10Tcl_InterpP9vtkObjectPKc
}
{
   <tcl release literal>
   Memcheck:Value8
   fun:TclReleaseLiteral
   fun:TclCleanupByteCode
   fun:FreeByteCodeInternalRep
   fun:TclFreeObj
   fun:Tcl_EvalEx
   fun:Tcl_Eval
   fun:Tcl_GlobalEval
   fun:_ZN16vtkKWTkUtilities28EvaluateSimpleStringInternalEP10Tcl_InterpP9vtkObjectPKc
}
{
   <X11 pthread write>
   Memcheck:Param
   write(buf)
   obj:/lib64/libpthread-2.4.so
   obj:/usr/lib64/libX11.so.6.2.0
   obj:/usr/lib64/libX11.so.6.2.0
   fun:_XReply
   fun:_XGetWindowAttributes
   fun:XGetWindowAttributes
   obj:/usr/lib64/libX11.so.6.2.0
   fun:_XimSetICDefaults
   fun:_XimSetICDefaults
   fun:_XimLocalCreateIC
   fun:XCreateIC
   fun:Tk_HandleEvent
}
{
   <printf_fp>
   Memcheck:Cond
   fun:__printf_fp
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   fun:_ZN19vtkKWOptionDataBase17AddEntryAsDouble3EPKcS1_ddd
   fun:_ZN19vtkKWOptionDataBase17AddEntryAsDouble3EPKcS1_Pd
   fun:_ZN14vtkSlicerTheme7InstallEv
   fun:_ZN16vtkKWApplication8SetThemeEP10vtkKWTheme
   fun:_Z12Slicer3_mainiPPc
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:strlen
   fun:fillin_rpath
   fun:_dl_init_paths
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib64/ld-2.6.so
   obj:*
   obj:*
   obj:*
   obj:*
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib64/ld-2.6.so
   obj:*
   obj:*
   obj:*
   obj:*
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib64/ld-2.6.so
   obj:*
   obj:*
   obj:*
   obj:*
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib64/ld-2.6.so
   obj:*
   obj:*
   obj:*
   obj:*
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib64/ld-2.6.so
   obj:*
   obj:*
   obj:*
   obj:*
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
   fun:TclpDlopen
   fun:Tcl_FSLoadFile
   fun:Tcl_LoadObjCmd
   fun:TclEvalObjvInternal
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
   fun:TclpDlopen
   fun:Tcl_FSLoadFile
   fun:Tcl_LoadObjCmd
   fun:TclEvalObjvInternal
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
   fun:TclpDlopen
   fun:Tcl_FSLoadFile
   fun:Tcl_LoadObjCmd
   fun:TclEvalObjvInternal
}
{
   <insert a suppression name here>
   Memcheck:Param
   write(buf)
   obj:/lib64/libpthread-2.6.so
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_ZN25vtkSlicerImageCrossHair2D13SetShowCursorEi
   fun:_ZN25vtkSlicerImageCrossHair2D12ShowCursorOnEv
   fun:_ZN25vtkSlicerImageCrossHair2DC1Ev
   fun:_ZN25vtkSlicerImageCrossHair2D3NewEv
   fun:_ZN23vtkSlicerViewControlGUI8BuildGUIEP10vtkKWFrame
   fun:_ZN23vtkSlicerApplicationGUI8BuildGUIEv
   fun:_Z12Slicer3_mainiPPc
   fun:main
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_ZN25vtkSlicerImageCrossHair2D17SetIntersectCrossEi
   fun:_ZN25vtkSlicerImageCrossHair2D17IntersectCrossOffEv
   fun:_ZN25vtkSlicerImageCrossHair2DC1Ev
   fun:_ZN25vtkSlicerImageCrossHair2D3NewEv
   fun:_ZN23vtkSlicerViewControlGUI8BuildGUIEP10vtkKWFrame
   fun:_ZN23vtkSlicerApplicationGUI8BuildGUIEv
   fun:_Z12Slicer3_mainiPPc
   fun:main
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_ZN25vtkSlicerImageCrossHair2D11SetBullsEyeEi
   fun:_ZN25vtkSlicerImageCrossHair2D11BullsEyeOffEv
   fun:_ZN25vtkSlicerImageCrossHair2DC1Ev
   fun:_ZN25vtkSlicerImageCrossHair2D3NewEv
   fun:_ZN23vtkSlicerViewControlGUI8BuildGUIEP10vtkKWFrame
   fun:_ZN23vtkSlicerApplicationGUI8BuildGUIEv
   fun:_Z12Slicer3_mainiPPc
   fun:main
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_ZN25vtkSlicerImageCrossHair2D17SetIntersectCrossEi
   fun:_ZN25vtkSlicerImageCrossHair2D17IntersectCrossOffEv
   fun:_ZN23vtkSlicerViewControlGUI8BuildGUIEP10vtkKWFrame
   fun:_ZN23vtkSlicerApplicationGUI8BuildGUIEv
   fun:_Z12Slicer3_mainiPPc
   fun:main
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_ZN21vtkSlicerViewerWidget12SetPickedRASEPd
   fun:_ZN21vtkSlicerViewerWidget9ResetPickEv
   fun:_ZN21vtkSlicerViewerWidgetC1Ev
   fun:_ZN21vtkSlicerViewerWidget3NewEv
   fun:_ZN23vtkSlicerApplicationGUI18CreateMain3DViewerEi
   fun:_ZN23vtkSlicerApplicationGUI15BuildMainViewerEi
   fun:_ZN23vtkSlicerApplicationGUI8BuildGUIEv
   fun:_Z12Slicer3_mainiPPc
   fun:main
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:_ZN21vtkSlicerViewerWidget16SetPickedPointIDEx
   fun:_ZN21vtkSlicerViewerWidget9ResetPickEv
   fun:_ZN21vtkSlicerViewerWidgetC1Ev
   fun:_ZN21vtkSlicerViewerWidget3NewEv
   fun:_ZN23vtkSlicerApplicationGUI18CreateMain3DViewerEi
   fun:_ZN23vtkSlicerApplicationGUI15BuildMainViewerEi
   fun:_ZN23vtkSlicerApplicationGUI8BuildGUIEv
   fun:_Z12Slicer3_mainiPPc
   fun:main
}
{
   <insert a suppression name here>
   Memcheck:Param
   write(buf)
   obj:/lib64/libpthread-2.6.so
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:Tcl_CreateHashEntry
   fun:Tk_GetColorByValue
   fun:TkpGetShadows
   fun:Tk_3DVerticalBevel
   fun:Tk_Draw3DRectangle
   fun:TkpDrawFrame
   fun:TclServiceIdle
   fun:Tcl_DoOneEvent
   fun:MapFrame
   fun:TclServiceIdle
   fun:Tcl_DoOneEvent
   fun:MapFrame
}
{
   <insert a suppression name here>
   Memcheck:Cond
   fun:Tcl_CreateHashEntry
   fun:Tk_GetColorByValue
   fun:TkpGetShadows
   fun:Tk_3DVerticalBevel
   fun:Tk_Draw3DRectangle
   fun:TkpDrawFrame
   fun:TclServiceIdle
   fun:Tcl_DoOneEvent
   fun:Tk_UpdateObjCmd
   fun:TclEvalObjvInternal
   fun:Tcl_EvalEx
   fun:Tcl_Eval
}
{
   <insert a suppression name here>
   Memcheck:Param
   write(buf)
   obj:/lib64/libpthread-2.6.so
}
