[ https://issues.apache.org/jira/browse/AXIS2C-1236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12614754#action_12614754 ]
Chris Rose commented on AXIS2C-1236: ------------------------------------ A cursory check suggests it's not; I don't access the service client from multiple threads. I'll experiment with it a bit and report back, though. Won't be til Monday, however. > 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]