| # Pass this file to Valgrind with "--suppressions=tools/valgrind.supp" | 
 |  | 
 | # Intentional thread / memory leak in DM and nanbench. | 
 | { | 
 |    nanobench_and_dm_keepalive_thread_leak | 
 |    Memcheck:Leak | 
 |    match-leak-kinds: possible,definite | 
 |    ... | 
 |    fun:start_keepalive | 
 |    ... | 
 |    fun:main | 
 |    ... | 
 | } | 
 |  | 
 | # Third party lib, driver issues. | 
 | { | 
 |     ati_driver_bug_1 | 
 |     Memcheck:Param | 
 |     ioctl(generic) | 
 |     fun:ioctl | 
 |     ... | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_2 | 
 |     Memcheck:Cond | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_3 | 
 |     Memcheck:Addr8 | 
 |     ... | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_4 | 
 |     Memcheck:Addr4 | 
 |     ... | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_5 | 
 |     Memcheck:Addr2 | 
 |     ... | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_6 | 
 |     Memcheck:Addr1 | 
 |     ... | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_7 | 
 |     Memcheck:Leak | 
 |     fun:malloc | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     driver_bug_8 | 
 |     Memcheck:Overlap | 
 |     fun:strcpy | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_9 | 
 |     Memcheck:Leak | 
 |     fun:calloc | 
 |     obj:/usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so | 
 | } | 
 | { | 
 |     ati_driver_bug_10 | 
 |     Memcheck:Leak | 
 |     fun:malloc | 
 |     obj:/usr/lib/fglrx/fglrx-libGL.so.1.2 | 
 | } | 
 | { | 
 |     nv_driver_bug_1 | 
 |     Memcheck:Param | 
 |     write(buf) | 
 |     ... | 
 |     obj:*/libnvidia-glcore.so* | 
 | } | 
 | { | 
 |     nv_driver_bug_2 | 
 |     Memcheck:Cond | 
 |     ... | 
 |     obj:*/libnvidia-glcore.so* | 
 | } | 
 | { | 
 |     nv_driver_bug_3 | 
 |     Memcheck:Leak | 
 |     fun:calloc | 
 |     obj:/usr/lib*/libGL.so* | 
 | } | 
 | { | 
 |    nv_driver_bug_4 | 
 |    Memcheck:Param | 
 |    sendmsg(msg.msg_iov[0]) | 
 |    fun:sendmsg | 
 |    obj:*/libGLX_nvidia.so* | 
 | } | 
 | { | 
 |    nv_driver_bug_5 | 
 |    Memcheck:Leak | 
 |    fun:malloc | 
 |    obj:*/libGLX_nvidia.so* | 
 | } | 
 | { | 
 |     #Fixed by FontConfig 2.9.0 | 
 |     #http://cgit.freedesktop.org/fontconfig/commit/?id=1c475d5c8cb265ac939d6b9e097666e300162511 | 
 |     font_config_bug_1 | 
 |     Memcheck:Addr4 | 
 |     fun:FcConfigFileExists | 
 | } | 
 | { | 
 |     #https://bugs.freedesktop.org/show_bug.cgi?id=8215 | 
 |     #https://bugs.freedesktop.org/show_bug.cgi?id=8428 | 
 |     #FcPattern uses 'intptr_t elts_offset' instead of 'FcPatternEltPtr elts', | 
 |     #which confuses valgrind. | 
 |     font_config_bug_2 | 
 |     Memcheck:Leak | 
 |     fun:*alloc | 
 |     ... | 
 |     fun:Fc*Add* | 
 | } | 
 | { | 
 |     #Same root cause as font_config_bug_2. | 
 |     #The 'leak' here is a copy of rule values, as opposed to new values. | 
 |     font_config_bug_3 | 
 |     Memcheck:Leak | 
 |     fun:*alloc | 
 |     ... | 
 |     fun:FcConfigValues | 
 |     fun:FcConfigSubstituteWithPat | 
 |     fun:FcFontRenderPrepare | 
 | } | 
 | { | 
 |     #Same root cause as font_config_bug_2. | 
 |     #The 'leak' is copies of font or pattern values into returned pattern values. | 
 |     font_config_bug_4 | 
 |     Memcheck:Leak | 
 |     fun:*alloc | 
 |     ... | 
 |     fun:FcValue* | 
 |     fun:FcFontRenderPrepare | 
 | } | 
 | { | 
 |    font_config_bug_5 | 
 |    Memcheck:Leak | 
 |    fun:malloc | 
 |    obj:*/libfontconfig.so.1.8.0 | 
 |    fun:FcConfigSubstituteWithPat | 
 | } | 
 | { | 
 |    font_config_bug_6 | 
 |    Memcheck:Leak | 
 |    fun:*alloc | 
 |    ... | 
 |    obj:*/libfontconfig.so.1.8.0 | 
 |    fun:FcFont* | 
 | } | 
 | { | 
 |     zlib_bug_1 | 
 |     Memcheck:Cond | 
 |     fun:inflateReset2 | 
 |     fun:inflateInit2_ | 
 |     fun:png_create_read_struct_2 | 
 |     fun:png_create_read_struct | 
 | } | 
 | { | 
 |     zlib_bug_2 | 
 |     Memcheck:Cond | 
 |     fun:inflateReset2 | 
 |     fun:inflateInit2_ | 
 |     fun:_ZN12_GLOBAL__N_17doFlateEbP8SkStreamP9SkWStream | 
 |     fun:_ZN7SkFlate7InflateEP8SkStreamP9SkWStream | 
 | } | 
 |  | 
 | # Why is it OK to suppress this? | 
 | { | 
 |     SkRTConfRegistry_bug_1 | 
 |     Memcheck:Leak | 
 |     fun:_Znwm | 
 |     fun:_ZN16SkRTConfRegistry12registerConfEP12SkRTConfBase | 
 | } | 
 |  | 
 | # The gpu_issue_* suppressions suppress issues that cannot be reproduced locally. These appear to be | 
 | # due to valgrind not knowing about memory mapped by the ATI driver via glMapBuffer. | 
 | { | 
 |     gpu_issue_1 | 
 |     Memcheck:Addr2 | 
 |     fun:_ZNK5GrGpu18getQuadIndexBufferEv | 
 | } | 
 | { | 
 |     gpu_issue_2 | 
 |     Memcheck:Addr2 | 
 |     fun:_ZN24GrAAHairLinePathRenderer6CreateEP9GrContext | 
 | } | 
 | { | 
 |     gpu_issue_3 | 
 |     Memcheck:Addr2 | 
 |     fun:_ZN16GrAARectRenderer21aaFillRectIndexBufferEP5GrGpu | 
 | } | 
 | { | 
 |     gpu_issue_4 | 
 |     Memcheck:Addr8 | 
 |     fun:_ZN24GrAAHairLinePathRenderer14createLineGeomERK6SkPathP12GrDrawTargetRK8SkTArrayI7SkPointLb1EEiPNS3_19AutoReleaseGeometryEP6SkRect | 
 | } | 
 | { | 
 |     gpu_issue_5 | 
 |     Memcheck:Addr8 | 
 |     fun:_ZN21GrDefaultPathRenderer10createGeomERK6SkPathRK11SkStrokeRecfP12GrDrawTargetP15GrPrimitiveTypePiSA_PNS6_19AutoReleaseGeometryE | 
 | } | 
 | { | 
 |     gpu_issue_6 | 
 |     Memcheck:Addr8 | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     gpu_issue_7 | 
 |     Memcheck:Addr4 | 
 |     fun:_ZNK7SkPoint24distanceToLineBetweenSqdERKS_S1_PNS_4SideE | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     gpu_issue_8 | 
 |     Memcheck:Addr4 | 
 |     fun:_ZN24GrAAHairLinePathRenderer14createLineGeomERK6SkPathP12GrDrawTargetRK8SkTArrayI7SkPointLb1EEiPNS3_19AutoReleaseGeometryEP6SkRect | 
 | } | 
 | { | 
 |     gpu_issue_9 | 
 |     Memcheck:Addr2 | 
 |     fun:_ZN21GrDefaultPathRenderer10createGeomERK6SkPathRK11SkStrokeRecfP12GrDrawTargetP15GrPrimitiveTypePiSA_PNS6_19AutoReleaseGeometryE | 
 | } | 
 | { | 
 |     gpu_issue_10 | 
 |     Memcheck:Addr4 | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     gpu_issue_11 | 
 |     Memcheck:Addr2 | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     gpu_issue_12 | 
 |     Memcheck:Addr8 | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK6SkPathRK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     gpu_issue_13 | 
 |     Memcheck:Addr4 | 
 |     fun:_ZNK7SkPoint24distanceToLineBetweenSqdERKS_S1_PNS_4SideE | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK6SkPathRK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     gpu_issue_14 | 
 |     Memcheck:Addr4 | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK6SkPathRK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     gpu_issue_15 | 
 |     Memcheck:Addr2 | 
 |     fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK6SkPathRK11SkStrokeRecP12GrDrawTargetb | 
 | } | 
 | { | 
 |     libjpeg_turbo_bug4550_1 | 
 |     Memcheck:Cond | 
 |     fun:_Z26S32A_Opaque_BlitRow32_SSE4PjPKjij | 
 |     fun:_ZN14Sprite_D32_S328blitRectEiiii | 
 | } | 
 | { | 
 |     libjpeg_turbo_bug4550_2 | 
 |     Memcheck:Cond | 
 |     fun:_ZL15S32A_D565_BlendPtPKjijii | 
 |     fun:_ZN26Sprite_D16_S32_BlitRowProc8blitRectEiiii | 
 | } | 
 | { | 
 |     libjpeg_turbo_bug4550_3 | 
 |     Memcheck:Cond | 
 |     fun:_ZN12_GLOBAL__N_120ConvolveHorizontallyILb0EEEvPKhRK21SkConvolutionFilter1DPh | 
 |     fun:_Z14BGRAConvolve2DPKhibRK21SkConvolutionFilter1DS3_iPhRK18SkConvolutionProcsb | 
 | } | 
 | #Something odd happening in with SkRasterPipeline in GrConvertPixels. Seems bogus after | 
 | #investigation. MSAN/ASAN have no complaints. Complaining about conditional jump or use | 
 | #of var that is "uninitialized" but it definitely is. | 
 | { | 
 |    grconvertpixels_rasterpipeline | 
 |    Memcheck:Cond | 
 |    ... | 
 |    fun:_ZNK16SkRasterPipeline3runEmmmm | 
 |    fun:_Z15GrConvertPixelsRK11GrImageInfoPvmS1_PKvmb | 
 |    ... | 
 | } | 
 | { | 
 |    grconvertpixels_rasterpipeline | 
 |    Memcheck:Value8 | 
 |    ... | 
 |    fun:_ZNK16SkRasterPipeline3runEmmmm | 
 |    fun:_Z15GrConvertPixelsRK11GrImageInfoPvmS1_PKvmb | 
 |    ... | 
 | } |