> From: owner-openssl-us...@openssl.org On Behalf Of Josue Andrade Gomes
> Sent: Tuesday, 03 November, 2009 07:13

> On Thu, Oct 29, 2009 at 11:42 PM, Dave Thompson
> <dave.thomp...@princetonpayments.com> wrote:

> > I'd bet the traceback is wrong.
> 
> Indeed a detailed analysis by the debugger show:
> 
> ntdll!KiFastSystemCallRet
> kernel32!UnhandledExceptionFilter+0x7c0
> kernel32!BaseThreadStart+0x4a
> kernel32!_except_handler3+0x61
> ntdll!ExecuteHandler2+0x26
> ntdll!ExecuteHandler+0x24
> ntdll!KiUserExceptionDispatcher+0xe
> ntdll!RtlAllocateHeap+0x675
> msvcr80!malloc+0x7a
> WARNING: Stack unwind information not available. Following 
> frames may be wrong.
> libeay32!CRYPTO_get_lock_name+0x5b
> libeay32!CRYPTO_malloc+0x42
> ssleay32!SSLv3_client_method+0x45a5
> 
That last part must be bogus, as the warning suggests.
CRYPTO_get_lock_name doesn't call malloc (at all),
CRYPTO_malloc doesn't call CRYPTO_get_lock_name,
and SSLv3_client_method can't possibly be that large -- 
as I suggested before, this is probably a location 
in a part of your program that doesn't have symbols,
or if the location the debugger is decoding is itself 
bogus, it could be outside your program area entirely.

> I have to custom the build of OpenSSL DLLs to generate the symbols.
> The crash occurs due to a 'heap corruption' exception (a feature of
> Windows runtime) and the origin is a call to a memory allocation
> system call.

The top part of the traceback (above the warning) does look 
reasonable for heap corruption. Apparently SOMETHING is 
calling malloc and triggering the fault, but the above 
information gives us no idea what.

> I'm customizing OpenSSL DLLs makefiles to generate the 
> correct symbols.
> 
> > I see it is specifying sessID. If the server is crashing
> > and being restarted presumably any internal cache is lost;
> > do you have/configure an external cache?
> 
> No.
> 
> > I see you later say other clients do work. Do they
> > (does any of them) resume sessIDs?
> 
> I don't really now. This is a webserver and it works with any
> mainstream web browser.
> 
I believe at least some browsers do use sessIDs at least 'normally',
but you'd need to verify specific cases. One possible inhibitor:
if you support 1.1 (as at least most browsers do) and your users 
do only short interactions, they might get everything in one https 
session, and not *need* resumption.

> > If not you can use openssl s_client to create a test situation.
> 
> "openssl s_client" works fine.
> 
To be clear: s_client with -sessout to a file, followed by s_client 
with -sessin from the same file (to the same server instance) works?
And -sessin to a different server instance is ignored but doesn't fault?

Also, it shouldn't make a difference, but with bizarre problems 
like this you never really know: have your test client (s_client) 
use the same requested-cipherlist as the problematic client 
or at least request the first cipher in that list that 
your server will (is configured and enabled to) accept.

> I'm still investigating and I'll put my findings here.



______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to