[ http://issues.apache.org/jira/browse/AXISCPP-549?page=history ]
Mark Whitlock closed AXISCPP-549:
---------------------------------
Resolution: Duplicate
This is a duplicate of AXISCPP-533
> Add RTLD_GLOBAL to dlopen
> -------------------------
>
> Key: AXISCPP-549
> URL: http://issues.apache.org/jira/browse/AXISCPP-549
> Project: Axis-C++
> Type: Bug
> Reporter: Mark Whitlock
> Assignee: Mark Whitlock
>
> Committing fix on behalf of Tim Bartley. He wrote....
> Hi Mark,
> That wasn't the (only) problem. Eventually I tracked it down. It's because
> the shared libraries are not loaded with the RTLD_GLOBAL flag. Because of
> this the type definition of the exception thrown in the channel library is
> considered different to the type definition (of the same class) in the
> transport library. This causes flushOutput to generate a call to the
> unhandled exception handler because it's not considered a matching exception.
> The fix is to add RTLD_GLOBAL to the flags passed to dlopen as defined in
> PlatformSpecificUnix.hpp. See http://gcc.gnu.org/faq.html#dso for details as
> to why this is necessary.
> Incidentally HTTPTransport::flushOutput is incorrectly declared. It has code
> that throws (well, rethrows) AxisExceptions but it is declared to only throw
> HTTPTransportExceptions. (Re)Throwing an AxisException should result in the
> C++ "unexpected()" being called which will abort the process by default. That
> is, any code that does:
> class BaseE {};
> class SubE : public BaseE {};
> void f() throw(SubE)
> {
> throw BaseE();
> }
> int main()
> {
> try {
> f();
> }
> catch (SubE& e) {
> cout << "Caught sub" << endl;
> }
> catch (BaseE&e ) {
> cout << "Caught base" << endl;
> }
> }
> should, according to the C++ spec, abort. f should be declared throw(BaseE)
> and then it can throw either BaseE's or SubE's and callers can catch either.
> Cheers,
> Tim
> --
> IBM Tivoli Access Manager Development
> Gold Coast Development Lab, Australia
> +61-7-5552-4001 phone
> +61-7-5571-0420 fax
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira