Hi! I have managed to deadlock OpenSSL while running in FIPS mode.
The locking functions are setup according to mttest.c and th-lock.c using pthread_mutex_. Please note I have NOT explicitly set a thread id function. Then env is: openssl-1.0.1e openssl-fips-2.0.5 RHEL 6 - 32 bit. Please let me know if there is any other information I can provide. Best regards, Fredrik My callstacks look like: Thread 17 (Thread 0xad841b70 (LWP 13059)): #0 0x00147424 in __kernel_vsyscall () #1 0x00a24059 in __lll_lock_wait () from /lib/libpthread.so.0 #2 0x00a1f400 in _L_lock_698 () from /lib/libpthread.so.0 #3 0x00a1f2d1 in pthread_mutex_lock () from /lib/libpthread.so.0 #4 0x0024b395 in CRYPTO_lock () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #5 0x002499ba in FIPS_lock () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #6 0x002456ba in fips_drbg_bytes () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #7 0x002d51c0 in RAND_bytes () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 Thread 11 (Thread 0xa98ffb70 (LWP 13066)): #0 0x00147424 in __kernel_vsyscall () #1 0x00a24059 in __lll_lock_wait () from /lib/libpthread.so.0 #2 0x00a1f400 in _L_lock_698 () from /lib/libpthread.so.0 #3 0x00a1f2d1 in pthread_mutex_lock () from /lib/libpthread.so.0 #4 0x0024b395 in CRYPTO_lock () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #5 0x002d3ed0 in ssleay_rand_bytes () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #6 0x002d4f46 in drbg_get_entropy () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #7 0x0023f217 in fips_get_entropy () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #8 0x0023f3cb in drbg_reseed () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #9 0x0023fc14 in FIPS_drbg_generate () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #10 0x00245733 in fips_drbg_bytes () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #11 0x002d51c0 in RAND_bytes () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #12 0x00c9f3df in dtls1_enc () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #13 0x00c9b341 in do_dtls1_write () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #14 0x00c9b615 in dtls1_write_bytes () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #15 0x00c9b68a in dtls1_write_app_data_bytes () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #16 0x00c85b2a in ssl3_write () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #17 0x00ca0df9 in SSL_write () from /opt/ct_mvpn/lib/libssl.so.1.0.0 Thread 9 (Thread 0xa751db70 (LWP 13095)): #0 0x00147424 in __kernel_vsyscall () #1 0x00a24059 in __lll_lock_wait () from /lib/libpthread.so.0 #2 0x00a1f400 in _L_lock_698 () from /lib/libpthread.so.0 #3 0x00a1f2d1 in pthread_mutex_lock () from /lib/libpthread.so.0 #4 0x0024b395 in CRYPTO_lock () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #5 0x002499ba in FIPS_lock () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #6 0x002456ba in fips_drbg_bytes () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #7 0x00245817 in fips_drbg_pseudo () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #8 0x002d5200 in RAND_pseudo_bytes () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #9 0x00c78b5f in ssl3_get_client_hello () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #10 0x00c97189 in dtls1_accept () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #11 0x00ca445a in SSL_accept () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #12 0x00c9a129 in dtls1_listen () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #13 0x00c9a1d8 in dtls1_ctrl () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #14 0x00ca3673 in SSL_ctrl () from /opt/ct_mvpn/lib/libssl.so.1.0.0 Thread 8 (Thread 0xa6b1cb70 (LWP 13096)): #0 0x00147424 in __kernel_vsyscall () #1 0x00a24059 in __lll_lock_wait () from /lib/libpthread.so.0 #2 0x00a1f400 in _L_lock_698 () from /lib/libpthread.so.0 #3 0x00a1f2d1 in pthread_mutex_lock () from /lib/libpthread.so.0 #4 0x0024b395 in CRYPTO_lock () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #5 0x002d3989 in ssleay_rand_add () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #6 0x002d4e06 in drbg_rand_add () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #7 0x00245561 in fips_drbg_add () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #8 0x002d5180 in RAND_add () from /opt/ct_mvpn/lib/libcrypto.so.1.0.0 #9 0x00c96720 in dtls1_accept () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #10 0x00ca445a in SSL_accept () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #11 0x00c9a129 in dtls1_listen () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #12 0x00c9a1d8 in dtls1_ctrl () from /opt/ct_mvpn/lib/libssl.so.1.0.0 #13 0x00ca3673 in SSL_ctrl () from /opt/ct_mvpn/lib/libssl.so.1.0.0
