My question is, is it acceptable to do the gcry_control() call in ntdll's DllMain()? The alternative seems to be tracking down every lib used by wine that uses libgcrypt and doing it in each of those dlls. What's the best way to handle this?
I've been looking into bug 27036
<http://bugs.winehq.org/show_bug.cgi?id=27036> , and it's due to the
lack of thread safety by default in libgcrypt (in this case via
libgnutls in secur32.dll). To be thread safe, libgcrypt requires a call
to gcry_control(GCRYCTL_SET_THREAD_CBS) before any libgcrypt
initialization is done. However, libgcrypt is used by a lot of
different libs, one of which is being used by some other dll that's
loading before secur32.dll.
- libgcrypt thread safety Adam Martinson
- Re: libgcrypt thread safety Marcus Meissner
- Re: libgcrypt thread safety Lei Zhang