You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Sathya Raghunathan <pa...@gmail.com> on 2007/09/25 15:31:20 UTC

Client crashed while recieving response

Hi Dimuthu,

I am forwarding this mail, because there was a failure in delivery last
time.

Thanks for the explanation. I understood the concept behind recreating an
adb object at the client side. The only thing is, when i access the output
message from the test client code, the client crashes

I checked with the tcpmon utility.  From the tcpmon, I am able to see the
input message value and the output message field's values in the xml format.
I have also attached the sample of the tcpmon.log.

So, i believe that my service is working. But why am i not able to print the
value in the test client code?
Issue No 1:

In my test client code (attached parse_client.c)
I am printing the value of a field in output message as below.
printf ("The address =
%u\n",adb_pInterchange_get_pInterchange(parse_res,env)); This printf gives
address as 0.

And the client code crashed at the next printf because this address is  0
and i am dereferencing it.
printf("The internal intref number = %u\n",
adb_INTERCHANGE_get_internal_intref_no(adb_pInterchange_get_pInterchange(parse_res,env),env));
// Crashed here

and the gdb output is below. If you can see _INTERCHANGE=0x0. It is strange.
0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no
(_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
1811                    return _INTERCHANGE-> attrib_internal_intref_no;
(gdb) where
#0  0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no
(_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
#1  0x000000000045b9f3 in main (argc=1, argv=0x7fff89068888) at
parse_client.c:47

Issue No 2:

The server still runs at this point. Now the second time i run the client,
the server crashes. The gdb output for this is

0x000000313da77180 in strlen () from /lib64/libc.so.6
(gdb) where
#0  0x000000313da77180 in strlen () from /lib64/libc.so.6
#1  0x00002aaaaaf14c13 in *axutil_strlen *(s=0x60 <Address 0x60 out of
bounds>) at string.c:475
#2  0x00002aaaac0a83cf in
*adb_INTERCHANGE_serialize*(_INTERCHANGE=0x71edb0, env=0x7112b0,
parent=0x71f260, has_parent=1)
    at adb_INTERCHANGE.c:1379
#3  0x00002aaaac0edd81 in adb_pInterchange_serialize
(_pInterchange=0x71ecf0, env=0x7112b0, parent=0x71b390, has_parent=0)
    at adb_pInterchange.c:282
#4  0x00002aaaac0f43de in axis2_svc_skel_ParseMessage_invoke
(svc_skeleton=0x71c880, env=0x7112b0, content_node=0x71ac30,
    msg_ctx=0x71b220) at axis2_svc_skel_ParseMessage.c:159
#5  0x00002aaaab37e337 in
axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync (msg_recv=<value
optimized out>, env=0x7112b0,
    msg_ctx=0x71df40, new_msg_ctx=0x71b220) at raw_xml_in_out_msg_recv.c:209
#6  0x00002aaaab37e001 in axis2_msg_recv_receive_impl (msg_recv=0x6f5e20,
env=0x7112b0, msg_ctx=0x71df40,
    callback_recv_param=<value optimized out>) at msg_recv.c:304
#7  0x00002aaaab3770f5 in axis2_engine_receive (engine=0x71aab0,
env=0x7112b0, msg_ctx=0x71df40) at engine.c:288
#8  0x00002aaaaaab87af in
axis2_http_transport_utils_process_http_post_request (env=0x7112b0,
msg_ctx=0x71df40,
    in_stream=<value optimized out>, out_stream=<value optimized out>,
content_type=0x71c6c0 "text/xml;charset=UTF-8",
    content_length=<value optimized out>, soap_action_header=0x712d10,
    request_uri=0x71e0b0 " http://127.0.0.1:9090/axis2/services/parseMessage
<http://127.0.0.1:9090/axis2/services/parseMessage>") at
http_transport_utils.c:485
#9  0x00002aaaaaab690a in axis2_http_worker_process_request
(http_worker=0x712180, env=0x7112b0, svr_conn=0x71c9c0,
    simple_request=0x71b650) at http_worker.c:299
#10 0x00002aaaab7dbeae in axis2_svr_thread_worker_func (thd=0x71c970,
data=0x71c990) at http_svr_thread.c:256
#11 0x000000313ea061c5 in start_thread () from /lib64/libpthread.so.0
#12 0x000000313dad062d in clone () from /lib64/libc.so.6

Let me know if you need any further information from me.

Thanks
Sathya

Re: Client crashed while recieving response

Posted by Dimuthu Gamage <di...@gmail.com>.
Download the latest axis2/java snapshot from,
http://people.apache.org/dist/axis2/nightly/axis2-SNAPSHOT-bin.zip

Thanks
Dimuthu


On 9/27/07, Sathya Raghunathan <Sa...@infosys.com> wrote:
>
>
> Hi Dimuthu,
>
> I am working with axis2-1.3 version. So what is the latest now?
>
> Thanks
> Sathya
> ________________________________
> From: Dimuthu Gamage [dimuthuc@gmail.com]
> Sent: Thursday, September 27, 2007 10:22 AM
> To: Apache AXIS C User List
> Subject: Re: Client crashed while recieving response
>
> Hi Sathya,
>
> Since your service is running fine, the error should be in the deserialize
> logic. And there were some bugs in the deserialize logic. But I think in the
> latest axis2/java source svn, these bugs are fixed.  (At least current test
> cases are working fine)
>
> And AFIK the second problem (The server crash) was also  a known one, not
> keeping copy of strings inside adb objects. That is also fixed in the latest
> svn.
>
> Thanks
> Dimuthu
>
> On 9/25/07, Sathya Raghunathan <pappu.raghunathan@gmail.com<mailto:
> pappu.raghunathan@gmail.com>> wrote:
> Hi Dimuthu,
>
> I am forwarding this mail, because there was a failure in delivery last
> time.
>
> Thanks for the explanation. I understood the concept behind recreating an
> adb object at the client side. The only thing is, when i access the output
> message from the test client code, the client crashes
>
> I checked with the tcpmon utility.  From the tcpmon, I am able to see the
> input message value and the output message field's values in the xml format.
> I have also attached the sample of the tcpmon.log.
>
> So, i believe that my service is working. But why am i not able to print
> the value in the test client code?
> Issue No 1:
>
> In my test client code (attached parse_client.c)
> I am printing the value of a field in output message as below.
> printf ("The address =
> %u\n",adb_pInterchange_get_pInterchange(parse_res,env)); This printf gives
> address as 0.
>
> And the client code crashed at the next printf because this address is  0
> and i am dereferencing it.
> printf("The internal intref number = %u\n",
> adb_INTERCHANGE_get_internal_intref_no(adb_pInterchange_get_pInterchange(parse_res,env),env));
> // Crashed here
>
> and the gdb output is below. If you can see _INTERCHANGE=0x0. It is
> strange.
> 0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no
> (_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
> 1811                    return _INTERCHANGE-> attrib_internal_intref_no;
> (gdb) where
> #0  0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no
> (_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
> #1  0x000000000045b9f3 in main (argc=1, argv=0x7fff89068888) at
> parse_client.c:47
>
> Issue No 2:
>
> The server still runs at this point. Now the second time i run the client,
> the server crashes. The gdb output for this is
>
> 0x000000313da77180 in strlen () from /lib64/libc.so.6
> (gdb) where
> #0  0x000000313da77180 in strlen () from /lib64/libc.so.6
> #1  0x00002aaaaaf14c13 in axutil_strlen (s=0x60 <Address 0x60 out of
> bounds>) at string.c:475
> #2  0x00002aaaac0a83cf in adb_INTERCHANGE_serialize
> (_INTERCHANGE=0x71edb0, env=0x7112b0, parent=0x71f260, has_parent=1)
>     at adb_INTERCHANGE.c:1379
> #3  0x00002aaaac0edd81 in adb_pInterchange_serialize
> (_pInterchange=0x71ecf0, env=0x7112b0, parent=0x71b390, has_parent=0)
>     at adb_pInterchange.c:282
> #4  0x00002aaaac0f43de in axis2_svc_skel_ParseMessage_invoke
> (svc_skeleton=0x71c880, env=0x7112b0, content_node=0x71ac30,
>     msg_ctx=0x71b220) at axis2_svc_skel_ParseMessage.c:159
> #5  0x00002aaaab37e337 in
> axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync (msg_recv=<value
> optimized out>, env=0x7112b0,
>     msg_ctx=0x71df40, new_msg_ctx=0x71b220) at
> raw_xml_in_out_msg_recv.c:209
> #6  0x00002aaaab37e001 in axis2_msg_recv_receive_impl (msg_recv=0x6f5e20,
> env=0x7112b0, msg_ctx=0x71df40,
>     callback_recv_param=<value optimized out>) at msg_recv.c:304
> #7  0x00002aaaab3770f5 in axis2_engine_receive (engine=0x71aab0,
> env=0x7112b0, msg_ctx=0x71df40) at engine.c:288
> #8  0x00002aaaaaab87af in
> axis2_http_transport_utils_process_http_post_request (env=0x7112b0,
> msg_ctx=0x71df40,
>     in_stream=<value optimized out>, out_stream=<value optimized out>,
> content_type=0x71c6c0 "text/xml;charset=UTF-8",
>     content_length=<value optimized out>, soap_action_header=0x712d10,
>     request_uri=0x71e0b0 " http://127.0.0.1:9090/axis2/services/parseMessage <
> http://127.0.0.1:9090/axis2/services/parseMessage> ") at
> http_transport_utils.c:485
> #9  0x00002aaaaaab690a in axis2_http_worker_process_request
> (http_worker=0x712180, env=0x7112b0, svr_conn=0x71c9c0,
>     simple_request=0x71b650) at http_worker.c:299
> #10 0x00002aaaab7dbeae in axis2_svr_thread_worker_func (thd=0x71c970,
> data=0x71c990) at http_svr_thread.c:256
> #11 0x000000313ea061c5 in start_thread () from /lib64/libpthread.so.0
> #12 0x000000313dad062d in clone () from /lib64/libc.so.6
>
> Let me know if you need any further information from me.
>
> Thanks
> Sathya
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org <mailto:
> axis-c-user-unsubscribe@ws.apache.org>
> For additional commands, e-mail: axis-c-user-help@ws.apache.org<mailto:
> axis-c-user-help@ws.apache.org>
>
>
>
> **************** CAUTION - Disclaimer *****************
> This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended
> solely for the use of the addressee(s). If you are not the intended
> recipient, please notify the sender by e-mail and delete the original
> message. Further, you are not to copy, disclose, or distribute this e-mail
> or its contents to any other person and any such actions are unlawful. This
> e-mail may contain viruses. Infosys has taken every reasonable precaution to
> minimize this risk, but is not liable for any damage you may sustain as a
> result of any virus in this e-mail. You should carry out your own virus
> checks before opening the e-mail or attachment. Infosys reserves the right
> to monitor and review the content of all messages sent to or from this
> e-mail address. Messages sent to or from this e-mail address may be stored
> on the Infosys e-mail system.
> ***INFOSYS******** End of Disclaimer ********INFOSYS***
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>

RE: Client crashed while recieving response

Posted by Sathya Raghunathan <Sa...@infosys.com>.
Hi Dimuthu,

I am working with axis2-1.3 version. So what is the latest now?

Thanks
Sathya
________________________________
From: Dimuthu Gamage [dimuthuc@gmail.com]
Sent: Thursday, September 27, 2007 10:22 AM
To: Apache AXIS C User List
Subject: Re: Client crashed while recieving response

Hi Sathya,

Since your service is running fine, the error should be in the deserialize logic. And there were some bugs in the deserialize logic. But I think in the latest axis2/java source svn, these bugs are fixed.  (At least current test cases are working fine)

And AFIK the second problem (The server crash) was also  a known one, not keeping copy of strings inside adb objects. That is also fixed in the latest svn.

Thanks
Dimuthu

On 9/25/07, Sathya Raghunathan <pa...@gmail.com>> wrote:
Hi Dimuthu,

I am forwarding this mail, because there was a failure in delivery last time.

Thanks for the explanation. I understood the concept behind recreating an adb object at the client side. The only thing is, when i access the output message from the test client code, the client crashes

I checked with the tcpmon utility.  From the tcpmon, I am able to see the input message value and the output message field's values in the xml format. I have also attached the sample of the tcpmon.log.

So, i believe that my service is working. But why am i not able to print the value in the test client code?
Issue No 1:

In my test client code (attached parse_client.c)
I am printing the value of a field in output message as below.
printf ("The address = %u\n",adb_pInterchange_get_pInterchange(parse_res,env)); This printf gives address as 0.

And the client code crashed at the next printf because this address is  0 and i am dereferencing it.
printf("The internal intref number = %u\n",     adb_INTERCHANGE_get_internal_intref_no(adb_pInterchange_get_pInterchange(parse_res,env),env)); // Crashed here

and the gdb output is below. If you can see _INTERCHANGE=0x0. It is strange.
0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no (_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
1811                    return _INTERCHANGE-> attrib_internal_intref_no;
(gdb) where
#0  0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no (_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
#1  0x000000000045b9f3 in main (argc=1, argv=0x7fff89068888) at parse_client.c:47

Issue No 2:

The server still runs at this point. Now the second time i run the client, the server crashes. The gdb output for this is

0x000000313da77180 in strlen () from /lib64/libc.so.6
(gdb) where
#0  0x000000313da77180 in strlen () from /lib64/libc.so.6
#1  0x00002aaaaaf14c13 in axutil_strlen (s=0x60 <Address 0x60 out of bounds>) at string.c:475
#2  0x00002aaaac0a83cf in adb_INTERCHANGE_serialize (_INTERCHANGE=0x71edb0, env=0x7112b0, parent=0x71f260, has_parent=1)
    at adb_INTERCHANGE.c:1379
#3  0x00002aaaac0edd81 in adb_pInterchange_serialize (_pInterchange=0x71ecf0, env=0x7112b0, parent=0x71b390, has_parent=0)
    at adb_pInterchange.c:282
#4  0x00002aaaac0f43de in axis2_svc_skel_ParseMessage_invoke (svc_skeleton=0x71c880, env=0x7112b0, content_node=0x71ac30,
    msg_ctx=0x71b220) at axis2_svc_skel_ParseMessage.c:159
#5  0x00002aaaab37e337 in axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync (msg_recv=<value optimized out>, env=0x7112b0,
    msg_ctx=0x71df40, new_msg_ctx=0x71b220) at raw_xml_in_out_msg_recv.c:209
#6  0x00002aaaab37e001 in axis2_msg_recv_receive_impl (msg_recv=0x6f5e20, env=0x7112b0, msg_ctx=0x71df40,
    callback_recv_param=<value optimized out>) at msg_recv.c:304
#7  0x00002aaaab3770f5 in axis2_engine_receive (engine=0x71aab0, env=0x7112b0, msg_ctx=0x71df40) at engine.c:288
#8  0x00002aaaaaab87af in axis2_http_transport_utils_process_http_post_request (env=0x7112b0, msg_ctx=0x71df40,
    in_stream=<value optimized out>, out_stream=<value optimized out>, content_type=0x71c6c0 "text/xml;charset=UTF-8",
    content_length=<value optimized out>, soap_action_header=0x712d10,
    request_uri=0x71e0b0 " http://127.0.0.1:9090/axis2 /services/parseMessage <http://127.0.0.1:9090/axis2/services/parseMessage> ") at http_transport_utils.c:485
#9  0x00002aaaaaab690a in axis2_http_worker_process_request (http_worker=0x712180, env=0x7112b0, svr_conn=0x71c9c0,
    simple_request=0x71b650) at http_worker.c:299
#10 0x00002aaaab7dbeae in axis2_svr_thread_worker_func (thd=0x71c970, data=0x71c990) at http_svr_thread.c:256
#11 0x000000313ea061c5 in start_thread () from /lib64/libpthread.so.0
#12 0x000000313dad062d in clone () from /lib64/libc.so.6

Let me know if you need any further information from me.

Thanks
Sathya

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org <ma...@ws.apache.org>
For additional commands, e-mail: axis-c-user-help@ws.apache.org<ma...@ws.apache.org>



**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


Re: Client crashed while recieving response

Posted by Dimuthu Gamage <di...@gmail.com>.
Hi Sathya,

Since your service is running fine, the error should be in the deserialize
logic. And there were some bugs in the deserialize logic. But I think in the
latest axis2/java source svn, these bugs are fixed.  (At least current test
cases are working fine)

And AFIK the second problem (The server crash) was also  a known one, not
keeping copy of strings inside adb objects. That is also fixed in the latest
svn.

Thanks
Dimuthu

On 9/25/07, Sathya Raghunathan <pa...@gmail.com> wrote:
>
> Hi Dimuthu,
>
> I am forwarding this mail, because there was a failure in delivery last
> time.
>
> Thanks for the explanation. I understood the concept behind recreating an
> adb object at the client side. The only thing is, when i access the output
> message from the test client code, the client crashes
>
> I checked with the tcpmon utility.  From the tcpmon, I am able to see the
> input message value and the output message field's values in the xml format.
> I have also attached the sample of the tcpmon.log.
>
> So, i believe that my service is working. But why am i not able to print
> the value in the test client code?
> Issue No 1:
>
> In my test client code (attached parse_client.c)
> I am printing the value of a field in output message as below.
> printf ("The address =
> %u\n",adb_pInterchange_get_pInterchange(parse_res,env)); This printf gives
> address as 0.
>
> And the client code crashed at the next printf because this address is  0
> and i am dereferencing it.
> printf("The internal intref number = %u\n",
> adb_INTERCHANGE_get_internal_intref_no(adb_pInterchange_get_pInterchange(parse_res,env),env));
> // Crashed here
>
> and the gdb output is below. If you can see _INTERCHANGE=0x0. It is
> strange.
> 0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no
> (_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
> 1811                    return _INTERCHANGE-> attrib_internal_intref_no;
> (gdb) where
> #0  0x000000000041257f in adb_INTERCHANGE_get_internal_intref_no
> (_INTERCHANGE=0x0, env=0x698340) at adb_INTERCHANGE.c:1811
> #1  0x000000000045b9f3 in main (argc=1, argv=0x7fff89068888) at
> parse_client.c:47
>
> Issue No 2:
>
> The server still runs at this point. Now the second time i run the client,
> the server crashes. The gdb output for this is
>
> 0x000000313da77180 in strlen () from /lib64/libc.so.6
> (gdb) where
> #0  0x000000313da77180 in strlen () from /lib64/libc.so.6
> #1  0x00002aaaaaf14c13 in *axutil_strlen *(s=0x60 <Address 0x60 out of
> bounds>) at string.c:475
> #2  0x00002aaaac0a83cf in *adb_INTERCHANGE_serialize*(_INTERCHANGE=0x71edb0, env=0x7112b0, parent=0x71f260, has_parent=1)
>     at adb_INTERCHANGE.c:1379
> #3  0x00002aaaac0edd81 in adb_pInterchange_serialize
> (_pInterchange=0x71ecf0, env=0x7112b0, parent=0x71b390, has_parent=0)
>     at adb_pInterchange.c:282
> #4  0x00002aaaac0f43de in axis2_svc_skel_ParseMessage_invoke
> (svc_skeleton=0x71c880, env=0x7112b0, content_node=0x71ac30,
>     msg_ctx=0x71b220) at axis2_svc_skel_ParseMessage.c:159
> #5  0x00002aaaab37e337 in
> axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync (msg_recv=<value
> optimized out>, env=0x7112b0,
>     msg_ctx=0x71df40, new_msg_ctx=0x71b220) at
> raw_xml_in_out_msg_recv.c:209
> #6  0x00002aaaab37e001 in axis2_msg_recv_receive_impl (msg_recv=0x6f5e20,
> env=0x7112b0, msg_ctx=0x71df40,
>     callback_recv_param=<value optimized out>) at msg_recv.c:304
> #7  0x00002aaaab3770f5 in axis2_engine_receive (engine=0x71aab0,
> env=0x7112b0, msg_ctx=0x71df40) at engine.c:288
> #8  0x00002aaaaaab87af in
> axis2_http_transport_utils_process_http_post_request (env=0x7112b0,
> msg_ctx=0x71df40,
>     in_stream=<value optimized out>, out_stream=<value optimized out>,
> content_type=0x71c6c0 "text/xml;charset=UTF-8",
>     content_length=<value optimized out>, soap_action_header=0x712d10,
>     request_uri=0x71e0b0 " http://127.0.0.1:9090/axis2/services/parseMessage
> <http://127.0.0.1:9090/axis2/services/parseMessage>") at
> http_transport_utils.c:485
> #9  0x00002aaaaaab690a in axis2_http_worker_process_request
> (http_worker=0x712180, env=0x7112b0, svr_conn=0x71c9c0,
>     simple_request=0x71b650) at http_worker.c:299
> #10 0x00002aaaab7dbeae in axis2_svr_thread_worker_func (thd=0x71c970,
> data=0x71c990) at http_svr_thread.c:256
> #11 0x000000313ea061c5 in start_thread () from /lib64/libpthread.so.0
> #12 0x000000313dad062d in clone () from /lib64/libc.so.6
>
> Let me know if you need any further information from me.
>
> Thanks
> Sathya
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>