Subject: Re: libssh crash on Mac

Re: libssh crash on Mac

From: Peter Stuge <peter_at_stuge.se>
Date: Sun, 11 Aug 2019 22:48:07 +0000

Hi Leo,

Leo wrote:
> Now when I try to connect to SFTP site, the crash produces the following
> output in Xcode debugger:
>
> openssl.c > _libssh2_openssl_crypto_init()
>
>
> #if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
> ?????? !defined(LIBRESSL_VERSION_NUMBER)
> ?????? #ifndef OPENSSL_NO_ENGINE
> ?????????????? ENGINE_load_builtin_engines();?????????????????????????????????? <-- Thread 8:
> EXC_BAD_ACCESS (code=1, address=0x116)
> ?????????????? ENGINE_register_all_complete();
> ?????? #endif
>
>
> As you suggested, I also inserted libssh2_trace(session, ~0); after the
> call to libssh2_session_init() but before the call to
> libssh2_session_handshake() - but the crash happens before getting to
> that line.

That's good information.

It seems like you have no explicit call to libssh2_init() at startup
of your application, since you write that the crash happens when
trying to *connect* to an SFTP server.

I guess that you either have a call to libssh2_init() in a
constructor related to SFTP, that's not so good, because the library
should only be initialized a single time in a single thread for each
process.

I guess that OpenSSL was somehow already initialized, and the crash
happens becuse OpenSSL does not support being initialized twice.

If this is the case, please move or add the libssh2_init() call into your
application startup, immediately on startup, before any user interaction.

Then only call libssh2_session_init() in your SFTP constructor.

Let me know how it goes.

//Peter
_______________________________________________
libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
Received on 2019-08-12