Doble deletion in releasing memory in wsdl_component struct
-----------------------------------------------------------

         Key: AXIS2C-73
         URL: http://issues.apache.org/jira/browse/AXIS2C-73
     Project: Axis2-C
        Type: Bug
  Components: wsdl  
    Versions: M0.4    
    Reporter: Samisa Abeysinghe


When there are multiple services, the modules desc pointers are set as 
properties in wsdl_component struct.
When conf free is called, the multiple services try to free the same module 
desc pointer. (see following  trace)
This happens because of the way we handle properties in wsdl_component with a 
callback to free memory.
We have to tidy this up to make sure we release the memory as well as do not do 
that multiple times to the same pointer.
The better way to handle this is to use a "property" struct and store those 
properties in the hash of wsdl_component.
the property would look like
struct property
{
    void *value; /*defaults to NULL*/
    axis2_scope_t scope; /*defaults to local, mening we have to free this here*/
    free_callback_fn_ptr; /*defaults to NULL, if null and scope is local, then 
use AXIS2_FREE*/
}

==18138== Invalid read of size 4
==18138==    at 0x1B979B14: axis2_module_desc_free (module_desc.c:294)
==18138==    by 0x1B979DF4: axis2_module_desc_array_list_free 
(module_desc.c:350)
==18138==    by 0x1B93EFD8: axis2_wsdl_component_free (wsdl_component.c:183)
==18138==    by 0x1B93DF87: axis2_wsdl_svc_free (wsdl_svc.c:169)
==18138==    by 0x1B975571: axis2_svc_free (svc.c:543)
==18138==    by 0x1B97C945: axis2_svc_grp_free (svc_grp.c:287)
==18138==    by 0x1B95FE2D: axis2_conf_free (conf.c:604)
==18138==    by 0x1B9AF35F: axis2_call_free (call.c:291)
==18138==    by 0x1B9B33A7: axis2_stub_free (stub.c:342)
==18138==    by 0x804946E: main (math_client.c:141)
==18138==  Address 0x1BA735C8 is 24 bytes inside a block of size 28 free'd
==18138==    at 0x1B909743: free (vg_replace_malloc.c:152)
==18138==    by 0x1B979BE1: axis2_module_desc_free (module_desc.c:316)
==18138==    by 0x1B979DF4: axis2_module_desc_array_list_free 
(module_desc.c:350)
==18138==    by 0x1B93EFD8: axis2_wsdl_component_free (wsdl_component.c:183)
==18138==    by 0x1B93DF87: axis2_wsdl_svc_free (wsdl_svc.c:169)
==18138==    by 0x1B975571: axis2_svc_free (svc.c:543)
==18138==    by 0x1B97C945: axis2_svc_grp_free (svc_grp.c:287)
==18138==    by 0x1B95FE2D: axis2_conf_free (conf.c:604)
==18138==    by 0x1B9AF35F: axis2_call_free (call.c:291)
==18138==    by 0x1B9B33A7: axis2_stub_free (stub.c:342)
==18138==    by 0x804946E: main (math_client.c:141)



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to