Hi, I encountered huge-grown memory leak in recently update and investigated by 
valgrind.
The leak found in _tnl_UpdateFixedFunctionProgram that was 'state_key key' keep 
created always.

==5636== 1,319,960 bytes in 32,999 blocks are definitely lost in loss record 63 
of 65
==5636==    at 0x4005B0E: calloc (vg_replace_malloc.c:397)
==5636==    by 0x452ADD4: _mesa_calloc (imports.c:78)
==5636==    by 0x458BF3A: _tnl_UpdateFixedFunctionProgram (t_vp_build.c:122)
==5636==    by 0x44D9485: r300UpdateShaders (r300_state.c:2115)
==5636==    by 0x44DCB38: r300RunTCLRender (r300_render.c:407)
==5636==    by 0x4577262: _tnl_run_pipeline (t_pipeline.c:158)
==5636==    by 0x45777E0: _tnl_draw_prims (t_draw.c:402)
==5636==    by 0x4576594: vbo_save_playback_vertex_list (vbo_save_draw.c:220)
==5636==    by 0x450CDC2: execute_list (dlist.c:5757)
==5636==    by 0x451017D: _mesa_CallList (dlist.c:6841)
==5636==    by 0x4565BBB: neutral_CallList (vtxfmt_tmp.h:298)
==5636==    by 0x8049CC8: do_draw (in /usr/bin/glxgears)

diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c
index 2b1eefe..e83d842 100644
--- a/src/mesa/tnl/t_vp_build.c
+++ b/src/mesa/tnl/t_vp_build.c
@@ -1573,6 +1573,9 @@ void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx )
 
          _mesa_reference_vertprog(ctx, &ctx->VertexProgram._TnlProgram, 
newProg);
       }
+      else {
+         FREE(key);
+      }
 
       _mesa_reference_vertprog(ctx, &ctx->VertexProgram._TnlProgram, newProg);
       _mesa_reference_vertprog(ctx, &ctx->VertexProgram._Current, newProg);

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to