[ 
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]

Reply via email to