Memory issues in Axis2/C service client
---------------------------------------

                 Key: AXIS2C-1236
                 URL: https://issues.apache.org/jira/browse/AXIS2C-1236
             Project: Axis2-C
          Issue Type: Bug
          Components: core/clientapi
    Affects Versions: 1.4.0
         Environment: Linux, Axis2/C 1.4.0, Rampart/C 1.2.0
            Reporter: Chris Rose


Some memory errors are cropping up when I run the client API through valgrind, 
some of which are leaks, others of which are problems with accessing 
previously-freed memory.

When calling axis2_svc_client_send_receive, there is an invalid read from a 
previously-freed AXIOM node structure.  This occurs during SOAP fault 
processing:
==17373== Invalid read of size 4
==17373==    at 0x4544A82: axiom_node_is_complete (om_node.c:991)
==17373==    by 0x454E5FE: axiom_stax_builder_end_element 
(om_stax_builder.c:755)
==17373==    by 0x454EF51: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1154)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x455099D: axiom_soap_fault_get_reason (soap_fault.c:274)
==17373==    by 0x4557791: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:422)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==  Address 0x4455bb8 is 32 bytes inside a block of size 40 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x4543886: axiom_node_free_detached_subtree (om_node.c:154)
==17373==    by 0x4543760: axiom_node_free_detached_subtree (om_node.c:106)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373== 
==17373== Invalid read of size 4
==17373==    at 0x4544883: axiom_node_get_parent (om_node.c:876)
==17373==    by 0x454E617: axiom_stax_builder_end_element 
(om_stax_builder.c:757)
==17373==    by 0x454EF51: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1154)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x455099D: axiom_soap_fault_get_reason (soap_fault.c:274)
==17373==    by 0x4557791: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:422)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==  Address 0x4455ba0 is 8 bytes inside a block of size 40 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x4543886: axiom_node_free_detached_subtree (om_node.c:154)
==17373==    by 0x4543760: axiom_node_free_detached_subtree (om_node.c:106)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373== 
==17373== Invalid write of size 4
==17373==    at 0x4544ED1: axiom_node_set_complete (om_node.c:1117)
==17373==    by 0x454E63A: axiom_stax_builder_end_element 
(om_stax_builder.c:760)
==17373==    by 0x454EF51: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1154)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x455099D: axiom_soap_fault_get_reason (soap_fault.c:274)
==17373==    by 0x4557791: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:422)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==  Address 0x4455268 is 32 bytes inside a block of size 40 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x4543886: axiom_node_free_detached_subtree (om_node.c:154)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==    by 0x4030C01: Tcl_EvalObjEx (tclBasic.c:4004)
==17373== 
==17373== Invalid read of size 4
==17373==    at 0x4544A82: axiom_node_is_complete (om_node.c:991)
==17373==    by 0x454DE65: axiom_stax_builder_create_om_element 
(om_stax_builder.c:540)
==17373==    by 0x454EEF7: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1133)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x455099D: axiom_soap_fault_get_reason (soap_fault.c:274)
==17373==    by 0x4557791: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:422)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==  Address 0x4455268 is 32 bytes inside a block of size 40 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x4543886: axiom_node_free_detached_subtree (om_node.c:154)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==    by 0x4030C01: Tcl_EvalObjEx (tclBasic.c:4004)
==17373== 
==17373== Invalid read of size 4
==17373==    at 0x4544883: axiom_node_get_parent (om_node.c:876)
==17373==    by 0x454DE82: axiom_stax_builder_create_om_element 
(om_stax_builder.c:542)
==17373==    by 0x454EEF7: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1133)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x455099D: axiom_soap_fault_get_reason (soap_fault.c:274)
==17373==    by 0x4557791: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:422)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==  Address 0x4455250 is 8 bytes inside a block of size 40 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x4543886: axiom_node_free_detached_subtree (om_node.c:154)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==    by 0x4030C01: Tcl_EvalObjEx (tclBasic.c:4004)
==17373== 
==17373== Invalid write of size 4
==17373==    at 0x4544D0C: axiom_node_set_next_sibling (om_node.c:1065)
==17373==    by 0x454DEE5: axiom_stax_builder_create_om_element 
(om_stax_builder.c:554)
==17373==    by 0x454EEF7: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1133)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x455099D: axiom_soap_fault_get_reason (soap_fault.c:274)
==17373==    by 0x4557791: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:422)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==  Address 0x4455258 is 16 bytes inside a block of size 40 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x4543886: axiom_node_free_detached_subtree (om_node.c:154)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==    by 0x40618BB: TclExecuteByteCode (tclExecute.c:1404)
==17373==    by 0x4060A55: TclCompEvalObj (tclExecute.c:982)
==17373==    by 0x4030C01: Tcl_EvalObjEx (tclBasic.c:4004)
==17373== 
==17373== Invalid read of size 1
==17373==    at 0x451930C: axutil_hash_find_entry (hash.c:307)
==17373==    by 0x45195A3: axutil_hash_set (hash.c:395)
==17373==    by 0x454DB72: axiom_stax_builder_process_namespaces 
(om_stax_builder.c:437)
==17373==    by 0x454E010: axiom_stax_builder_create_om_element 
(om_stax_builder.c:579)
==17373==    by 0x454EEF7: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1133)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x4550D6C: axiom_soap_fault_get_detail (soap_fault.c:417)
==17373==    by 0x4557976: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:506)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==  Address 0x4455558 is 0 bytes inside a block of size 5 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x451DCAA: axutil_string_free (string.c:206)
==17373==    by 0x454C14B: axiom_namespace_free (om_namespace.c:102)
==17373==    by 0x4548508: axiom_element_free (om_element.c:717)
==17373==    by 0x454379C: axiom_node_free_detached_subtree (om_node.c:115)
==17373==    by 0x4543760: axiom_node_free_detached_subtree (om_node.c:106)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373== 
==17373== Invalid read of size 1
==17373==    at 0x451930C: axutil_hash_find_entry (hash.c:307)
==17373==    by 0x451955B: axutil_hash_get (hash.c:380)
==17373==    by 0x454DBF6: axiom_stax_builder_process_namespaces 
(om_stax_builder.c:457)
==17373==    by 0x454E010: axiom_stax_builder_create_om_element 
(om_stax_builder.c:579)
==17373==    by 0x454EEF7: axiom_stax_builder_next_with_token 
(om_stax_builder.c:1133)
==17373==    by 0x4558F9D: axiom_soap_builder_next (soap_builder.c:300)
==17373==    by 0x4550D6C: axiom_soap_fault_get_detail (soap_fault.c:417)
==17373==    by 0x4557976: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:506)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)
==17373==    by 0x402FA62: TclEvalObjvInternal (tclBasic.c:3084)
==17373==  Address 0x4455558 is 0 bytes inside a block of size 5 free'd
==17373==    at 0x400543C: free (vg_replace_malloc.c:323)
==17373==    by 0x4519EA3: axutil_allocator_free_impl (allocator.c:91)
==17373==    by 0x451DCAA: axutil_string_free (string.c:206)
==17373==    by 0x454C14B: axiom_namespace_free (om_namespace.c:102)
==17373==    by 0x4548508: axiom_element_free (om_element.c:717)
==17373==    by 0x454379C: axiom_node_free_detached_subtree (om_node.c:115)
==17373==    by 0x4543760: axiom_node_free_detached_subtree (om_node.c:106)
==17373==    by 0x45438BC: axiom_node_free_tree (om_node.c:178)
==17373==    by 0x4557765: axiom_soap_body_convert_fault_to_soap11 
(soap_body.c:413)
==17373==    by 0x45BF00C: axis2_svc_client_send_receive_with_op_qname 
(svc_client.c:932)
==17373==    by 0x45BF082: axis2_svc_client_send_receive (svc_client.c:949)
==17373==    by 0x44F7DBF: Axis2c_cmd_svc_client (axis2c_api.c:487)

The fault message is this (note the malformed SOAP fault, this is a bug I 
submitted last week):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
   <soapenv:Header/>
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>
            <Subcode 
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";>
               <Value>wsse:FailedCheck</Value>
            </Subcode>soapenv:Sender
         </faultcode>
         <faultstring>Could not find signature</faultstring>
         <detail>
            <wsse:ProblemSecurityHeader 
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";>wsse:InvalidSecurity</wsse:ProblemSecurityHeader>
         </detail>
      </soapenv:Fault>
   </soapenv:Body></soapenv:Envelope>

Second, there is a leak in the client:
==17373== 76 (20 direct, 56 indirect) bytes in 1 blocks are definitely lost in 
loss record 8 of 56
==17373==    at 0x4005898: malloc (vg_replace_malloc.c:207)
==17373==    by 0x4519E56: axutil_allocator_malloc_impl (allocator.c:74)
==17373==    by 0x451F151: axutil_qname_create (qname.c:62)
==17373==    by 0x489852C: rp_issued_token_builder_build 
(issued_token_builder.c:89)
==17373==    by 0x4891A3A: neethi_assertion_builder_build 
(assertion_builder.c:752)
==17373==    by 0x488C870: process_operation_element (engine.c:486)
==17373==    by 0x488BFAD: get_operator_neethi_policy (engine.c:246)
==17373==    by 0x488B91A: neethi_engine_get_policy (engine.c:88)
==17373==    by 0x4892837: rp_supporting_tokens_builder_build 
(supporting_tokens_builder.c:100)
==17373==    by 0x4890829: neethi_assertion_builder_build 
(assertion_builder.c:338)
==17373==    by 0x488C870: process_operation_element (engine.c:486)
==17373==    by 0x488BA74: get_operator_all (engine.c:117)
==17373== 


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to