On Mon, Oct 22, 2012 at 3:11 AM, Jakub Zawadzki
<[email protected]> wrote:
> On Tue, Oct 16, 2012 at 03:18:32PM +0000, Anders Broman wrote:
>> I think it sounds like the right thing to do and as no one have any 
>> objections I think you might as well go ahead and check it in :-)
>
> Bug #7892.
>
> Some solutions to fix it:
>
> 1/ revert r45673
>
> 2/ call epan_dissect_fill_in_columns() before ep_free_all()
>
>   epan_dissect_fill_in_columns() in 8 cases of 9 is called after 
> epan_dissect_run().
>
>   Only complicated case is tshark, which pass edt pointer to print_packet(), 
> which later not always call
>   epan_dissect_fill_in_columns().
>
>   Still it won't work, if GUI use ep_ allocated addresses.
>
> 3/ don't use ep_ memory for pinfo-> addresses?
>
>    Greping for e.g. \<net_src\> in GTK+ code shows that it's used also to 
> build conversation filters (ip, ethernet, ...)
>    for these addr->data points to tvb (tvbs are freed in 
> epan_dissect_cleanup()).
>
>    I haven't (yet) found use of address with AT_STRINGZ data, but it can 
> change anytime.

Perhaps ep_free_all() should be called in epan_dissect_cleanup() and
epan_dissect_reset() instead of at the end of epan_dissect_run()? I
think that would delay freeing the memory enough, while still leaving
it conceptually after each packet instead of before the next...

Tangentially, epan_dissect_cleanup() and epan_dissect_reset() share
some code that should probably be abstracted into its own function.

Evan
___________________________________________________________________________
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