On Wed, 15 Jun 2011 10:53:13 +0200, Lampersperger Andreas <lampersperger.andr...@heidenhain.de> wrote: > Hello, > > I've tried 2.6.39.1 and the gem_objects leak still exists. > > I found the leak also on a i915 not only on a i965.
I recommend focusing your debugging efforts on i965. If we solve the problem in the new driver, and still find that the leaks occur in the old driver, only then should we begin digging through the old driver. > > It only disappears if I set LIBGL_ALLWAYS_SOFTWARE (not really an > opinion ;-). Nope ;) > Now I can try to update user space libraries, what lib would you suspect most? > > libdrm 2.4.23 > xorg-server 1.10.2 > xf86-video-intel-2.15 > gtkglext-1.2.0 > mesa-7.10.2 xorg-server: I highly doubt this is guilty. libdrm: All calls out to libdrm are made directly by xf86-video-intel or mesa. So, if a problem exists with libdrm, that problem will be solved by debugging xf86-video-intel or mesa. gtkglext: Can't say. xf86-video-intel and mesa: Likely culprits. I am more suspicious of Mesa than the X driver. > Or I can continue debugging, if anyone can give me a hint to the > following question: Great! > In which function are the buffers freed, which are received > from xserver via DRI2GetBuffersWithFormat(..) at dri2.c:431? > -Andreas Ah... In Mesa, the buffers are never freed, actually. Mesa just decrements the gem buffer's refcount with drm_intel_bo_unreference(), and the kernel does the freeing at garbage collection. (Chris, correct me if I'm wrong here.) The buffers obtained by DRI2GetBuffersWithFormat get referenced in exactly one location. Here's the callstack, as I understand it. "gem_bo" means "gem buffer object". intel_udpate_renderbuffers intel_query_dri2_buffers_no_separate_stencil dri2GetBuffersWithFormat DRI2GetBuffersWithFormat # Referencing happens later intel_process_dri2_buffers_no_separate_stencil intel_region_alloc_for_handle intel_bo_gem_create_from_name drm_intel_gem_bo_reference # Reference gem buffer intel_renderbuffer_set_region intel_region_reference # Reference current region intel_region_release # Release old region drm_intel_bo_unreference # Release old gem buffer The buffers can get released from two possible paths: 1) The intel_update_renderbuffers path above, and 2) from within intel_delete_renderbuffer(). Good luck chasing this down. And don't prematurely eliminate the possiblity that the problem may lie in xf86-video-intel or gtkglext. - Chad _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev