Hi All, An FYI to keep folks out of a distro's bug tracker.
It appears that Debian's port of Crypto++ is missing the symbol for g_nullNameValuePairs in libcrypto++.so. Ubuntu is guilty by association. Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=600128 Ubuntu: https://bugs.launchpad.net/bugs/660171 While the symbol is missing in the shared object file, the symbol *is* present in libcrypto++.a. It appears to be causing interesting behavior, particularly in the case of a torture test verifying correct global c++ object destruction. One of the files (a testdso.so object) has a dependency on libcrypto++. So the link-loader resolves a symbol for AutoSeededRandomPool. The dsotest.so calls dlopen(libcrypto++.so, ...) and tries to locate g_nullNameValuePairs using dlsym (both decorated and undecorated names) through the address returned in dlopen. I had *assumed* the Linux link-loader would simply return the same pointer (from initial load returned by mmap) and bump a reference count. The first call to dlsym resulted in a crash. When examining screen output and the full back trace, I noticed libcrypto++ had two different addresses - one due to the link-loader, the second due to dlopen. So it appears something is munged. Zokoo - yet another possible cause of you python issue. And the global RandomNumberGenerator and global NameValuePairs might not be the cause of [1]. Jeff [1] Errors with multiple loading cryptopp as shared lib on Linux, http://groups.google.com/group/cryptopp-users/browse_thread/thread/68fbc22e8c6e2f48 ====================================== r...@bruno:/# whereis libcrypto++ libcrypto++: /usr/lib/libcrypto++.so /usr/lib/libcrypto++.a /usr/lib64/libcrypto++.so /usr/lib64/libcrypto++.a r...@bruno:/# nm /usr/lib/libcryptopp.a | grep g_nullNameValuePairs U _ZN8CryptoPP20g_nullNameValuePairsE 0000000000000010 B _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE r...@bruno:/# nm /usr/lib/libcryptopp.so | grep g_nullNameValuePairs nm: /usr/lib/libcryptopp.so: no symbols r...@bruno:/# nm /usr/lib64/libcryptopp.a | grep g_nullNameValuePairs U _ZN8CryptoPP20g_nullNameValuePairsE 0000000000000010 B _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE U _ZN8CryptoPP20g_nullNameValuePairsE r...@bruno:/# nm /usr/lib64/libcryptopp.so | grep g_nullNameValuePairs nm: /usr/lib64/libcryptopp.so: no symbols -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com.
