You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by Mauro Brasil <ma...@piscar.com.br> on 2011/05/27 20:17:51 UTC

Axis2C crashes when using SSL...

Hello there!

I have a fully operational C++ application developped using Visual C++ that
uses Axis2c and RampartC to communicates with a server running on JBoss and
using JBossWS.

By now we are using just WS-Security's UserNameToken and timestamp features
and everything works pretty fine.

The application is almost completed and now we just need to get it over SSL.

First try was add the server's certificate file programatically (for lots of
reasons this is the desirable scenario).
Althougth the implementation runs fine on Debug mode for several requests,
when I switch to Release mode the application crashes during
"axis2_svc_client_send_receive_with_op_qname" method execution of the second
request.
I don't know if this could cause this particular issue, but I share the
"axis_env_t*" pointer among all requests (well... I have no problem with
that until now).

Tired of trying to avoid the condition on code, I removed the block that
adds the property and configured the certificate file directly on
"axis2.xml". And I've got totally lost when the issue happened the same way.

Had anyone got such condition ?

Does someone have any idea of what can be causing thins ?

Thanks and best regards,
Mauro.

Re: Axis2C crashes when using SSL...

Posted by Steve Leland <st...@pouchapond.com>.
I had a problem like this, most recently using OpenSSL 0.9.8r on Windows - after adding a little logging, the error was reported as:

    "OpenSSL error "error:02001003:system library:fopen:no such process"
90% of the requests would work just fine, but 10% were failing like that.  

The fix was to specify a fully qualified path to the cert in the axis2.xml file:.

    this fails intermittently:     <parameter name="SERVER_CERT">.\data\cacert_test2.cer

    this always works:           <parameter name="SERVER_CERT">e:\lotus\domino\data\cacert_test2.cer

It's an easy fix, so I'm happy, but I wish someone could explain why it was failing!

Regards,

Steve



  ----- Original Message ----- 
  From: Mauro Brasil 
  To: Apache AXIS C Developers List 
  Sent: Tuesday, May 31, 2011 2:03 PM
  Subject: Re: Axis2C crashes when using SSL...


  Hi Nandika and thanks for your reply.

  That was my first thought too but after removing all changes regarding the dynamic configuration of "SSL_CERT" parameter, the issue persisted.

  I mean, I reverted all my code changes and only:
  1- adjusted the service URI used to create the service stub "axis2_stub_t" (changing the "http" to "https" and port as well;
  2- changed the "axis2.xml" file to statically point to the certificate file.

  After getting the same condition with this scenario I've had a look at the axis2c binaries and its dependencies to make sure they are compatible.
  First of all I've noticed that axis2c binaries were linked with old MSVCRT library while openssl libraries (libeay32.dll and ssleay32.dll) were linked with Visual Studio 2008 (MSVCR90.DLL) version of CRT library.

  Searching on the net I've found other versions of openssl binaries linked with old MSVCRT library but that seems to have the same problem and others that worked pretty fine.
  The reason for sure, I don't know.

  I choose the version extracted from package "openssl-0.9.8h-1-bin.zip" found at "http://gnuwin32.sourceforge.net/packages/openssl.htm" (I renamed the library "libssl32.dll" to "ssleay32.dll").

  After getting this libraries the application worked perfectly including the changes to set the certificate location dynamically.

  Thank's a lot for this great software.

  Best regards,
  Mauro.





  2011/5/28 Nandika Jayawardana <ja...@gmail.com>

    Most definitely, there should be a memory corruption. Try running the application with a memory checking tool like purify. It will point you to the location where this problem happens.

    Regards
    Nandika



    On Fri, May 27, 2011 at 11:47 PM, Mauro Brasil <ma...@piscar.com.br> wrote:

      Hello there!

      I have a fully operational C++ application developped using Visual C++ that uses Axis2c and RampartC to communicates with a server running on JBoss and using JBossWS.

      By now we are using just WS-Security's UserNameToken and timestamp features and everything works pretty fine.

      The application is almost completed and now we just need to get it over SSL.

      First try was add the server's certificate file programatically (for lots of reasons this is the desirable scenario).
      Althougth the implementation runs fine on Debug mode for several requests, when I switch to Release mode the application crashes during "axis2_svc_client_send_receive_with_op_qname" method execution of the second request.
      I don't know if this could cause this particular issue, but I share the "axis_env_t*" pointer among all requests (well... I have no problem with that until now).

      Tired of trying to avoid the condition on code, I removed the block that adds the property and configured the certificate file directly on "axis2.xml". And I've got totally lost when the issue happened the same way.

      Had anyone got such condition ?

      Does someone have any idea of what can be causing thins ?

      Thanks and best regards,
      Mauro.







Re: Axis2C crashes when using SSL...

Posted by Mauro Brasil <ma...@piscar.com.br>.
Hi Nandika and thanks for your reply.

That was my first thought too but after removing all changes regarding the
dynamic configuration of "SSL_CERT" parameter, the issue persisted.

I mean, I reverted all my code changes and only:
1- adjusted the service URI used to create the service stub "axis2_stub_t"
(changing the "http" to "https" and port as well;
2- changed the "axis2.xml" file to statically point to the certificate file.

After getting the same condition with this scenario I've had a look at the
axis2c binaries and its dependencies to make sure they are compatible.
First of all I've noticed that axis2c binaries were linked with old MSVCRT
library while openssl libraries (libeay32.dll and ssleay32.dll) were linked
with Visual Studio 2008 (MSVCR90.DLL) version of CRT library.

Searching on the net I've found other versions of openssl binaries linked
with old MSVCRT library but that seems to have the same problem and others
that worked pretty fine.
The reason for sure, I don't know.

I choose the version extracted from package "openssl-0.9.8h-1-bin.zip" found
at "http://gnuwin32.sourceforge.net/packages/openssl.htm" (I renamed the
library "libssl32.dll" to "ssleay32.dll").

After getting this libraries the application worked perfectly including the
changes to set the certificate location dynamically.

Thank's a lot for this great software.

Best regards,
Mauro.




2011/5/28 Nandika Jayawardana <ja...@gmail.com>

> Most definitely, there should be a memory corruption. Try running the
> application with a memory checking tool like purify. It will point you to
> the location where this problem happens.
>
> Regards
> Nandika
>
>
> On Fri, May 27, 2011 at 11:47 PM, Mauro Brasil <mauro.brasil@piscar.com.br
> > wrote:
>
>> Hello there!
>>
>> I have a fully operational C++ application developped using Visual C++
>> that uses Axis2c and RampartC to communicates with a server running on JBoss
>> and using JBossWS.
>>
>> By now we are using just WS-Security's UserNameToken and timestamp
>> features and everything works pretty fine.
>>
>> The application is almost completed and now we just need to get it over
>> SSL.
>>
>> First try was add the server's certificate file programatically (for lots
>> of reasons this is the desirable scenario).
>> Althougth the implementation runs fine on Debug mode for several requests,
>> when I switch to Release mode the application crashes during
>> "axis2_svc_client_send_receive_with_op_qname" method execution of the second
>> request.
>> I don't know if this could cause this particular issue, but I share the
>> "axis_env_t*" pointer among all requests (well... I have no problem with
>> that until now).
>>
>> Tired of trying to avoid the condition on code, I removed the block that
>> adds the property and configured the certificate file directly on
>> "axis2.xml". And I've got totally lost when the issue happened the same way.
>>
>> Had anyone got such condition ?
>>
>> Does someone have any idea of what can be causing thins ?
>>
>> Thanks and best regards,
>> Mauro.
>>
>>
>>
>

Re: Axis2C crashes when using SSL...

Posted by Nandika Jayawardana <ja...@gmail.com>.
Most definitely, there should be a memory corruption. Try running the
application with a memory checking tool like purify. It will point you to
the location where this problem happens.

Regards
Nandika

On Fri, May 27, 2011 at 11:47 PM, Mauro Brasil
<ma...@piscar.com.br>wrote:

> Hello there!
>
> I have a fully operational C++ application developped using Visual C++ that
> uses Axis2c and RampartC to communicates with a server running on JBoss and
> using JBossWS.
>
> By now we are using just WS-Security's UserNameToken and timestamp features
> and everything works pretty fine.
>
> The application is almost completed and now we just need to get it over
> SSL.
>
> First try was add the server's certificate file programatically (for lots
> of reasons this is the desirable scenario).
> Althougth the implementation runs fine on Debug mode for several requests,
> when I switch to Release mode the application crashes during
> "axis2_svc_client_send_receive_with_op_qname" method execution of the second
> request.
> I don't know if this could cause this particular issue, but I share the
> "axis_env_t*" pointer among all requests (well... I have no problem with
> that until now).
>
> Tired of trying to avoid the condition on code, I removed the block that
> adds the property and configured the certificate file directly on
> "axis2.xml". And I've got totally lost when the issue happened the same way.
>
> Had anyone got such condition ?
>
> Does someone have any idea of what can be causing thins ?
>
> Thanks and best regards,
> Mauro.
>
>
>