You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by Vivian Wang <vi...@yahoo.com> on 2009/06/19 02:29:36 UTC
Help -- Need to figure out what has changed in source code
Hi All,
I am using axis2/c 1.5+ (checked out from trunk roughly one and half month before 1.6 release) for ws client. I have built my application first using 1.3. I notice that one piece of my code for freeing resources goes working fine in 1.3, crashes in 1.5+ and now working again in 1.6. I need to figure out what caused the crash in 1.5+ and what change make it work again in 1.6, as I am not ready yet to upgrade fully to 1.6. Please help me if you can. Thanks in advance!
Here is the code:
//freeing resources
//axiom_output_t* om_output
if (om_output)
{
axiom_output_free(om_output, env);
om_output = NULL;
}
// axis2_svc_client_t* wsf_service_client
if (wsf_service_client)
{
axis2_svc_client_free(wsf_service_client, env);
wsf_service_client = NULL;
}
//axiom_stax_builder_t* om_builder
if(om_builder)
{
axiom_stax_builder_free(om_builder, env);
om_builder = NULL;
}
//axutil_env_t* env
if (env)
{
axutil_env_free((axutil_env_t *) env);
env = NULL;
}
I am using axiom_output_t* to serialize ws reply node (together with xml_write), and using axiom_stax_builder_t* to create the request payload.
Thanks again!
Vivian
Re: Help -- Need to figure out what has changed in source code
Posted by Uthaiyashankar <sh...@wso2.com>.
Hi Vivian,
I think, this[1] is the fix, but could not confirm. You can try it and see.
By the way, it is better to move to Axis2/C 1.6.0 because it has lots of bug
fixes.
Regards,
Shankar
[1]
http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/hash.c?r1=762752&r2=762751&pathrev=762752
On Fri, Jun 19, 2009 at 1:26 PM, Vivian Wang <vi...@yahoo.com> wrote:
> Hi Shankar,
>
> The access violation happens in the following line when it tries to free
> om_builder (See code snappet in my previous message).
>
> AXIS2_FREE(env->allocator, (ht->array));
> Looking from the debugger, env->allocator points to an invalid address
> (0xfeeefeee), suggesting it has been released already.
>
> Here is the stack trace in debugger:
> ======
> axutil.dll!axutil_hash_free(axutil_hash_t * ht=0x089df150, const axutil_env
> * env=0x089deaf0) Line 623 + 0x12
> axiom.dll!axiom_element_free(axiom_element * om_element=0x089def50, const
> axutil_env * env=0x089deaf0) Line 723
> axiom.dll!axiom_node_free_detached_subtree(axiom_node *
> om_node=0x089deee8, const axutil_env * env=0x089deaf0) Line 165
> axiom.dll!axiom_node_free_tree(axiom_node * om_node=0x089deee8, const
> axutil_env * env=0x089deaf0) Line 224 + 0xd
> axiom.dll!axiom_document_free(axiom_document * document=0x089ded48, const
> axutil_env * env=0x089deaf0) Line 89
> axiom.dll!axiom_stax_builder_free(axiom_stax_builder *
> om_builder=0x089debf8, const axutil_env * env=0x089deaf0) Line 898
> ======
> Again, I am working on axis2/c 1.5+ code, I verified that the code works in
> 1.6 or even 1.3.
>
> Thanks for your help!
> Vivian
>
> ------------------------------
> *From:* Uthaiyashankar <sh...@wso2.com>
> *To:* Apache AXIS C User List <ax...@ws.apache.org>
> *Sent:* Thursday, June 18, 2009 7:38:33 PM
> *Subject:* Re: Help -- Need to figure out what has changed in source code
>
> Hi Vivian,
>
> Can you run your client with valgrind and send the logs when it crashes? We
> need the stack trace when it is crashing.
>
> Regards,
> Shankar
>
> On Fri, Jun 19, 2009 at 5:59 AM, Vivian Wang <vi...@yahoo.com>wrote:
>
>>
>> Hi All,
>>
>> I am using axis2/c 1.5+ (checked out from trunk roughly one and half month
>> before 1.6 release) for ws client. I have built my application first using
>> 1.3. I notice that one piece of my code for freeing resources goes working
>> fine in 1.3, crashes in 1.5+ and now working again in 1.6. I need to figure
>> out what caused the crash in 1.5+ and what change make it work again in 1.6,
>> as I am not ready yet to upgrade fully to 1.6. Please help me if you can.
>> Thanks in advance!
>>
>> Here is the code:
>>
>> //freeing resources
>> //axiom_output_t* om_output
>> if (om_output)
>> {
>> axiom_output_free(om_output, env);
>> om_output = NULL;
>> }
>> // axis2_svc_client_t* wsf_service_client
>> if (wsf_service_client)
>> {
>> axis2_svc_client_free(wsf_service_client, env);
>> wsf_service_client = NULL;
>> }
>> //axiom_stax_builder_t* om_builder
>> if(om_builder)
>> {
>> axiom_stax_builder_free(om_builder, env);
>> om_builder = NULL;
>> }
>>
>> //axutil_env_t* env
>> if (env)
>> {
>> axutil_env_free((axutil_env_t *) env);
>> env = NULL;
>> }
>>
>> I am using axiom_output_t* to serialize ws reply node (together with
>> xml_write), and using axiom_stax_builder_t* to create the request payload.
>>
>> Thanks again!
>> Vivian
>>
>>
>>
>>
>
>
> --
> S.Uthaiyashankar
> Software Architect
> WSO2 Inc.
> http://wso2.com/ - "The Open Source SOA Company"
>
>
>
>
--
S.Uthaiyashankar
Software Architect
WSO2 Inc.
http://wso2.com/ - "The Open Source SOA Company"
Re: Help -- Need to figure out what has changed in source code
Posted by Vivian Wang <vi...@yahoo.com>.
Hi Shankar,
The access violation happens in the following line when it tries to free om_builder (See code snappet in my previous message).
AXIS2_FREE(env->allocator, (ht->array));
Looking from the debugger, env->allocator points to an invalid address (0xfeeefeee), suggesting it has been released already.
Here is the stack trace in debugger:
======
axutil.dll!axutil_hash_free(axutil_hash_t * ht=0x089df150, const axutil_env * env=0x089deaf0) Line 623 + 0x12
axiom.dll!axiom_element_free(axiom_element * om_element=0x089def50, const axutil_env * env=0x089deaf0) Line 723
axiom.dll!axiom_node_free_detached_subtree(axiom_node * om_node=0x089deee8, const axutil_env * env=0x089deaf0) Line 165
axiom.dll!axiom_node_free_tree(axiom_node * om_node=0x089deee8, const axutil_env * env=0x089deaf0) Line 224 + 0xd
axiom.dll!axiom_document_free(axiom_document * document=0x089ded48, const axutil_env * env=0x089deaf0) Line 89
axiom.dll!axiom_stax_builder_free(axiom_stax_builder * om_builder=0x089debf8, const axutil_env * env=0x089deaf0) Line 898
======
Again, I am working on axis2/c 1.5+ code, I verified that the code works in 1.6 or even 1.3.
Thanks for your help!
Vivian
________________________________
From: Uthaiyashankar <sh...@wso2.com>
To: Apache AXIS C User List <ax...@ws.apache.org>
Sent: Thursday, June 18, 2009 7:38:33 PM
Subject: Re: Help -- Need to figure out what has changed in source code
Hi Vivian,
Can you run your client with valgrind and send the logs when it crashes? We need the stack trace when it is crashing.
Regards,
Shankar
On Fri, Jun 19, 2009 at 5:59 AM, Vivian Wang <vi...@yahoo.com> wrote:
Hi All,
I am using axis2/c 1.5+ (checked out from trunk roughly one and half month before 1.6 release) for ws client. I have built my application first using 1.3. I notice that one piece of my code for freeing resources goes working fine in 1.3, crashes in 1.5+ and now working again in 1.6. I need to figure out what caused the crash in 1.5+ and what change make it work again in 1.6, as I am not ready yet to upgrade fully to 1.6. Please help me if you can. Thanks in advance!
Here is the code:
//freeing resources
//axiom_output_t* om_output
if (om_output)
{
axiom_output_free(om_output, env);
om_output = NULL;
}
// axis2_svc_client_t* wsf_service_client
if (wsf_service_client)
{
axis2_svc_client_free(wsf_service_client, env);
wsf_service_client = NULL;
}
//axiom_stax_builder_t* om_builder
if(om_builder)
{
axiom_stax_builder_free(om_builder, env);
om_builder = NULL;
}
//axutil_env_t* env
if (env)
{
axutil_env_free((axutil_env_t *) env);
env = NULL;
}
I am using axiom_output_t* to serialize ws reply node (together with xml_write), and using axiom_stax_builder_t* to create the request payload.
Thanks again!
Vivian
--
S.Uthaiyashankar
Software Architect
WSO2 Inc.
http://wso2.com/ - "The Open Source SOA Company"
Re: Help -- Need to figure out what has changed in source code
Posted by Uthaiyashankar <sh...@wso2.com>.
Hi Vivian,
Can you run your client with valgrind and send the logs when it crashes? We
need the stack trace when it is crashing.
Regards,
Shankar
On Fri, Jun 19, 2009 at 5:59 AM, Vivian Wang <vi...@yahoo.com> wrote:
>
> Hi All,
>
> I am using axis2/c 1.5+ (checked out from trunk roughly one and half month
> before 1.6 release) for ws client. I have built my application first using
> 1.3. I notice that one piece of my code for freeing resources goes working
> fine in 1.3, crashes in 1.5+ and now working again in 1.6. I need to figure
> out what caused the crash in 1.5+ and what change make it work again in 1.6,
> as I am not ready yet to upgrade fully to 1.6. Please help me if you can.
> Thanks in advance!
>
> Here is the code:
>
> //freeing resources
> //axiom_output_t* om_output
> if (om_output)
> {
> axiom_output_free(om_output, env);
> om_output = NULL;
> }
> // axis2_svc_client_t* wsf_service_client
> if (wsf_service_client)
> {
> axis2_svc_client_free(wsf_service_client, env);
> wsf_service_client = NULL;
> }
> //axiom_stax_builder_t* om_builder
> if(om_builder)
> {
> axiom_stax_builder_free(om_builder, env);
> om_builder = NULL;
> }
>
> //axutil_env_t* env
> if (env)
> {
> axutil_env_free((axutil_env_t *) env);
> env = NULL;
> }
>
> I am using axiom_output_t* to serialize ws reply node (together with
> xml_write), and using axiom_stax_builder_t* to create the request payload.
>
> Thanks again!
> Vivian
>
>
>
>
--
S.Uthaiyashankar
Software Architect
WSO2 Inc.
http://wso2.com/ - "The Open Source SOA Company"