Wireshark-dev: Re: [Wireshark-dev] g_free throwing an exception
From: Graham Bloice <graham.bloice@xxxxxxxxxxxxx>
Date: Mon, 6 Nov 2017 10:50:06 +0000


On 5 November 2017 at 21:33, Pascal Quantin <pascal.quantin@xxxxxxxxx> wrote:
Hi Paul,

2017-11-05 12:15 GMT+01:00 Paul Offord <Paul.Offord@xxxxxxxxxxxx>:

Hi,

 

I am working on a plugin dissector.  It works OK except when I change profiles Wireshark throws an exception in code in proto.c as follows:

 

static void

free_deregistered_field (gpointer data, gpointer user_data _U_)

{

               header_field_info *hfi = (header_field_info *) data;

               gint hf_id = hfi->id;

 

               g_free((char *)hfi->name);      <== The exception occurs on execution of this call

 

The hfi structure looks valid and the hfi->name does point to a character string.

 

The only thing I can see that might be wrong is that hfi->name has a data type of const char *

 

How can I determine the cause of the exception?


Usually this is a sign of an attempt to free a memory block that was not allocated with g_malloc. Is it a field from your plugin?

BR,
Pascal.



This might also be a case of mixed MSVCRT libraries.  If compiling with VS2013 are you using VS2013 third party libraries?

--
Graham Bloice