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 Alex Bolgarov <al...@bolgarov.org> on 2008/03/18 22:17:38 UTC

Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Hi,

I'm trying to write a SOAP service using Axis2/C framework. I need the
service to be written in a C++ language, so as a first step I took an
'echo service' example from the Axis distribution, renamed it to .cpp
file  and compiled/linked it with 'g++' compiler. No compile errors
reported, the resulting .so library I copied to the services
directory, together with the corresponding services.xml file.

I compiled a sample client that tries to send something to my new service.

Than I strarted an 'axis2_http_server' application and run the client,
which failed with a SOAP error message about failure to load a dll.

I found in the Axis2/C source code the place where it loads the .so
file (axutil_class_loader_load_lib() in file 'class_loader.c'), and
added debug log message that reports into the log the exact text of an
error as it is returned by dlerror() function, not just a message that
if failed to load a library, like this (after line 156 of the file
'class_loader.c'):

    if (!dl_handler)
    {
        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
                        "AXIS2_PLATFORM_LOADLIB error: [%s]",
                        AXIS2_PLATFORM_LOADLIB_ERROR);

   ...
   ...
   ...

after recompiling the Axis and running the test again, I see in the
log following message:

 class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
[/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
undefined symbol: __gxx_personality_v0]

I understand that the real problem is that the axis2_http_server
application is not compiled/linked with the g++ support libraries.
Several years ago I had similar problem when writing a C++ module for
Apache's httpd server, but there the solution was to use an httpd's
directive 'LoadFile' to load the g++ runtime library into the httpd
environment before loading my C++ module with the LoadModule
directive.

So the question is, does anyone knows how to make the
axis2_http_server to load the g++ runtime library before it loads a
C++ .so service library?

For the record, I'm doing all this on the Ubuntu 7.10, and here is a
result of running 'g++ --version:

$ g++ --version
g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)

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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Senaka Fernando <se...@wso2.com>.
Hi Alex,

As it says, add,

#ifdef __cplusplus
extern "C"{
#endif

In the top of your file, after including the headers. And, add,

#ifdef __cplusplus
}
#endif

at the very end. This way, you will be able to set extern "C" for all the
methods in the source file.

I too didn't require the LD_PRELOAD when I tried.

Regards,
Senaka.

> Hi Manjula,
>
> Yes, you are right. I removed setting LD_PRELOAD from my script that
> starts the axis server, the test still runs OK.
>
> And yes, I have seen the mention in the Axis2/C FAQ about using
> 'extern "C"'. I just have to suggest that the FAQ mention using
> 'extern "C"' specifically with axis2_get_instance() and
> axis2_remove_instance() functions - initially I have added it to all
> functions in the sample code but these two :)
>
>
> Thank you,
>
>     alex.
>
>
> On Thu, Mar 20, 2008 at 12:10 AM, Manjula Peiris <ma...@wso2.com> wrote:
>> Hi Alex,
>>
>>  I think extern C alone should solve the problem. Because recently I did
>>  the same thing and it worked for me. Can you try only with extern C
>>  solution ?
>>
>>  Thanks,
>>  -Manjula.
>>
>>
>>
>>
>>  On Wed, 2008-03-19 at 13:36 -0400, Alex Bolgarov wrote:
>>  > OK, I used LD_PRELAOD env. variable to preload the libstdc++.so when
>>  > starting the axis2_http_server, like this:
>>  >
>>  > LD_PRELOAD=/usr/lib/libstdc++.so.6 ./axis2_http_server -r
>> ${AXIS2C_HOME} -l 6 &
>>  >
>>  > and now my test runs successfully: the client sends a request, I see
>>  > in the axis log tracing of function calls that I added to every
>>  > function in my service, and then the client receives a response.
>>  >
>>  > I'm not sure that a solution with LD_PRELOAD is a good one, does any
>>  > one have an opinion?
>>  >
>>  > Anyway, in production all this is going to run as a Apache httpd
>>  > module, and we already know how to load libstdc++.so into the httpd,
>>  > so I'm going now to build the mod_axis and try to run the test again,
>>  > now with httpd :)
>>  >
>>  >
>>  > >  But, amazingly I never got, undefined symbol:
>> __gxx_personality_v0.
>>  > >
>>  > >  Instead my server seg_faulted and crashed.
>>  >
>>  > Senaka, after I did something (I don't remember exactly what, I have
>>  > done a lot of experimenting this morning) I also stopped getting
>>  > undefined __gxx_personality_v0 and the server just started crashing
>>  > (SIGSEGV); and when I run gdb on the core file, I also saw the that
>>  > the crash was occurring in the AXIS2_SVC_SKELETON_INIT().
>>  >
>>  > But then, after some more experimenting, I added 'extern "C"' to the
>>  > functions axis2_get_instance() and axis2_remove_instance() in my test
>>  > service, and the test run successfully. Well, at least this is what I
>>  > think fixed this crash :).
>>  >
>>  > So, two things so far: a) preload the libstdc++.so, and b) use
>> 'extern
>>  > "C"' on the functions that the Axis calls directly (that is, loads by
>>  > name?)
>>  >
>>  >
>>  > Thank you,
>>  >
>>  >     alex.
>>  >
>>  >
>>  > On Wed, Mar 19, 2008 at 10:44 AM, Senaka Fernando <se...@wso2.com>
>> wrote:
>>  > > Hi Alex,
>>  > >
>>  > >  I tried Axis2/C with a C++ client and it works fine. However, when
>> it
>>  > >  comes to server side, the message receiver can't invoke the
>>  > >  AXIS2_SVC_SKELETON_INIT(), probably because it was built in C
>> instead of
>>  > >  C++. Thus, I guess that you will have to rebuild axis2/C using g++
>> in the
>>  > >  first place.
>>  > >
>>  > >  But, amazingly I never got, undefined symbol:
>> __gxx_personality_v0.
>>  > >
>>  > >  Instead my server seg_faulted and crashed.
>>  > >
>>  > >  Will work on this and let you know if I get through.
>>  > >
>>  > >  Regards,
>>  > >  Senaka
>>  > >
>>  > >
>>  > >
>>  > >  > I've tried with two versions: first, I downloaded and compiled
>> latest
>>  > >  > released Axisc/2 v. 1.3.0 from the http://ws.apache.org/axis2/c;
>> after
>>  > >  > seeing this error, I downloaded a "WSO2 Web Services Framework
>> for
>>  > >  > C++" from the http://wso2.org/projects/wsf/cpp, where, I hoped,
>> given
>>  > >  > that the name includes "for C++", the C++ problems would be
>> solved.
>>  > >  > This release, as I understand, includes Acis2/C version 1.2. The
>> same
>>  > >  > error (with the same text returned by  dlerror(), after I added
>>  > >  > logging of this) happens in both cases.
>>  > >
>>  > >  >
>>  > >  >
>>  > >  > Thank you,
>>  > >  >
>>  > >  >     alex.
>>  > >  >
>>  > >  >
>>  > >  > On Tue, Mar 18, 2008 at 10:36 PM, Manjula Peiris
>> <ma...@wso2.com> wrote:
>>  > >  >> Hi Bolgarov,
>>  > >  >>
>>  > >  >>  What is the Axis2/C version you are using?
>>  > >  >>
>>  > >  >>
>>  > >  >>
>>  > >  >>
>>  > >  >>  On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
>>  > >  >>  > Hi,
>>  > >  >>  >
>>  > >  >>  > I'm trying to write a SOAP service using Axis2/C framework.
>> I need
>>  > >  >> the
>>  > >  >>  > service to be written in a C++ language, so as a first step
>> I took an
>>  > >  >>  > 'echo service' example from the Axis distribution, renamed
>> it to .cpp
>>  > >  >>  > file  and compiled/linked it with 'g++' compiler. No compile
>> errors
>>  > >  >>  > reported, the resulting .so library I copied to the services
>>  > >  >>  > directory, together with the corresponding services.xml
>> file.
>>  > >  >>  >
>>  > >  >>  > I compiled a sample client that tries to send something to
>> my new
>>  > >  >> service.
>>  > >  >>  >
>>  > >  >>  > Than I strarted an 'axis2_http_server' application and run
>> the
>>  > >  >> client,
>>  > >  >>  > which failed with a SOAP error message about failure to load
>> a dll.
>>  > >  >>  >
>>  > >  >>  > I found in the Axis2/C source code the place where it loads
>> the .so
>>  > >  >>  > file (axutil_class_loader_load_lib() in file
>> 'class_loader.c'), and
>>  > >  >>  > added debug log message that reports into the log the exact
>> text of
>>  > >  >> an
>>  > >  >>  > error as it is returned by dlerror() function, not just a
>> message
>>  > >  >> that
>>  > >  >>  > if failed to load a library, like this (after line 156 of
>> the file
>>  > >  >>  > 'class_loader.c'):
>>  > >  >>  >
>>  > >  >>  >     if (!dl_handler)
>>  > >  >>  >     {
>>  > >  >>  >         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
>>  > >  >>  >                         "AXIS2_PLATFORM_LOADLIB error:
>> [%s]",
>>  > >  >>  >                         AXIS2_PLATFORM_LOADLIB_ERROR);
>>  > >  >>  >
>>  > >  >>  >    ...
>>  > >  >>  >    ...
>>  > >  >>  >    ...
>>  > >  >>  >
>>  > >  >>  > after recompiling the Axis and running the test again, I see
>> in the
>>  > >  >>  > log following message:
>>  > >  >>  >
>>  > >  >>  >  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
>>  > >  >>  > [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
>>  > >  >>  > undefined symbol: __gxx_personality_v0]
>>  > >  >>  >
>>  > >  >>  > I understand that the real problem is that the
>> axis2_http_server
>>  > >  >>  > application is not compiled/linked with the g++ support
>> libraries.
>>  > >  >>  > Several years ago I had similar problem when writing a C++
>> module for
>>  > >  >>  > Apache's httpd server, but there the solution was to use an
>> httpd's
>>  > >  >>  > directive 'LoadFile' to load the g++ runtime library into
>> the httpd
>>  > >  >>  > environment before loading my C++ module with the LoadModule
>>  > >  >>  > directive.
>>  > >  >>  >
>>  > >  >>  > So the question is, does anyone knows how to make the
>>  > >  >>  > axis2_http_server to load the g++ runtime library before it
>> loads a
>>  > >  >>  > C++ .so service library?
>>  > >  >>  >
>>  > >  >>  > For the record, I'm doing all this on the Ubuntu 7.10, and
>> here is a
>>  > >  >>  > result of running 'g++ --version:
>>  > >  >>  >
>>  > >  >>  > $ g++ --version
>>  > >  >>  > g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu
>> 4.1.2-16ubuntu2)
>>  > >  >>  >
>>  > >  >>  > ---------------------------------------------------------------------
>>  > >  >>  > 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
>>  > >  >>
>>  > >  >>
>>  > >  >
>>  > >  > ---------------------------------------------------------------------
>>  > >  > 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
>>  > >
>>  > >
>>  >
>>  > ---------------------------------------------------------------------
>>  > 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
>>
>>
>
> ---------------------------------------------------------------------
> 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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Alex Bolgarov <al...@bolgarov.org>.
Hi Manjula,

Yes, you are right. I removed setting LD_PRELOAD from my script that
starts the axis server, the test still runs OK.

And yes, I have seen the mention in the Axis2/C FAQ about using
'extern "C"'. I just have to suggest that the FAQ mention using
'extern "C"' specifically with axis2_get_instance() and
axis2_remove_instance() functions - initially I have added it to all
functions in the sample code but these two :)


Thank you,

    alex.


On Thu, Mar 20, 2008 at 12:10 AM, Manjula Peiris <ma...@wso2.com> wrote:
> Hi Alex,
>
>  I think extern C alone should solve the problem. Because recently I did
>  the same thing and it worked for me. Can you try only with extern C
>  solution ?
>
>  Thanks,
>  -Manjula.
>
>
>
>
>  On Wed, 2008-03-19 at 13:36 -0400, Alex Bolgarov wrote:
>  > OK, I used LD_PRELAOD env. variable to preload the libstdc++.so when
>  > starting the axis2_http_server, like this:
>  >
>  > LD_PRELOAD=/usr/lib/libstdc++.so.6 ./axis2_http_server -r ${AXIS2C_HOME} -l 6 &
>  >
>  > and now my test runs successfully: the client sends a request, I see
>  > in the axis log tracing of function calls that I added to every
>  > function in my service, and then the client receives a response.
>  >
>  > I'm not sure that a solution with LD_PRELOAD is a good one, does any
>  > one have an opinion?
>  >
>  > Anyway, in production all this is going to run as a Apache httpd
>  > module, and we already know how to load libstdc++.so into the httpd,
>  > so I'm going now to build the mod_axis and try to run the test again,
>  > now with httpd :)
>  >
>  >
>  > >  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
>  > >
>  > >  Instead my server seg_faulted and crashed.
>  >
>  > Senaka, after I did something (I don't remember exactly what, I have
>  > done a lot of experimenting this morning) I also stopped getting
>  > undefined __gxx_personality_v0 and the server just started crashing
>  > (SIGSEGV); and when I run gdb on the core file, I also saw the that
>  > the crash was occurring in the AXIS2_SVC_SKELETON_INIT().
>  >
>  > But then, after some more experimenting, I added 'extern "C"' to the
>  > functions axis2_get_instance() and axis2_remove_instance() in my test
>  > service, and the test run successfully. Well, at least this is what I
>  > think fixed this crash :).
>  >
>  > So, two things so far: a) preload the libstdc++.so, and b) use 'extern
>  > "C"' on the functions that the Axis calls directly (that is, loads by
>  > name?)
>  >
>  >
>  > Thank you,
>  >
>  >     alex.
>  >
>  >
>  > On Wed, Mar 19, 2008 at 10:44 AM, Senaka Fernando <se...@wso2.com> wrote:
>  > > Hi Alex,
>  > >
>  > >  I tried Axis2/C with a C++ client and it works fine. However, when it
>  > >  comes to server side, the message receiver can't invoke the
>  > >  AXIS2_SVC_SKELETON_INIT(), probably because it was built in C instead of
>  > >  C++. Thus, I guess that you will have to rebuild axis2/C using g++ in the
>  > >  first place.
>  > >
>  > >  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
>  > >
>  > >  Instead my server seg_faulted and crashed.
>  > >
>  > >  Will work on this and let you know if I get through.
>  > >
>  > >  Regards,
>  > >  Senaka
>  > >
>  > >
>  > >
>  > >  > I've tried with two versions: first, I downloaded and compiled latest
>  > >  > released Axisc/2 v. 1.3.0 from the http://ws.apache.org/axis2/c; after
>  > >  > seeing this error, I downloaded a "WSO2 Web Services Framework for
>  > >  > C++" from the http://wso2.org/projects/wsf/cpp, where, I hoped, given
>  > >  > that the name includes "for C++", the C++ problems would be solved.
>  > >  > This release, as I understand, includes Acis2/C version 1.2. The same
>  > >  > error (with the same text returned by  dlerror(), after I added
>  > >  > logging of this) happens in both cases.
>  > >
>  > >  >
>  > >  >
>  > >  > Thank you,
>  > >  >
>  > >  >     alex.
>  > >  >
>  > >  >
>  > >  > On Tue, Mar 18, 2008 at 10:36 PM, Manjula Peiris <ma...@wso2.com> wrote:
>  > >  >> Hi Bolgarov,
>  > >  >>
>  > >  >>  What is the Axis2/C version you are using?
>  > >  >>
>  > >  >>
>  > >  >>
>  > >  >>
>  > >  >>  On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
>  > >  >>  > Hi,
>  > >  >>  >
>  > >  >>  > I'm trying to write a SOAP service using Axis2/C framework. I need
>  > >  >> the
>  > >  >>  > service to be written in a C++ language, so as a first step I took an
>  > >  >>  > 'echo service' example from the Axis distribution, renamed it to .cpp
>  > >  >>  > file  and compiled/linked it with 'g++' compiler. No compile errors
>  > >  >>  > reported, the resulting .so library I copied to the services
>  > >  >>  > directory, together with the corresponding services.xml file.
>  > >  >>  >
>  > >  >>  > I compiled a sample client that tries to send something to my new
>  > >  >> service.
>  > >  >>  >
>  > >  >>  > Than I strarted an 'axis2_http_server' application and run the
>  > >  >> client,
>  > >  >>  > which failed with a SOAP error message about failure to load a dll.
>  > >  >>  >
>  > >  >>  > I found in the Axis2/C source code the place where it loads the .so
>  > >  >>  > file (axutil_class_loader_load_lib() in file 'class_loader.c'), and
>  > >  >>  > added debug log message that reports into the log the exact text of
>  > >  >> an
>  > >  >>  > error as it is returned by dlerror() function, not just a message
>  > >  >> that
>  > >  >>  > if failed to load a library, like this (after line 156 of the file
>  > >  >>  > 'class_loader.c'):
>  > >  >>  >
>  > >  >>  >     if (!dl_handler)
>  > >  >>  >     {
>  > >  >>  >         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
>  > >  >>  >                         "AXIS2_PLATFORM_LOADLIB error: [%s]",
>  > >  >>  >                         AXIS2_PLATFORM_LOADLIB_ERROR);
>  > >  >>  >
>  > >  >>  >    ...
>  > >  >>  >    ...
>  > >  >>  >    ...
>  > >  >>  >
>  > >  >>  > after recompiling the Axis and running the test again, I see in the
>  > >  >>  > log following message:
>  > >  >>  >
>  > >  >>  >  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
>  > >  >>  > [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
>  > >  >>  > undefined symbol: __gxx_personality_v0]
>  > >  >>  >
>  > >  >>  > I understand that the real problem is that the axis2_http_server
>  > >  >>  > application is not compiled/linked with the g++ support libraries.
>  > >  >>  > Several years ago I had similar problem when writing a C++ module for
>  > >  >>  > Apache's httpd server, but there the solution was to use an httpd's
>  > >  >>  > directive 'LoadFile' to load the g++ runtime library into the httpd
>  > >  >>  > environment before loading my C++ module with the LoadModule
>  > >  >>  > directive.
>  > >  >>  >
>  > >  >>  > So the question is, does anyone knows how to make the
>  > >  >>  > axis2_http_server to load the g++ runtime library before it loads a
>  > >  >>  > C++ .so service library?
>  > >  >>  >
>  > >  >>  > For the record, I'm doing all this on the Ubuntu 7.10, and here is a
>  > >  >>  > result of running 'g++ --version:
>  > >  >>  >
>  > >  >>  > $ g++ --version
>  > >  >>  > g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
>  > >  >>  >
>  > >  >>  > ---------------------------------------------------------------------
>  > >  >>  > 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
>  > >  >>
>  > >  >>
>  > >  >
>  > >  > ---------------------------------------------------------------------
>  > >  > 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
>  > >
>  > >
>  >
>  > ---------------------------------------------------------------------
>  > 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
>
>

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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Manjula Peiris <ma...@wso2.com>.
Hi Alex,

I think extern C alone should solve the problem. Because recently I did
the same thing and it worked for me. Can you try only with extern C
solution ?

Thanks,
-Manjula.


On Wed, 2008-03-19 at 13:36 -0400, Alex Bolgarov wrote:
> OK, I used LD_PRELAOD env. variable to preload the libstdc++.so when
> starting the axis2_http_server, like this:
> 
> LD_PRELOAD=/usr/lib/libstdc++.so.6 ./axis2_http_server -r ${AXIS2C_HOME} -l 6 &
> 
> and now my test runs successfully: the client sends a request, I see
> in the axis log tracing of function calls that I added to every
> function in my service, and then the client receives a response.
> 
> I'm not sure that a solution with LD_PRELOAD is a good one, does any
> one have an opinion?
> 
> Anyway, in production all this is going to run as a Apache httpd
> module, and we already know how to load libstdc++.so into the httpd,
> so I'm going now to build the mod_axis and try to run the test again,
> now with httpd :)
> 
> 
> >  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
> >
> >  Instead my server seg_faulted and crashed.
> 
> Senaka, after I did something (I don't remember exactly what, I have
> done a lot of experimenting this morning) I also stopped getting
> undefined __gxx_personality_v0 and the server just started crashing
> (SIGSEGV); and when I run gdb on the core file, I also saw the that
> the crash was occurring in the AXIS2_SVC_SKELETON_INIT().
> 
> But then, after some more experimenting, I added 'extern "C"' to the
> functions axis2_get_instance() and axis2_remove_instance() in my test
> service, and the test run successfully. Well, at least this is what I
> think fixed this crash :).
> 
> So, two things so far: a) preload the libstdc++.so, and b) use 'extern
> "C"' on the functions that the Axis calls directly (that is, loads by
> name?)
> 
> 
> Thank you,
> 
>     alex.
> 
> 
> On Wed, Mar 19, 2008 at 10:44 AM, Senaka Fernando <se...@wso2.com> wrote:
> > Hi Alex,
> >
> >  I tried Axis2/C with a C++ client and it works fine. However, when it
> >  comes to server side, the message receiver can't invoke the
> >  AXIS2_SVC_SKELETON_INIT(), probably because it was built in C instead of
> >  C++. Thus, I guess that you will have to rebuild axis2/C using g++ in the
> >  first place.
> >
> >  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
> >
> >  Instead my server seg_faulted and crashed.
> >
> >  Will work on this and let you know if I get through.
> >
> >  Regards,
> >  Senaka
> >
> >
> >
> >  > I've tried with two versions: first, I downloaded and compiled latest
> >  > released Axisc/2 v. 1.3.0 from the http://ws.apache.org/axis2/c; after
> >  > seeing this error, I downloaded a "WSO2 Web Services Framework for
> >  > C++" from the http://wso2.org/projects/wsf/cpp, where, I hoped, given
> >  > that the name includes "for C++", the C++ problems would be solved.
> >  > This release, as I understand, includes Acis2/C version 1.2. The same
> >  > error (with the same text returned by  dlerror(), after I added
> >  > logging of this) happens in both cases.
> >
> >  >
> >  >
> >  > Thank you,
> >  >
> >  >     alex.
> >  >
> >  >
> >  > On Tue, Mar 18, 2008 at 10:36 PM, Manjula Peiris <ma...@wso2.com> wrote:
> >  >> Hi Bolgarov,
> >  >>
> >  >>  What is the Axis2/C version you are using?
> >  >>
> >  >>
> >  >>
> >  >>
> >  >>  On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
> >  >>  > Hi,
> >  >>  >
> >  >>  > I'm trying to write a SOAP service using Axis2/C framework. I need
> >  >> the
> >  >>  > service to be written in a C++ language, so as a first step I took an
> >  >>  > 'echo service' example from the Axis distribution, renamed it to .cpp
> >  >>  > file  and compiled/linked it with 'g++' compiler. No compile errors
> >  >>  > reported, the resulting .so library I copied to the services
> >  >>  > directory, together with the corresponding services.xml file.
> >  >>  >
> >  >>  > I compiled a sample client that tries to send something to my new
> >  >> service.
> >  >>  >
> >  >>  > Than I strarted an 'axis2_http_server' application and run the
> >  >> client,
> >  >>  > which failed with a SOAP error message about failure to load a dll.
> >  >>  >
> >  >>  > I found in the Axis2/C source code the place where it loads the .so
> >  >>  > file (axutil_class_loader_load_lib() in file 'class_loader.c'), and
> >  >>  > added debug log message that reports into the log the exact text of
> >  >> an
> >  >>  > error as it is returned by dlerror() function, not just a message
> >  >> that
> >  >>  > if failed to load a library, like this (after line 156 of the file
> >  >>  > 'class_loader.c'):
> >  >>  >
> >  >>  >     if (!dl_handler)
> >  >>  >     {
> >  >>  >         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
> >  >>  >                         "AXIS2_PLATFORM_LOADLIB error: [%s]",
> >  >>  >                         AXIS2_PLATFORM_LOADLIB_ERROR);
> >  >>  >
> >  >>  >    ...
> >  >>  >    ...
> >  >>  >    ...
> >  >>  >
> >  >>  > after recompiling the Axis and running the test again, I see in the
> >  >>  > log following message:
> >  >>  >
> >  >>  >  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
> >  >>  > [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
> >  >>  > undefined symbol: __gxx_personality_v0]
> >  >>  >
> >  >>  > I understand that the real problem is that the axis2_http_server
> >  >>  > application is not compiled/linked with the g++ support libraries.
> >  >>  > Several years ago I had similar problem when writing a C++ module for
> >  >>  > Apache's httpd server, but there the solution was to use an httpd's
> >  >>  > directive 'LoadFile' to load the g++ runtime library into the httpd
> >  >>  > environment before loading my C++ module with the LoadModule
> >  >>  > directive.
> >  >>  >
> >  >>  > So the question is, does anyone knows how to make the
> >  >>  > axis2_http_server to load the g++ runtime library before it loads a
> >  >>  > C++ .so service library?
> >  >>  >
> >  >>  > For the record, I'm doing all this on the Ubuntu 7.10, and here is a
> >  >>  > result of running 'g++ --version:
> >  >>  >
> >  >>  > $ g++ --version
> >  >>  > g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
> >  >>  >
> >  >>  > ---------------------------------------------------------------------
> >  >>  > 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
> >  >>
> >  >>
> >  >
> >  > ---------------------------------------------------------------------
> >  > 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
> >
> >
> 
> ---------------------------------------------------------------------
> 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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Senaka Fernando <se...@wso2.com>.
Hi Alex,

Well I think that the extern "C" caused the seg_fault as it couldn't
locate the function name. :D... I missed that out I believe. The extern
"C" requirement is on the Axis2/C FAQ.

Also, the LD_PRELOAD is a satisfactory solution. Also, have you tried
setting the LIBS environment variable before building the source? I'd
rather prefer the LIBS option, because setting LD_PRELOAD can sometimes be
cumbersome. However, if you are using a binary release you have to resort
to LD_PRELOAD. Therefore, I think that we can add this to our FAQ too.

Regards,
Senaka

N.B.: CCs sent to user and dev lists.

> OK, I used LD_PRELAOD env. variable to preload the libstdc++.so when
> starting the axis2_http_server, like this:
>
> LD_PRELOAD=/usr/lib/libstdc++.so.6 ./axis2_http_server -r ${AXIS2C_HOME}
> -l 6 &
>
> and now my test runs successfully: the client sends a request, I see
> in the axis log tracing of function calls that I added to every
> function in my service, and then the client receives a response.
>
> I'm not sure that a solution with LD_PRELOAD is a good one, does any
> one have an opinion?
>
> Anyway, in production all this is going to run as a Apache httpd
> module, and we already know how to load libstdc++.so into the httpd,
> so I'm going now to build the mod_axis and try to run the test again,
> now with httpd :)
>
>
>>  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
>>
>>  Instead my server seg_faulted and crashed.
>
> Senaka, after I did something (I don't remember exactly what, I have
> done a lot of experimenting this morning) I also stopped getting
> undefined __gxx_personality_v0 and the server just started crashing
> (SIGSEGV); and when I run gdb on the core file, I also saw the that
> the crash was occurring in the AXIS2_SVC_SKELETON_INIT().
>
> But then, after some more experimenting, I added 'extern "C"' to the
> functions axis2_get_instance() and axis2_remove_instance() in my test
> service, and the test run successfully. Well, at least this is what I
> think fixed this crash :).
>
> So, two things so far: a) preload the libstdc++.so, and b) use 'extern
> "C"' on the functions that the Axis calls directly (that is, loads by
> name?)
>
>
> Thank you,
>
>     alex.
>
>
> On Wed, Mar 19, 2008 at 10:44 AM, Senaka Fernando <se...@wso2.com> wrote:
>> Hi Alex,
>>
>>  I tried Axis2/C with a C++ client and it works fine. However, when it
>>  comes to server side, the message receiver can't invoke the
>>  AXIS2_SVC_SKELETON_INIT(), probably because it was built in C instead
>> of
>>  C++. Thus, I guess that you will have to rebuild axis2/C using g++ in
>> the
>>  first place.
>>
>>  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
>>
>>  Instead my server seg_faulted and crashed.
>>
>>  Will work on this and let you know if I get through.
>>
>>  Regards,
>>  Senaka
>>
>>
>>
>>  > I've tried with two versions: first, I downloaded and compiled latest
>>  > released Axisc/2 v. 1.3.0 from the http://ws.apache.org/axis2/c;
>> after
>>  > seeing this error, I downloaded a "WSO2 Web Services Framework for
>>  > C++" from the http://wso2.org/projects/wsf/cpp, where, I hoped, given
>>  > that the name includes "for C++", the C++ problems would be solved.
>>  > This release, as I understand, includes Acis2/C version 1.2. The same
>>  > error (with the same text returned by  dlerror(), after I added
>>  > logging of this) happens in both cases.
>>
>>  >
>>  >
>>  > Thank you,
>>  >
>>  >     alex.
>>  >
>>  >
>>  > On Tue, Mar 18, 2008 at 10:36 PM, Manjula Peiris <ma...@wso2.com>
>> wrote:
>>  >> Hi Bolgarov,
>>  >>
>>  >>  What is the Axis2/C version you are using?
>>  >>
>>  >>
>>  >>
>>  >>
>>  >>  On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
>>  >>  > Hi,
>>  >>  >
>>  >>  > I'm trying to write a SOAP service using Axis2/C framework. I
>> need
>>  >> the
>>  >>  > service to be written in a C++ language, so as a first step I
>> took an
>>  >>  > 'echo service' example from the Axis distribution, renamed it to
>> .cpp
>>  >>  > file  and compiled/linked it with 'g++' compiler. No compile
>> errors
>>  >>  > reported, the resulting .so library I copied to the services
>>  >>  > directory, together with the corresponding services.xml file.
>>  >>  >
>>  >>  > I compiled a sample client that tries to send something to my new
>>  >> service.
>>  >>  >
>>  >>  > Than I strarted an 'axis2_http_server' application and run the
>>  >> client,
>>  >>  > which failed with a SOAP error message about failure to load a
>> dll.
>>  >>  >
>>  >>  > I found in the Axis2/C source code the place where it loads the
>> .so
>>  >>  > file (axutil_class_loader_load_lib() in file 'class_loader.c'),
>> and
>>  >>  > added debug log message that reports into the log the exact text
>> of
>>  >> an
>>  >>  > error as it is returned by dlerror() function, not just a message
>>  >> that
>>  >>  > if failed to load a library, like this (after line 156 of the
>> file
>>  >>  > 'class_loader.c'):
>>  >>  >
>>  >>  >     if (!dl_handler)
>>  >>  >     {
>>  >>  >         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
>>  >>  >                         "AXIS2_PLATFORM_LOADLIB error: [%s]",
>>  >>  >                         AXIS2_PLATFORM_LOADLIB_ERROR);
>>  >>  >
>>  >>  >    ...
>>  >>  >    ...
>>  >>  >    ...
>>  >>  >
>>  >>  > after recompiling the Axis and running the test again, I see in
>> the
>>  >>  > log following message:
>>  >>  >
>>  >>  >  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
>>  >>  > [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
>>  >>  > undefined symbol: __gxx_personality_v0]
>>  >>  >
>>  >>  > I understand that the real problem is that the axis2_http_server
>>  >>  > application is not compiled/linked with the g++ support
>> libraries.
>>  >>  > Several years ago I had similar problem when writing a C++ module
>> for
>>  >>  > Apache's httpd server, but there the solution was to use an
>> httpd's
>>  >>  > directive 'LoadFile' to load the g++ runtime library into the
>> httpd
>>  >>  > environment before loading my C++ module with the LoadModule
>>  >>  > directive.
>>  >>  >
>>  >>  > So the question is, does anyone knows how to make the
>>  >>  > axis2_http_server to load the g++ runtime library before it loads
>> a
>>  >>  > C++ .so service library?
>>  >>  >
>>  >>  > For the record, I'm doing all this on the Ubuntu 7.10, and here
>> is a
>>  >>  > result of running 'g++ --version:
>>  >>  >
>>  >>  > $ g++ --version
>>  >>  > g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
>>  >>  >
>>  >>  > ---------------------------------------------------------------------
>>  >>  > 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
>>  >>
>>  >>
>>  >
>>  > ---------------------------------------------------------------------
>>  > 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
>>
>>
>


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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Alex Bolgarov <al...@bolgarov.org>.
OK, I used LD_PRELAOD env. variable to preload the libstdc++.so when
starting the axis2_http_server, like this:

LD_PRELOAD=/usr/lib/libstdc++.so.6 ./axis2_http_server -r ${AXIS2C_HOME} -l 6 &

and now my test runs successfully: the client sends a request, I see
in the axis log tracing of function calls that I added to every
function in my service, and then the client receives a response.

I'm not sure that a solution with LD_PRELOAD is a good one, does any
one have an opinion?

Anyway, in production all this is going to run as a Apache httpd
module, and we already know how to load libstdc++.so into the httpd,
so I'm going now to build the mod_axis and try to run the test again,
now with httpd :)


>  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
>
>  Instead my server seg_faulted and crashed.

Senaka, after I did something (I don't remember exactly what, I have
done a lot of experimenting this morning) I also stopped getting
undefined __gxx_personality_v0 and the server just started crashing
(SIGSEGV); and when I run gdb on the core file, I also saw the that
the crash was occurring in the AXIS2_SVC_SKELETON_INIT().

But then, after some more experimenting, I added 'extern "C"' to the
functions axis2_get_instance() and axis2_remove_instance() in my test
service, and the test run successfully. Well, at least this is what I
think fixed this crash :).

So, two things so far: a) preload the libstdc++.so, and b) use 'extern
"C"' on the functions that the Axis calls directly (that is, loads by
name?)


Thank you,

    alex.


On Wed, Mar 19, 2008 at 10:44 AM, Senaka Fernando <se...@wso2.com> wrote:
> Hi Alex,
>
>  I tried Axis2/C with a C++ client and it works fine. However, when it
>  comes to server side, the message receiver can't invoke the
>  AXIS2_SVC_SKELETON_INIT(), probably because it was built in C instead of
>  C++. Thus, I guess that you will have to rebuild axis2/C using g++ in the
>  first place.
>
>  But, amazingly I never got, undefined symbol: __gxx_personality_v0.
>
>  Instead my server seg_faulted and crashed.
>
>  Will work on this and let you know if I get through.
>
>  Regards,
>  Senaka
>
>
>
>  > I've tried with two versions: first, I downloaded and compiled latest
>  > released Axisc/2 v. 1.3.0 from the http://ws.apache.org/axis2/c; after
>  > seeing this error, I downloaded a "WSO2 Web Services Framework for
>  > C++" from the http://wso2.org/projects/wsf/cpp, where, I hoped, given
>  > that the name includes "for C++", the C++ problems would be solved.
>  > This release, as I understand, includes Acis2/C version 1.2. The same
>  > error (with the same text returned by  dlerror(), after I added
>  > logging of this) happens in both cases.
>
>  >
>  >
>  > Thank you,
>  >
>  >     alex.
>  >
>  >
>  > On Tue, Mar 18, 2008 at 10:36 PM, Manjula Peiris <ma...@wso2.com> wrote:
>  >> Hi Bolgarov,
>  >>
>  >>  What is the Axis2/C version you are using?
>  >>
>  >>
>  >>
>  >>
>  >>  On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
>  >>  > Hi,
>  >>  >
>  >>  > I'm trying to write a SOAP service using Axis2/C framework. I need
>  >> the
>  >>  > service to be written in a C++ language, so as a first step I took an
>  >>  > 'echo service' example from the Axis distribution, renamed it to .cpp
>  >>  > file  and compiled/linked it with 'g++' compiler. No compile errors
>  >>  > reported, the resulting .so library I copied to the services
>  >>  > directory, together with the corresponding services.xml file.
>  >>  >
>  >>  > I compiled a sample client that tries to send something to my new
>  >> service.
>  >>  >
>  >>  > Than I strarted an 'axis2_http_server' application and run the
>  >> client,
>  >>  > which failed with a SOAP error message about failure to load a dll.
>  >>  >
>  >>  > I found in the Axis2/C source code the place where it loads the .so
>  >>  > file (axutil_class_loader_load_lib() in file 'class_loader.c'), and
>  >>  > added debug log message that reports into the log the exact text of
>  >> an
>  >>  > error as it is returned by dlerror() function, not just a message
>  >> that
>  >>  > if failed to load a library, like this (after line 156 of the file
>  >>  > 'class_loader.c'):
>  >>  >
>  >>  >     if (!dl_handler)
>  >>  >     {
>  >>  >         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
>  >>  >                         "AXIS2_PLATFORM_LOADLIB error: [%s]",
>  >>  >                         AXIS2_PLATFORM_LOADLIB_ERROR);
>  >>  >
>  >>  >    ...
>  >>  >    ...
>  >>  >    ...
>  >>  >
>  >>  > after recompiling the Axis and running the test again, I see in the
>  >>  > log following message:
>  >>  >
>  >>  >  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
>  >>  > [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
>  >>  > undefined symbol: __gxx_personality_v0]
>  >>  >
>  >>  > I understand that the real problem is that the axis2_http_server
>  >>  > application is not compiled/linked with the g++ support libraries.
>  >>  > Several years ago I had similar problem when writing a C++ module for
>  >>  > Apache's httpd server, but there the solution was to use an httpd's
>  >>  > directive 'LoadFile' to load the g++ runtime library into the httpd
>  >>  > environment before loading my C++ module with the LoadModule
>  >>  > directive.
>  >>  >
>  >>  > So the question is, does anyone knows how to make the
>  >>  > axis2_http_server to load the g++ runtime library before it loads a
>  >>  > C++ .so service library?
>  >>  >
>  >>  > For the record, I'm doing all this on the Ubuntu 7.10, and here is a
>  >>  > result of running 'g++ --version:
>  >>  >
>  >>  > $ g++ --version
>  >>  > g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
>  >>  >
>  >>  > ---------------------------------------------------------------------
>  >>  > 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
>  >>
>  >>
>  >
>  > ---------------------------------------------------------------------
>  > 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
>
>

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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Senaka Fernando <se...@wso2.com>.
Hi Alex,

I tried Axis2/C with a C++ client and it works fine. However, when it
comes to server side, the message receiver can't invoke the
AXIS2_SVC_SKELETON_INIT(), probably because it was built in C instead of
C++. Thus, I guess that you will have to rebuild axis2/C using g++ in the
first place.

But, amazingly I never got, undefined symbol: __gxx_personality_v0.

Instead my server seg_faulted and crashed.

Will work on this and let you know if I get through.

Regards,
Senaka

> I've tried with two versions: first, I downloaded and compiled latest
> released Axisc/2 v. 1.3.0 from the http://ws.apache.org/axis2/c; after
> seeing this error, I downloaded a "WSO2 Web Services Framework for
> C++" from the http://wso2.org/projects/wsf/cpp, where, I hoped, given
> that the name includes "for C++", the C++ problems would be solved.
> This release, as I understand, includes Acis2/C version 1.2. The same
> error (with the same text returned by  dlerror(), after I added
> logging of this) happens in both cases.

>
>
> Thank you,
>
>     alex.
>
>
> On Tue, Mar 18, 2008 at 10:36 PM, Manjula Peiris <ma...@wso2.com> wrote:
>> Hi Bolgarov,
>>
>>  What is the Axis2/C version you are using?
>>
>>
>>
>>
>>  On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
>>  > Hi,
>>  >
>>  > I'm trying to write a SOAP service using Axis2/C framework. I need
>> the
>>  > service to be written in a C++ language, so as a first step I took an
>>  > 'echo service' example from the Axis distribution, renamed it to .cpp
>>  > file  and compiled/linked it with 'g++' compiler. No compile errors
>>  > reported, the resulting .so library I copied to the services
>>  > directory, together with the corresponding services.xml file.
>>  >
>>  > I compiled a sample client that tries to send something to my new
>> service.
>>  >
>>  > Than I strarted an 'axis2_http_server' application and run the
>> client,
>>  > which failed with a SOAP error message about failure to load a dll.
>>  >
>>  > I found in the Axis2/C source code the place where it loads the .so
>>  > file (axutil_class_loader_load_lib() in file 'class_loader.c'), and
>>  > added debug log message that reports into the log the exact text of
>> an
>>  > error as it is returned by dlerror() function, not just a message
>> that
>>  > if failed to load a library, like this (after line 156 of the file
>>  > 'class_loader.c'):
>>  >
>>  >     if (!dl_handler)
>>  >     {
>>  >         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
>>  >                         "AXIS2_PLATFORM_LOADLIB error: [%s]",
>>  >                         AXIS2_PLATFORM_LOADLIB_ERROR);
>>  >
>>  >    ...
>>  >    ...
>>  >    ...
>>  >
>>  > after recompiling the Axis and running the test again, I see in the
>>  > log following message:
>>  >
>>  >  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
>>  > [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
>>  > undefined symbol: __gxx_personality_v0]
>>  >
>>  > I understand that the real problem is that the axis2_http_server
>>  > application is not compiled/linked with the g++ support libraries.
>>  > Several years ago I had similar problem when writing a C++ module for
>>  > Apache's httpd server, but there the solution was to use an httpd's
>>  > directive 'LoadFile' to load the g++ runtime library into the httpd
>>  > environment before loading my C++ module with the LoadModule
>>  > directive.
>>  >
>>  > So the question is, does anyone knows how to make the
>>  > axis2_http_server to load the g++ runtime library before it loads a
>>  > C++ .so service library?
>>  >
>>  > For the record, I'm doing all this on the Ubuntu 7.10, and here is a
>>  > result of running 'g++ --version:
>>  >
>>  > $ g++ --version
>>  > g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
>>  >
>>  > ---------------------------------------------------------------------
>>  > 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
>>
>>
>
> ---------------------------------------------------------------------
> 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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Alex Bolgarov <al...@bolgarov.org>.
I've tried with two versions: first, I downloaded and compiled latest
released Axisc/2 v. 1.3.0 from the http://ws.apache.org/axis2/c; after
seeing this error, I downloaded a "WSO2 Web Services Framework for
C++" from the http://wso2.org/projects/wsf/cpp, where, I hoped, given
that the name includes "for C++", the C++ problems would be solved.
This release, as I understand, includes Acis2/C version 1.2. The same
error (with the same text returned by  dlerror(), after I added
logging of this) happens in both cases.


Thank you,

    alex.


On Tue, Mar 18, 2008 at 10:36 PM, Manjula Peiris <ma...@wso2.com> wrote:
> Hi Bolgarov,
>
>  What is the Axis2/C version you are using?
>
>
>
>
>  On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
>  > Hi,
>  >
>  > I'm trying to write a SOAP service using Axis2/C framework. I need the
>  > service to be written in a C++ language, so as a first step I took an
>  > 'echo service' example from the Axis distribution, renamed it to .cpp
>  > file  and compiled/linked it with 'g++' compiler. No compile errors
>  > reported, the resulting .so library I copied to the services
>  > directory, together with the corresponding services.xml file.
>  >
>  > I compiled a sample client that tries to send something to my new service.
>  >
>  > Than I strarted an 'axis2_http_server' application and run the client,
>  > which failed with a SOAP error message about failure to load a dll.
>  >
>  > I found in the Axis2/C source code the place where it loads the .so
>  > file (axutil_class_loader_load_lib() in file 'class_loader.c'), and
>  > added debug log message that reports into the log the exact text of an
>  > error as it is returned by dlerror() function, not just a message that
>  > if failed to load a library, like this (after line 156 of the file
>  > 'class_loader.c'):
>  >
>  >     if (!dl_handler)
>  >     {
>  >         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
>  >                         "AXIS2_PLATFORM_LOADLIB error: [%s]",
>  >                         AXIS2_PLATFORM_LOADLIB_ERROR);
>  >
>  >    ...
>  >    ...
>  >    ...
>  >
>  > after recompiling the Axis and running the test again, I see in the
>  > log following message:
>  >
>  >  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
>  > [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
>  > undefined symbol: __gxx_personality_v0]
>  >
>  > I understand that the real problem is that the axis2_http_server
>  > application is not compiled/linked with the g++ support libraries.
>  > Several years ago I had similar problem when writing a C++ module for
>  > Apache's httpd server, but there the solution was to use an httpd's
>  > directive 'LoadFile' to load the g++ runtime library into the httpd
>  > environment before loading my C++ module with the LoadModule
>  > directive.
>  >
>  > So the question is, does anyone knows how to make the
>  > axis2_http_server to load the g++ runtime library before it loads a
>  > C++ .so service library?
>  >
>  > For the record, I'm doing all this on the Ubuntu 7.10, and here is a
>  > result of running 'g++ --version:
>  >
>  > $ g++ --version
>  > g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
>  >
>  > ---------------------------------------------------------------------
>  > 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
>
>

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


Re: Axis2/C, C++ and 'undefined symbol: __gxx_personality_v0'

Posted by Manjula Peiris <ma...@wso2.com>.
Hi Bolgarov,

What is the Axis2/C version you are using?


On Tue, 2008-03-18 at 17:17 -0400, Alex Bolgarov wrote:
> Hi,
> 
> I'm trying to write a SOAP service using Axis2/C framework. I need the
> service to be written in a C++ language, so as a first step I took an
> 'echo service' example from the Axis distribution, renamed it to .cpp
> file  and compiled/linked it with 'g++' compiler. No compile errors
> reported, the resulting .so library I copied to the services
> directory, together with the corresponding services.xml file.
> 
> I compiled a sample client that tries to send something to my new service.
> 
> Than I strarted an 'axis2_http_server' application and run the client,
> which failed with a SOAP error message about failure to load a dll.
> 
> I found in the Axis2/C source code the place where it loads the .so
> file (axutil_class_loader_load_lib() in file 'class_loader.c'), and
> added debug log message that reports into the log the exact text of an
> error as it is returned by dlerror() function, not just a message that
> if failed to load a library, like this (after line 156 of the file
> 'class_loader.c'):
> 
>     if (!dl_handler)
>     {
>         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
>                         "AXIS2_PLATFORM_LOADLIB error: [%s]",
>                         AXIS2_PLATFORM_LOADLIB_ERROR);
> 
>    ...
>    ...
>    ...
> 
> after recompiling the Axis and running the test again, I see in the
> log following message:
> 
>  class_loader.c(159) AXIS2_PLATFORM_LOADLIB error:
> [/home/alexb/wsfcpp-repo/services/my_service/libmy_service.so:
> undefined symbol: __gxx_personality_v0]
> 
> I understand that the real problem is that the axis2_http_server
> application is not compiled/linked with the g++ support libraries.
> Several years ago I had similar problem when writing a C++ module for
> Apache's httpd server, but there the solution was to use an httpd's
> directive 'LoadFile' to load the g++ runtime library into the httpd
> environment before loading my C++ module with the LoadModule
> directive.
> 
> So the question is, does anyone knows how to make the
> axis2_http_server to load the g++ runtime library before it loads a
> C++ .so service library?
> 
> For the record, I'm doing all this on the Ubuntu 7.10, and here is a
> result of running 'g++ --version:
> 
> $ g++ --version
> g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
> 
> ---------------------------------------------------------------------
> 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