I have edited the source code for OpenSSL in the init functions so that the config file always gets loaded. My config file specifies a custom engine, so this means that every process that links with "libssl.so" or "libcrypto.so" will use my custom engine. The problem I'm having is that my device won't boot up. It gets as far as running "ssh-keygen" and then it freezes. In order to troubleshoot this, I recompiled "ssh-keygen" with the flag "- rdynamic" so that I can see function names in a stack trace. Next I enabled core dumps with "ulimit -c unlimited". Then I ran "ssh-keygen", and it froze as expected, but this time I pressed "Ctrl + \", and so it produced a core dump file. I used GDB on the core file and saw the following backtrace: Core was generated by `/home/service/ssh-keygen'. Program terminated with signal SIGQUIT, Quit. #0 0x00007f656e35e3c7 in __pthread_once_slow () from /lib/libpthread.so.0 (gdb) bt #0 0x00007f656e35e3c7 in __pthread_once_slow () from /lib/libpthread.so.0 #1 0x00007f656f730fbe in CRYPTO_THREAD_run_once () from ./libcrypto.so.1.1 #2 0x00007f656f6d5c80 in OPENSSL_init_crypto () from ./libcrypto.so.1.1 #3 0x00007f656f66163b in openssl_config_int () from ./libcrypto.so.1.1 #4 0x00007f656f6d56cf in ossl_init_config_ossl_ () from ./libcrypto.so.1.1 #5 0x00007f656e35e407 in __pthread_once_slow () from /lib/libpthread.so.0 #6 0x00007f656f730fbe in CRYPTO_THREAD_run_once () from ./libcrypto.so.1.1 #7 0x00007f656f6d5c80 in OPENSSL_init_crypto () from ./libcrypto.so.1.1 #8 0x000055a8d125708b in main () Can anyone see what might be going on here?