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]