Bill Meier wrote:
> Progress report:
> 
> 1. It appears that there are at least several related memory leaks 
> associated with reloading a file and having to do with defragmentation 
> in reassemble.c
> 
>    Basically: after fragment_table_init & reassembled_table_init:
>    a. fragment_data structs in the "fd lists" pointed to from the
>       fragment_tables and reassembled_tables hashes are not freed;
>    b. fragment_key structs pointed to from the fragment_tables hash are
>       not freed.
> 
>    The code using GMemChunks freed these structs in reassemble_cleanup
>    using g_mem_chunk_destroy.
>    This hasn't worked since GLib 2.10 when g_mem_chunk_destroy stopped
>    actually freeing memory.
> 
>    (Using g_slice doesn't change things since the code assumes that
>    the structs can be but need not be freed individually).
> 
>    The lossage: mostly fragment_data_structs:
>        32-bytes * number_of_fragments_in_a_capture.
> 
>    Using se_alloc for these structs isn't the right answer
>    because currently se_free_all is being called *before* the loop
>    through all the dissector "registered init" fcns.
>    (Also: fragment_key structs sometimes are individually freed).
> 
> 
>    I'm leaning towards the following:
>       Free the fragment_data structs and etc in fragment_table_init
>       and reassembled_table_init (similar to fragment_delete).
>       (One has to be careful about doing so
>       for the reassembled_table since an fd-chain can/will appear
>       multiple times in the reassembled hash).
> 

It appears that I'm not going to have the time to fix this right now.

So: I'll file a bug so it doesn't get lost.

Bill


___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to