My initial idea would be that you're passing in an invalid pointer to
SSL_read.  Does this happen with, say, openssl s_client?

Remember a couple of things:

1) You MUST use the proper version of the library (debug or release)
with the appropriate build setting in your project (debug or release).
2) You MUST provide the appropriate locking functions.
3) You MUST provide the appropriate malloc that your main binary is using.

(This is all stuff documented in the FAQ.)

How did you obtain this version of the library?  What version of the
library code is it?  What compiler are you using for your main
executable?  What compiler was used to create the library?  What
linker was used for all of it?

-Kyle H

On Fri, Apr 18, 2008 at 3:15 AM, Ion Scerbatiuc <[EMAIL PROTECTED]> wrote:
>
> Sorry for the fist post. It seems like I have some problems with the other
> email client. A new try :)
> I have wrote a multi-threaded server (UNIX) and I use OpenSSL for encrypting
> communication between
> the server and the client (the client is an MFC application, but I think
> this
> doesn't matter...).
> Server is running fine but randomly it crashes and every time in SSL_read()
> method.
> Here is a snippet from one of the core dumps:
> ------------------------------------------------------------------------
> Core was generated by `/opt/whozin/wnsd_test -l'.
> Program terminated with signal 11, Segmentation fault.
> Reading symbols from /usr/lib/libccext2-1.5.so.0...done.
> Loaded symbols for /usr/lib/libccext2-1.5.so.0
> Reading symbols from /usr/lib/libccgnu2-1.5.so.0...done.
> Loaded symbols for /usr/lib/libccgnu2-1.5.so.0
> Reading symbols from /usr/lib/libboost_regex.so.1...done.
> Loaded symbols for /usr/lib/libboost_regex.so.1
> Reading symbols from /lib/tls/libpthread.so.0...done.
> Loaded symbols for /lib/tls/libpthread.so.0
> Reading symbols from /usr/lib/libdaemon.so.0...done.
> Loaded symbols for /usr/lib/libdaemon.so.0
> Reading symbols from /lib/libssl.so.4...done.
> Loaded symbols for /lib/libssl.so.4
> Reading symbols from /lib/libcrypto.so.4...done.
> Loaded symbols for /lib/libcrypto.so.4
> Reading symbols from /usr/lib/liblog4cxx.so.9...done.
> Loaded symbols for /usr/lib/liblog4cxx.so.9
> Reading symbols from /usr/lib/libstdc++.so.6...done.
> Loaded symbols for /usr/lib/libstdc++.so.6
> Reading symbols from /lib/tls/libm.so.6...done.
> Loaded symbols for /lib/tls/libm.so.6
> Reading symbols from /lib/libgcc_s.so.1...done.
> Loaded symbols for /lib/libgcc_s.so.1
> Reading symbols from /lib/tls/libc.so.6...done.
> Loaded symbols for /lib/tls/libc.so.6
> Reading symbols from /lib/tls/librt.so.1...done.
> Loaded symbols for /lib/tls/librt.so.1
> Reading symbols from /usr/lib/libz.so.1...done.
> Loaded symbols for /usr/lib/libz.so.1
> Reading symbols from /lib/ld-linux.so.2...done.
> Loaded symbols for /lib/ld-linux.so.2
> Reading symbols from /usr/lib/libgssapi_krb5.so.2...done.
> Loaded symbols for /usr/lib/libgssapi_krb5.so.2
> Reading symbols from /usr/lib/libkrb5.so.3...done.
> Loaded symbols for /usr/lib/libkrb5.so.3
> Reading symbols from /lib/libcom_err.so.2...done.
> Loaded symbols for /lib/libcom_err.so.2
> Reading symbols from /usr/lib/libk5crypto.so.3...done.
> Loaded symbols for /usr/lib/libk5crypto.so.3
> Reading symbols from /lib/libresolv.so.2...done.
> Loaded symbols for /lib/libresolv.so.2
> Reading symbols from /lib/libdl.so.2...done.
> Loaded symbols for /lib/libdl.so.2
> Reading symbols from /usr/lib/libxml2.so.2...done.
> Loaded symbols for /usr/lib/libxml2.so.2
> Reading symbols from /lib/libnss_files.so.2...done.
> Loaded symbols for /lib/libnss_files.so.2
> Reading symbols from /lib/libnss_dns.so.2...done.
> Loaded symbols for /lib/libnss_dns.so.2
> #0  0x00c9b7a0 in SSL_read () from /lib/libssl.so.4
> (gdb) bt
> #0  0x00c9b7a0 in SSL_read () from /lib/libssl.so.4
> #1  0x0805b27b in wns::ServerPort::pending (this=0xb6014d38) at
> serverport.cpp:85
> #2  0x00d2f241 in ost::SocketService::run (this=0x9fb1c78) at
> socketport.cpp:748
> #3  0x002c713d in ccxx_exec_handler (th=0x9fb1c78) at thread.cpp:1097
> #4  0x00a813cc in start_thread () from /lib/tls/libpthread.so.0
> #5  0x009d9c3e in clone () from /lib/tls/libc.so.6
> ------------------------------------------------------------------------
>
> I also made a disassembly:
>
> ------------------------------------------------------------------------
> (gdb) disass
> Dump of assembler code for function SSL_read:
> 0x00c9b75b <SSL_read+0>:        push   %ebp
> 0x00c9b75c <SSL_read+1>:        mov    %esp,%ebp
> 0x00c9b75e <SSL_read+3>:        push   %ebx
> 0x00c9b75f <SSL_read+4>:        call   0xc867ce <SSLv2_method+258>
> 0x00c9b764 <SSL_read+9>:        add    $0x130f4,%ebx
> 0x00c9b76a <SSL_read+15>:       sub    $0x14,%esp
> 0x00c9b76d <SSL_read+18>:       mov    0x8(%ebp),%ecx
> 0x00c9b770 <SSL_read+21>:       mov    0x20(%ecx),%eax
> 0x00c9b773 <SSL_read+24>:       test   %eax,%eax
> 0x00c9b775 <SSL_read+26>:       je     0xc9b7a9 <SSL_read+78>
> 0x00c9b777 <SSL_read+28>:       testb  $0x2,0x30(%ecx)
> 0x00c9b77b <SSL_read+32>:       je     0xc9b78c <SSL_read+49>
> 0x00c9b77d <SSL_read+34>:       movl   $0x1,0x18(%ecx)
> 0x00c9b784 <SSL_read+41>:       xor    %eax,%eax
> 0x00c9b786 <SSL_read+43>:       add    $0x14,%esp
> 0x00c9b789 <SSL_read+46>:       pop    %ebx
> 0x00c9b78a <SSL_read+47>:       pop    %ebp
> 0x00c9b78b <SSL_read+48>:       ret
> 0x00c9b78c <SSL_read+49>:       mov    0x10(%ebp),%edx
> 0x00c9b78f <SSL_read+52>:       mov    0x8(%ecx),%eax
> 0x00c9b792 <SSL_read+55>:       mov    %edx,0x8(%esp)
> 0x00c9b796 <SSL_read+59>:       mov    0xc(%ebp),%edx
> 0x00c9b799 <SSL_read+62>:       mov    %ecx,(%esp)
> 0x00c9b79c <SSL_read+65>:       mov    %edx,0x4(%esp)
> 0x00c9b7a0 <SSL_read+69>:       call   *0x18(%eax)
> 0x00c9b7a3 <SSL_read+72>:       add    $0x14,%esp
> 0x00c9b7a6 <SSL_read+75>:       pop    %ebx
> 0x00c9b7a7 <SSL_read+76>:       pop    %ebp
> 0x00c9b7a8 <SSL_read+77>:       ret
> 0x00c9b7a9 <SSL_read+78>:       lea    0xffffad32(%ebx),%eax
> 0x00c9b7af <SSL_read+84>:       movl   $0x345,0x10(%esp)
> 0x00c9b7b7 <SSL_read+92>:       movl   $0x114,0x8(%esp)
> 0x00c9b7bf <SSL_read+100>:      mov    %eax,0xc(%esp)
> 0x00c9b7c3 <SSL_read+104>:      movl   $0xdf,0x4(%esp)
> 0x00c9b7cb <SSL_read+112>:      movl   $0x14,(%esp)
> 0x00c9b7d2 <SSL_read+119>:      call   0xc85c68
> 0x00c9b7d7 <SSL_read+124>:      mov    $0xffffffff,%eax
> 0x00c9b7dc <SSL_read+129>:      jmp    0xc9b786 <SSL_read+43>
> End of assembler dump.
> --------------------------------------------------------------------------
>
> The crash is always in the line 0x00c9b770 <SSL_read+21>:       mov
> 0x20(%ecx),%eax
> Can anyone suggest me what to do?
>
> Thanks for your
>  time!
> Regards,
> Scerbatiuc Ion
>
>  ________________________________
> Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it
> now.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to