#277: libgcrypt and gcry_check_version in a multithreaded application.
-------------------------------------------------+-------------------------
Reporter: TMcC | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 1.4.3
Component: crypto | Version: 1.4.2
Keywords: threads, mt, multithreaded, crypto, | Blocked By:
sigabrt, gcry_check_version, gcrpyt, |
libgcrypt |
Blocks: |
-------------------------------------------------+-------------------------
In a multithreaded application, libssh2_init() ought to call
gcry_check_version(), or the documentation for libssh2 ought to advise
that libgcrpyt's gcry_check_version() must be called, before
libssh2_init() is executed.
Please see here: http://www.gnupg.org/documentation/manuals/gcrypt-devel
/Initializing-the-library.html
Without this call, we get SIGABRTs from gcrpyt.
In summary, in a multithread application, the sequence of calls should be:
{{{#!c
// Enable thread safety for gcrypt.
int result = gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
if (!gcry_check_version (GCRYPT_VERSION))
{
std::cerr << "libgcrypt version mismatch" << std::endl;
exit (2);
}
libssh2_init();
}}}
-- Ticket URL: <https://trac.libssh2.org/ticket/277> libssh2 <https://trac.libssh2.org/> C library for writing portable SSH2 clients _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-develReceived on 2013-10-06