diff --git a/etc/valgrind-root.supp b/etc/valgrind-root.supp
new file mode 100644
index 0000000000000000000000000000000000000000..16a1616033b758fb71cfa609c8250aa6b25dd6ff
--- /dev/null
+++ b/etc/valgrind-root.supp
@@ -0,0 +1,178 @@
+# Additional valgrind suppression file for ROOT.
+#
+# To use, run valgrind with:
+#   valgrind --suppressions=$ROOTSYS/etc/valgrind-root.supp ...
+#
+# This file suppresses known and expected / inevitable valgrind
+# reports, e.g. due to ROOT's runtime type information that must
+# survive until the end of the process and thus leaks.
+# It only suppresses leaks, and a few errors generated by X11.
+
+
+######### ROOT's RTTI
+{
+   TClass::AddClass()'s std::string
+   Memcheck:Leak
+   fun:_Znwm
+   fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
+   obj:*libstdc++.so*
+   fun:_ZNSsC1EPKcRKSaIcE
+   fun:_ZN6TClass8AddClassEPS_
+}
+
+{
+   TGenericClassInfo's fClass generated by ROOT::TQObjectInitBehavior::CreateClass()
+   Memcheck:Leak
+   fun:_Znwm
+   fun:_ZN8TStorage11ObjectAllocEm
+   fun:_ZN7TObjectnwEm
+   fun:_ZNK4ROOT20TQObjectInitBehavior11CreateClassEPKcsRKSt9type_info*
+   fun:_ZN4ROOT17TGenericClassInfo8GetClassEv
+}
+
+{
+   TString generated by ROOT::TMapTypeToClassRec::Add() called by ROOT::AddClass()
+   Memcheck:Leak
+   fun:_Znam
+   fun:_ZN10TStringRef6GetRepEii
+   fun:_ZN7TStringC1EPKc
+   fun:_ZN10TObjStringC1EPKc
+   fun:_ZN4ROOT18TMapTypeToClassRec3AddEPKcRP9TClassRec
+   fun:_ZN11TClassTable3AddEPKcsRKSt9type_infoPFvvEi
+   fun:_ZN4ROOT8AddClassEPKcsRKSt9type_infoPFvvEi
+}
+
+
+
+######### ROOT I/O
+
+{
+   TStreamerInfo stays around
+   Memcheck:Leak
+   fun:_Znam
+   fun:_ZN13TStreamerInfo7CompileEv
+   fun:_ZN13TStreamerInfo5BuildEv
+   fun:_ZN11TBufferFile16WriteClassBufferEP6TClassPv
+   fun:_ZN18TStreamerBasicType8StreamerER7TBuffer
+}
+
+
+
+######### X11 errors triggered by ROOT
+
+{
+   ROOT:X11 - GetWindowSize
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:_XReply
+   fun:XGetGeometry
+   fun:_ZN5TGX1113GetWindowSizeEmRiS0_RjS1_
+}
+{
+   ROOT:X11 - XFlush
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:XFlush
+   fun:_ZN7TCanvas5BuildEv
+}
+{
+   ROOT:X11 - XDrawString
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:XDrawString
+   fun:_ZN8TGX11TTF10DrawStringEmmiiPKci
+}
+{
+   ROOT:X11 - XPending
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:_XEventsQueued
+   fun:XPending
+   fun:_ZN8TGClient15ProcessOneEventEv
+}
+{
+   ROOT:X11 - XCheckTypedWindowEvent
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:XCheckTypedWindowEvent
+   fun:_ZN5TGX1110CheckEventEm11EGEventTypeR7Event_t
+}
+{
+   ROOT:X11 - XPutImage
+   Memcheck:Param
+   writev(vector[...])
+   fun:writev
+   obj:*/libX11.*
+   fun:_XSend
+   obj:*/libX11.*
+   fun:XPutImage
+   fun:_ZN8TGX11TTF12RenderStringEiiN9TVirtualX9ETextModeE
+}
+{
+   ROOT:X11 - XMoveResizeWindow
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:XMoveResizeWindow
+   fun:_ZN7TGFrame10MoveResizeEiijj
+}
+{
+   ROOT:X11 - XSetTextProperty
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:XChangeProperty
+   fun:XSetTextProperty
+   fun:_ZN5TGX1113SetWindowNameEmPc
+}
+{
+   ROOT:X11 - XDrawLines
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:XDrawLines
+   fun:_ZN4TPad13PaintPolyLineEiPdS0_PKc
+}
+{
+   ROOT:X11 - XDrawLines / _XFlushGCCache
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:*/libX11.*
+   obj:*/libX11.*
+   fun:_XFlushGCCache
+   fun:XDrawLines
+   fun:_ZN4TPad13PaintFillAreaEiPdS0_PKc
+}
+{
+   ROOT:X11 - XDrawLines / _XSend
+   Memcheck:Param
+   writev(vector[...])
+   fun:writev
+   obj:*/libX11.*
+   fun:_XSend
+   fun:XDrawLines
+   fun:_ZN4TPad13PaintFillAreaEiPdS0_PKc
+}
+