axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jl.lesi...@progexia.net
Subject Re: Segmentation fault when calling webservice
Date Mon, 11 Jun 2007 11:45:26 GMT
I've looked twice on my svc_skeleton_ops_var it seems ok, but I've found
how to reproduce the  bug. It's a linker problem.

If I take the echo example and I try to compile it with an external libs
(-l option of gcc) even if I dont modify the echo service code, the server
crashes.

My LD_LIBRARY_PATH seems ok so, I've tried to put a link to my lib in
/usr/lib, it crashes again. It seems that there's a problem in the axis
lib loader.

Regards,
JL



> Looking at the trace, most probably, this is to do with the init method
> of your service implementation.
> Could you please check the code where the svc_skeleton_ops are
> initialized. It would help to see either the code or the WSDL that you
> are using, if you have no concerns sending it to the list.
>
> Thanks,
> Samisa...
>
> Jean-Louis LESIEUR wrote:
>> Hello,
>>
>> Back to home !
>>
>> Here's the backtrace of my axis_http_server
>>
>> Program terminated with signal 11, Segmentation fault.
>> #0  0xb7e646a3 in axis2_msg_recv_make_new_svc_obj (msg_recv=0x80e4c70,
>> env=0x8126fd8, msg_ctx=0x8127a18) at msg_recv.c:157
>> 157         AXIS2_SVC_SKELETON_INIT((axis2_svc_skeleton_t
>> *)impl_class, env);
>> (gdb) backtrace
>> #0  0xb7e646a3 in axis2_msg_recv_make_new_svc_obj (msg_recv=0x80e4c70,
>> env=0x8126fd8, msg_ctx=0x8127a18) at msg_recv.c:157
>> #1  0xb7e647b4 in axis2_msg_recv_get_impl_obj (msg_recv=0x80e4c70,
>> env=0x8126fd8, msg_ctx=0x8127a18) at msg_recv.c:184
>> #2  0xb7e650f0 in
>> axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync
>> (msg_recv=0x80e4c70, env=0x8126fd8, msg_ctx=0x8127a18,
>> new_msg_ctx=0x812f0b8)
>>     at raw_xml_in_out_msg_recv.c:93
>> #3  0xb7e64e2d in axis2_msg_recv_invoke_business_logic
>> (msg_recv=0x80e4c70, env=0x8126fd8, in_msg_ctx=0x8127a18,
>> out_msg_ctx=0x812f0b8) at msg_recv.c:372
>> #4  0xb7e64c35 in axis2_msg_recv_receive_impl (msg_recv=0x80e4c70,
>> env=0x8126fd8, msg_ctx=0x8127a18, callback_recv_param=0x0) at
>> msg_recv.c:304
>> #5  0xb7e64e89 in axis2_msg_recv_receive (msg_recv=0x80e4c70,
>> env=0x8126fd8, msg_ctx=0x8127a18, callback_recv_param=0x0) at
>> msg_recv.c:407
>> #6  0xb7e59bae in axis2_engine_receive (engine=0x812ead8,
>> env=0x8126fd8, msg_ctx=0x8127a18) at engine.c:288
>> #7  0xb7f12ec6 in axis2_http_transport_utils_process_http_post_request
>> (env=0x8126fd8, msg_ctx=0x8127a18, in_stream=0x8127000,
>> out_stream=0x8127030,
>>     content_type=0x80c80b0 "application/soap+xml;charset=UTF-8",
>> content_length=262, soap_action_header=0x0, request_uri=0x8127be0
>> "http://127.0.0.1:9090/axis2/services/majcsp")
>>     at http_transport_utils.c:485
>> #8  0xb7f11686 in axis2_http_worker_process_request
>> (http_worker=0x81267f8, env=0x8126fd8, svr_conn=0x8126ff0,
>> simple_request=0x81270b0) at http_worker.c:299
>> #9  0xb7e1403a in axis2_svr_thread_worker_func (thd=0x8126f28,
>> data=0x8126818) at http_svr_thread.c:256
>> #10 0xb7ec241d in dummy_worker (opaque=0x8126f28) at thread_unix.c:85
>> #11 0xb7cbb31b in start_thread () from
>> /lib/tls/i686/cmov/libpthread.so.0
>> #12 0xb7c2c57e in clone () from /lib/tls/i686/cmov/libc.so.6
>>
>> It seem there's a problem with my skeleton. But I dont find what is
>> wrong in my source ... Here's my service :
>>
>>
>> #include <axiom_xml_writer.h>
>> #include <stdio.h>
>> #include <axis2_svc_skeleton.h>
>> #include <axutil_array_list.h>
>> #include <axis2_msg_ctx.h>
>> #include <stdio.h>
>> #include <axis2_svc_skeleton.h>
>> #include <axutil_log_default.h>
>> #include <axutil_error_default.h>
>> #include <axiom_text.h>
>> #include <axiom_node.h>
>> #include <axiom_element.h>
>> // THIS IS AN EXTERNAL .H WHERE YOU CAN FIND THE DECLARATION OF THE
>> FUNCTION ws_majcsp_update
>> #include "WSWrapper.h"
>>
>>
>> axiom_node_t* AXIS2_CALL
>> majcsp_invoke(axis2_svc_skeleton_t *svc_skeleton,
>>         const axutil_env_t *env,
>>         axiom_node_t *node,
>>         axis2_msg_ctx_t *msg_ctx);
>>
>>
>> int AXIS2_CALL
>> majcsp_init(axis2_svc_skeleton_t *svc_skeleton,
>>         const axutil_env_t *env);
>>
>> axiom_node_t* AXIS2_CALL
>> majcsp_on_fault(axis2_svc_skeleton_t *svc_skeli,
>>         const axutil_env_t *env, axiom_node_t *node);
>>
>>
>> int AXIS2_CALL
>> majcsp_free(axis2_svc_skeleton_t *svc_skeleton,
>>         const axutil_env_t *env);
>>
>>
>> static const axis2_svc_skeleton_ops_t majcsp_svc_skeleton_ops_var = {
>>     majcsp_init,
>>     majcsp_invoke,
>>     majcsp_on_fault,
>>     majcsp_free
>> };
>>
>>
>> int AXIS2_CALL
>> majcsp_init(axis2_svc_skeleton_t *svc_skeleton,
>>         const axutil_env_t *env)
>> {
>>     svc_skeleton->func_array = axutil_array_list_create(env, 0);
>>     axutil_array_list_add(svc_skeleton->func_array, env, "greet");
>>     return AXIS2_SUCCESS;
>> }
>>
>> axiom_node_t* AXIS2_CALL
>> majcsp_invoke(axis2_svc_skeleton_t *svc_skeleton,
>>         const axutil_env_t *env,
>>         axiom_node_t *node,
>>         axis2_msg_ctx_t *msg_ctx)
>> {
>>     // NEVER DISPLAYED !
>>         printf("\n\nINVOKE\n\n");
>>         // METHOD IN ANOTHER .SO
>>   return ws_majcsp_update(env, node);
>> }
>>
>>
>> axiom_node_t* AXIS2_CALL
>> majcsp_on_fault(axis2_svc_skeleton_t *svc_skeli,
>>         const axutil_env_t *env, axiom_node_t *node)
>> {
>>     axiom_node_t *error_node = NULL;
>>     axiom_node_t *text_node = NULL;
>>     axiom_element_t *error_ele = NULL;
>>
>>     error_ele = axiom_element_create(env, NULL, "EchoServiceError",
>> NULL,  &error_node);
>>     axiom_element_set_text(error_ele, env, "Echo service failed ",
>> text_node);
>>     return error_node;
>> }
>>
>>
>> int AXIS2_CALL
>> majcsp_free(axis2_svc_skeleton_t *svc_skeleton,
>>         const axutil_env_t *env)
>> {
>>
>>     if (svc_skeleton->func_array)
>>     {
>>         axutil_array_list_free(svc_skeleton->func_array, env);
>>         svc_skeleton->func_array = NULL;
>>     }
>>     if (svc_skeleton)
>>     {
>>         AXIS2_FREE(env->allocator, svc_skeleton);
>>         svc_skeleton = NULL;
>>     }
>>
>>     return AXIS2_SUCCESS;
>> }
>>
>>
>>
>> AXIS2_EXPORT int
>> axis2_remove_instance(axis2_svc_skeleton_t *inst,
>>         const axutil_env_t *env)
>> {
>>     axis2_status_t status = AXIS2_FAILURE;
>>     if (inst)
>>     {
>>         status = AXIS2_SVC_SKELETON_FREE(inst, env);
>>     }
>>     return status;
>> }
>>
>> axis2_svc_skeleton_t *
>> axis2_majcsp_create(const axutil_env_t *env)
>> {
>>     axis2_svc_skeleton_t *svc_skeleton = NULL;
>>     svc_skeleton = (axis2_svc_skeleton_t*) AXIS2_MALLOC(env->allocator,
>>             sizeof(axis2_svc_skeleton_t));
>>     svc_skeleton->ops = &majcsp_svc_skeleton_ops_var;
>>     svc_skeleton->func_array = NULL;
>>     return svc_skeleton;
>> }
>>
>> AXIS2_EXPORT int
>> axis2_get_instance(axis2_svc_skeleton_t **inst,
>>         const axutil_env_t *env)
>> {
>>     // NEVER DISPLAYED !!!
>>     printf("***GET_INSTANCE");
>>     *inst = axis2_majcsp_create(env);
>>     if (!(*inst))
>>     {
>>         return AXIS2_FAILURE;
>>     }
>>     return AXIS2_SUCCESS;
>> }
>>
>>
>> And here's my service.xml
>>
>> $ cat /usr/local/axis2c/services/majcsp/services.xml
>> <service name="majcsp">
>>    <parameter name="ServiceClass" locked="xsd:false">majcsp</parameter>
>>    <description>
>>         Quick start guide hello service sample.
>>    </description>
>>    <operation name="greet"/>
>> </service>
>>
>> Hope these infos can guide you !
>>
>> Thanks again for your help !
>>
>> Regards,
>> JL
>>
>> jl.lesieur@progexia.net a écrit :
>>> Thanks, my compilations flags in my ws are not in cause because the
>>> backtrace not mention the .so of my webservice. To be more precise, the
>>> get_instance of my ws is not executed (I've validated this by put a
>>> printf
>>> in it, and he did not display nothing).
>>>
>>> If it can help I can compile axis with -g option, how can I do this ?
>>> (I
>>> suppose it can be done with a ./configure option but if you can give me
>>> the right option it help me).
>>>
>>> The service.xml is based on the echo one (I've only changed the name
>>> echo
>>> by the name of my webservice).
>>>
>>> I'm now at work, so I'll can do a test this evening.
>>>
>>> Thanks again !
>>> JL
>>>
>>>
>>>> jl.lesieur@progexia.net wrote:
>>>>
>>>>> No pb,
>>>>>
>>>>> I've already posted an issue for this (perhaps it's a mistake ?)
>>>>>
>>>>>
>>>> No it is not a mistake. Raising a Jira is the preferred method.
>>>>
>>>> BTW, it looks like you have not included -g in your CFLAGS, please do
>>>> so
>>>> that the backtrace would include line numbers.
>>>> Having a glance at the backtrace, it looks like there is something
>>>> wrong
>>>> in the service object creation. Could possibly be something wrong in
>>>> the
>>>> service implementation, or the configuration.
>>>>
>>>> Samisa...
>>>>
>>>>> https://issues.apache.org/jira/browse/AXIS2C-612
>>>>>
>>>>> Here's the backtrace :
>>>>>
>>>>> #0 0xb7e62b87 in axis2_msg_recv_make_new_svc_obj () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_engine.so.0
>>>>> #1 0xb7e62c98 in axis2_msg_recv_get_impl_obj () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_engine.so.0
>>>>> #2 0xb7e635d4 in
>>>>> axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync
>>>>> () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_engine.so.0
>>>>> #3 0xb7e63311 in axis2_msg_recv_invoke_business_logic () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_engine.so.0
>>>>> #4 0xb7e63119 in axis2_msg_recv_receive_impl () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_engine.so.0
>>>>> #5 0xb7e6336d in axis2_msg_recv_receive () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_engine.so.0
>>>>> #6 0xb7e58092 in axis2_engine_receive () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_engine.so.0
>>>>> #7 0xb7f0d5de in axis2_http_transport_utils_process_http_post_request
>>>>> ()
>>>>> from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_http_common.so.0
>>>>> #8 0xb7f0bf20 in axis2_http_worker_process_request () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_http_common.so.0
>>>>> #9 0xb7e140ca in axis2_svr_thread_worker_func () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxis2_http_receiver.so.0
>>>>> #10 0xb7ebf265 in dummy_worker () from
>>>>> /home/jllesieur/SVNROOT/axis2c-bin-1.0.0-linux/lib/libaxutil.so.0
>>>>> #11 0xb7cb931b in start_thread () from
>>>>> /lib/tls/i686/cmov/libpthread.so.0
>>>>> #12 0xb7c2957e in clone () from /lib/tls/i686/cmov/libc.so.6
>>>>>
>>>>>
>>>>> Thanks a lot for your help !
>>>>> Jean-Louis
>>>>>
>>>>>
>>>>>
>>>>>> Is it possible for you to use gdb and send the back trace at the
>>>>>> point
>>>>>> it segfaults please? That would help us to understand where the
>>>>>> exact
>>>>>> problem is. It is hard to tell the problem form the log.
>>>>>>
>>>>>> Thanks,
>>>>>> Samisa...
>>>>>>
>>>>>> Jean-Louis LESIEUR wrote:
>>>>>>
>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> I have a problem when I deploy a service. I've build a simple
>>>>>>> service
>>>>>>> based on the "echo" sample, except in the fact that this service
>>>>>>> call
>>>>>>> a function in other custom shared library.
>>>>>>>
>>>>>>> I'm on ubuntu linux 7.04 with axis 1.0.0.
>>>>>>>
>>>>>>> I've tried to compile my service with this command :
>>>>>>>
>>>>>>> gcc -shared -olibmajcsp.so -I$AXIS2C_HOME/include/axis2-1.0/
>>>>>>> -L$AXIS2C_HOME/lib -laxis2  -L<here, my custom .so path>
-l<here my
>>>>>>> lib> -I<here my include path> <here my service>
>>>>>>>
>>>>>>> I have no error in compilation.
>>>>>>>
>>>>>>> So I deploy the .so of this service and try to call him with
echo
>>>>>>> client sample axis_http_server crashes with a segmentation fault
>>>>>>> ...
>>>>>>> Here's the result of execution of axis_http_server :
>>>>>>>
>>>>>>> $ sudo ./axis 2_http_server -l 5 -f /dev/stderr
>>>>>>> Started Simple Axis2 HTTP Server ...
>>>>>>> [Thu Jun  7 23:19:47 2007] [info]  Starting HTTP server thread
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] http_worker.c(155) Client
HTTP
>>>>>>> version HTTP/1.1
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] soap_builder.c(748) identified
>>>>>>> soap
>>>>>>> version is soap12
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] engine.c(571) Invoking phase
>>>>>>> Transport
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] phase.c(195) Invoke the handler
>>>>>>> request_uri_based_dispatcher within the phase Transport
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] req_uri_disp.c(103) Checking
for
>>>>>>> service using target endpoint address :
>>>>>>> http://127.0.0.1:9090/axis2/services/majcsp
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] req_uri_disp.c(124) Service
>>>>>>> found
>>>>>>> using target endpoint address
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] engine.c(571) Invoking phase
>>>>>>> PreDispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] phase.c(195) Invoke the handler
>>>>>>> AddressingInHandler within the phase PreDispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [info]  Starting addressing in handler
>>>>>>> .........
>>>>>>> [Thu Jun  7 23:19:51 2007] [info]  addr_in_handler.c
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] engine.c(571) Invoking phase
>>>>>>> Dispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] phase.c(195) Invoke the handler
>>>>>>> soap_message_body_based_dispatcher within the phase Dispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] soap_body_disp.c(217) Checking
>>>>>>> for
>>>>>>> operation using SOAP message body's first child's local name
:
>>>>>>> echoString
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] soap_body_disp.c(226) Operation
>>>>>>> found using SOAP message body's first child's local name
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] phase.c(195) Invoke the handler
>>>>>>> addressing_based_dispatcher within the phase Dispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] phase.c(195) Invoke the handler
>>>>>>> soap_action_based_dispatcher within the phase Dispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] engine.c(571) Invoking phase
>>>>>>> PostDispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] phase.c(195) Invoke the handler
>>>>>>> dispatch_post_conditions_evaluator within the phase PostDispatch
>>>>>>> [Thu Jun  7 23:19:51 2007] [debug] phase.c(195) Invoke the handler
>>>>>>> context_handler within the phase PostDispatch
>>>>>>> Erreur de segmentation (core dumped)
>>>>>>>
>>>>>>> Does anybody have experienced this kind of problem ?
>>>>>>>
>>>>>>> Thanks for your help !
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>>>>>>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Samisa Abeysinghe : http://www.wso2.org/ (WSO2 Oxygen Tank - Web
>>>>>> Services
>>>>>> Developers' Portal)
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>>>>>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>>>>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>>>>
>>>>>
>>>>>
>>>>>
>>>> --
>>>> Samisa Abeysinghe : http://www.wso2.org/ (WSO2 Oxygen Tank - Web
>>>> Services
>>>> Developers' Portal)
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>>>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>>>
>>>>
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>>
>>>
>>
>>
>> --
>> ------------------------------------------------------------------------
>> *Progexia*
>> Hôtel Technologique - B.P.100
>> 45 Rue F. Joliot Curie
>> Technopôle de Château-Gombert
>> 13382 Marseille CEDEX 13 - FRANCE
>>
>> Téléphone : 04 91 11 88 19 / Fax : 04 91 11 88 01
>> web : http://www.progexia.net
>>
>> ------------------------------------------------------------------------
>> /
>>
>> "Ce courriel et les documents qui y sont attachés peuvent contenir des
>> informations confidentielles. Si vous n'êtes pas le destinataire
>> escompté, merci d'en informer l'expéditeur immédiatement et de
>> détruire ce courriel ainsi que tous les documents attachés de votre
>> système informatique. Toute divulgation, distribution ou copie du
>> présent courriel et des documents attachés sans autorisation préalable
>> de son émetteur est interdite."
>>
>> "This e-mail and any attached documents may contain confidential or
>> proprietary information. If you are not the intended recipient, please
>> advise the sender immediately and delete this e-mail and all attached
>> documents from your computer system. Any unauthorised disclosure,
>> distribution or copying hereof is prohibited."
>>
>> /
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>
> --
> Samisa Abeysinghe : http://www.bloglines.com/blog/samisa
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>


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


Mime
View raw message