Bug 35071

Summary: Valgrind warnings in _mesa_texstore_argb8888
Product: Mesa Reporter: Lionel Landwerlin <lionel.g.landwerlin>
Component: Drivers/DRI/i965Assignee: Chris Wilson <chris>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: lowest    
Version: 7.10   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Lionel Landwerlin 2011-03-06 16:00:20 UTC
Here are a couple of warnings from valgrind when running a Clutter application :

==4768== 
==4768== Invalid write of size 4
==4768==    at 0xFBA3372: _mesa_texstore_argb8888 (texstore.c:1505)
==4768==    by 0xFAD8FFF: intelTexImage (intel_tex_image.c:500)
==4768==    by 0xFAD9BC2: intelTexImage2D (intel_tex_image.c:549)
==4768==    by 0xFB92D9B: teximage (teximage.c:2435)
==4768==    by 0xFB932F3: _mesa_TexImage2D (teximage.c:2489)
==4768==    by 0x5F8271C: _cogl_texture_driver_upload_to_gl (cogl-texture-driver-gl.c:200)
==4768==    by 0x5FAEAA5: _cogl_texture_2d_new_from_bitmap (cogl-texture-2d.c:309)
==4768==    by 0x5FAD5EC: cogl_texture_new_from_bitmap (cogl-texture.c:452)
==4768==    by 0x5FAD8CB: cogl_texture_new_from_data (cogl-texture.c:431)
==4768==    by 0x5F8A509: _cogl_context_get_default (cogl-context.c:266)
==4768==    by 0x5F8AA3A: cogl_get_features (cogl.c:384)
==4768==    by 0x5F3550E: _clutter_feature_init (clutter-feature.c:110)
==4768==  Address 0x7f51b5887000 is not stack'd, malloc'd or (recently) free'd


==4768== Invalid write of size 4
==4768==    at 0xFBA3372: _mesa_texstore_argb8888 (texstore.c:1505)
==4768==    by 0xFAD8FFF: intelTexImage (intel_tex_image.c:500)
==4768==    by 0xFAD9BC2: intelTexImage2D (intel_tex_image.c:549)
==4768==    by 0xFB94D1D: _mesa_get_fallback_texture (texobj.c:767)
==4768==    by 0xFB98245: _mesa_update_texture (texstate.c:592)
==4768==    by 0xFB87988: _mesa_update_state_locked (state.c:588)
==4768==    by 0xFB87E70: _mesa_update_state (state.c:674)
==4768==    by 0xFB53FE6: find_value (get.c:1688)
==4768==    by 0xFB54A97: _mesa_GetIntegerv (get.c:1991)
==4768==    by 0x5FB8F10: _cogl_framebuffer_flush_state (cogl-framebuffer.c:659)
==4768==    by 0x5FB935F: _cogl_framebuffer_clear4f (cogl-framebuffer.c:381)
==4768==    by 0x5F42B8B: _clutter_do_pick (clutter-main.c:614)
==4768==  Address 0x7f51b5880000 is not stack'd, malloc'd or (recently) free'd
==4768==
Comment 1 Chris Wilson 2011-03-07 00:53:38 UTC
valgrind doesn't know that the mmapping is valid.
Comment 2 Eric Anholt 2011-03-11 10:21:59 UTC
I forget what the conclusion was on whether we would ever be able to convince valgrind that mmap had actually happened, inside of libdrm.  There were patches floating around at one point.
Comment 3 Chris Wilson 2012-02-11 03:46:55 UTC
commit 90b23cc24c19fbe131d84237c55311cafeb4ca21
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Feb 9 10:23:10 2012 +0000

    intel: Mark up with valgrind intrinsics to reduce false positives
    
    In particular, declare the hidden CPU mmaps to valgrind so that it knows
    about those memory regions.
    
    v2: Add an additional VG_CLEAR for the getparam
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=35071
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Acked-by: Ben Widawsky <ben@bwidawsk.net>
    [anholt: Ideally valgrind should just learn about the ioctls, and
             removing the clear for the non-valgrindified code feels risky.]
    Reviewed-by: Eric Anholt <eric@anholt.net>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.