Hi, I'm seeing several significant memory leaks in MesaCVS-Sep05 at the `repeat: create context, draw, destroy context' level. The most significant ones seems to be from gl_immediate_alloc(). I haven't yet managed to unterstand the refcounting for `struct immediate's. However, the appended patch for context.c seems to be necessary in any case: --- context.c 1999/09/09 21:14:50 1.1 +++ context.c 1999/09/11 11:48:09 @@ -1355,7 +1355,11 @@ free( ctx->PB ); - free( ctx->VB ); + + if (ctx->input != ctx->VB->IM) + gl_immediate_free(ctx->input); + + gl_vb_free( ctx->VB ); ctx->Shared->RefCount--; assert(ctx->Shared->RefCount>=0); @@ -1412,6 +1416,14 @@ free( ctx->EvalMap.Map2Texture3.Points ); if (ctx->EvalMap.Map2Texture4.Points) free( ctx->EvalMap.Map2Texture4.Points ); + + /* Free cache of immediate buffers. */ + while (ctx->nr_im_queued-- > 0) { + struct immediate* next = ctx->freed_im_queue->next; + /*printf("free_im(%p)\n", ctx->freed_im_queue);*/ + free(ctx->freed_im_queue); + ctx->freed_im_queue = next; + } free( (void *) ctx ); There is another possibility for struct immediate to leak when it is put in a compiled display list. The following is obviously _not_ the correct fix, the refcounting should be fixed instead: --- dlist.c 1999/09/11 09:16:42 1.1 +++ dlist.c 1999/09/11 11:34:37 @@ -348,11 +348,14 @@ while (!done) { switch (n[0].opcode) { /* special cases first */ - case OPCODE_VERTEX_CASSETTE: - if ( ! -- ((struct immediate *) n[1].data)->ref_count ) - gl_immediate_free( (struct immediate *) n[1].data ); + case OPCODE_VERTEX_CASSETTE: { + struct immediate* im = (struct immediate *) n[1].data; + if ( 1 || ! -- im->ref_count ) + gl_immediate_free( im ); n += InstSize[n[0].opcode]; - break; + break; } case OPCODE_MAP1: gl_free_control_points( ctx, n[1].e, (GLfloat *) n[6].data ); n += InstSize[n[0].opcode]; I'll keep looking to understand the refcounting, but others may be quicker. I'll also report the more minor leaks once this is fixed. Regards, Wolfram. -- `Surf the sea, not double-u three...' [EMAIL PROTECTED] _______________________________________________ Mesa-dev maillist - [EMAIL PROTECTED] http://lists.mesa3d.org/mailman/listinfo/mesa-dev