You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm seeing this exception on Linux and Solaris with newer GCC's. It happens on Linux with -DCRYPTOPP_INIT_PRIORITY=0, and it happens on Solaris 11 Sparc with GCC 7. Solaris does not have init priorities so we always use the std::call_once pattern when C++11 is available.
The reason we are seeing an exception in PKCS12_PBKDF is, it creates an Integer to help increment the buffer (IIRC).
Here is the relevant code for InitializeInteger. SetFunctionPointers just assigns a few function pointers for addition, subtraction, etc.
This commit also favors init priorities over C++ dynamic initialization. After the std::call_once problems on Sparc and PowerPC I'm worried about problems with Dynamic Initialization and Destruction with Concurrency.
We also do away with supressing warnings and use CRYPTOPP_UNUSED instead.
The Linux exception is explained when failing to use -pthread. Also see GCC's Concurrency page.
I don't know what is happening on Solaris. Solaris is actually crashing with SIGSEGV. Also see Solaris 11 Sparc crash in std::call_once on the GCC Help mailing list.
It turns out that std::call_once is buggy due to bad interactions between libstdc++, glibc and pthreads. It is best to just avoid std::call_once because it is so buggy on so many platforms.
I'm seeing this exception on Linux and Solaris with newer GCC's. It happens on Linux with
-DCRYPTOPP_INIT_PRIORITY=0
, and it happens on Solaris 11 Sparc with GCC 7. Solaris does not have init priorities so we always use thestd::call_once
pattern when C++11 is available.The reason we are seeing an exception in
PKCS12_PBKDF
is, it creates anInteger
to help increment the buffer (IIRC).Here is the relevant code for
InitializeInteger
.SetFunctionPointers
just assigns a few function pointers for addition, subtraction, etc.The text was updated successfully, but these errors were encountered: