% openssl engine -t dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/local/lib/softhsm/libsofthsm2.so
(dynamic) Dynamic engine loading support
[Success]: SO_PATH:/usr/lib/engines/engine_pkcs11.so
[Success]: ID:pkcs11
[Success]: LIST_ADD:1
[Success]: LOAD
[Success]: MODULE_PATH:/usr/local/lib/softhsm/libsofthsm2.so
Loaded: (pkcs11) pkcs11 engine
zsh: segmentation fault (core dumped) openssl engine -t dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre
% gdb openssl -ex 'run engine -t dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/local/lib/softhsm/libsofthsm2.so'
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff73abc3e in _IO_vfprintf_internal (s=s@entry=0x7fffff7ff210,
format=format@entry=0x7ffff691cde8 "%s/.config/softhsm2/softhsm2.conf", ap=ap@entry=0x7fffff7ff388)
at vfprintf.c:257
257 vfprintf.c: No such file or directory.
(gdb) bt
#0 0x00007ffff73abc3e in _IO_vfprintf_internal (s=s@entry=0x7fffff7ff210, format=format@entry=0x7ffff691cde8 "%s/.config/softhsm2/softhsm2.conf",
ap=ap@entry=0x7fffff7ff388) at vfprintf.c:257
#1 0x00007ffff7478556 in ___vsnprintf_chk (s=0x7fffff7ff4a0 "", maxlen=<optimized out>, flags=1, slen=<optimized out>,
format=0x7ffff691cde8 "%s/.config/softhsm2/softhsm2.conf", args=args@entry=0x7fffff7ff388) at vsnprintf_chk.c:63
#2 0x00007ffff74784b8 in ___snprintf_chk (s=s@entry=0x7fffff7ff4a0 "", maxlen=maxlen@entry=256, flags=flags@entry=1, slen=slen@entry=256,
format=format@entry=0x7ffff691cde8 "%s/.config/softhsm2/softhsm2.conf") at snprintf_chk.c:34
#3 0x00007ffff68e5733 in snprintf (__fmt=<optimized out>, __n=<optimized out>, __s=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/stdio2.h:65
#4 get_user_path () at SimpleConfigLoader.cpp:229
#5 0x00007ffff68e59ad in SimpleConfigLoader::getConfigPath (this=<optimized out>) at SimpleConfigLoader.cpp:249
#6 0x00007ffff68e5acb in SimpleConfigLoader::loadConfiguration (this=0x6c7790) at SimpleConfigLoader.cpp:78
#7 0x00007ffff68e2755 in Configuration::reload (this=0x6c77b0) at Configuration.cpp:156
#8 0x00007ffff68e279c in Configuration::reload (this=<optimized out>, inConfigLoader=inConfigLoader@entry=0x6c7790) at Configuration.cpp:171
#9 0x00007ffff68c21aa in SoftHSM::C_Initialize (this=0x6b1200, pInitArgs=<optimized out>) at SoftHSM.cpp:453
#10 0x00007ffff68a8354 in C_Initialize (pInitArgs=0x7fffff7ffe10) at main.cpp:126
#11 0x00007ffff6d5338a in PKCS11_CTX_load () from /usr/lib/x86_64-linux-gnu/libp11.so.2
#12 0x00007ffff6f5b45c in ?? () from /usr/lib/engines/engine_pkcs11.so
#13 0x00007ffff7837e69 in ?? () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#14 0x00007ffff7838d8b in ?? () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#15 0x00007ffff7847ae6 in RAND_get_rand_method () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#16 0x00007ffff7847c60 in RAND_bytes () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#17 0x00007ffff68fb095 in OSSLRNG::generateRandom (this=<optimized out>, data=..., len=32) at OSSLRNG.cpp:44
#18 0x00007ffff6902500 in SecureDataManager::initObject (this=this@entry=0x1f26190) at SecureDataManager.cpp:63
#19 0x00007ffff6902702 in SecureDataManager::SecureDataManager (this=0x1f26190, soPINBlob=..., userPINBlob=...) at SecureDataManager.cpp:85
#20 0x00007ffff6918dda in Token::Token (this=0x1f22810, inToken=<optimized out>) at Token.cpp:63
#21 0x00007ffff69186a9 in Slot::Slot (this=0x1f23b00, inObjectStore=<optimized out>, inSlotID=<optimized out>, inToken=0x1f25a00) at Slot.cpp:50
#22 0x00007ffff6917898 in SlotManager::insertToken (this=0x1f24cc0, objectStore=0x1f24a00, slotID=169247132, pToken=0x1f25a00) at SlotManager.cpp:73
#23 0x00007ffff6917f0d in SlotManager::SlotManager (this=0x1f24cc0, objectStore=0x1f24a00) at SlotManager.cpp:65
#24 0x00007ffff68c2532 in SoftHSM::C_Initialize (this=0x6b1200, pInitArgs=<optimized out>) at SoftHSM.cpp:487
#25 0x00007ffff68a8354 in C_Initialize (pInitArgs=0x7fffff800400) at main.cpp:126
#26 0x00007ffff6d5338a in PKCS11_CTX_load () from /usr/lib/x86_64-linux-gnu/libp11.so.2
#27 0x00007ffff6f5b45c in ?? () from /usr/lib/engines/engine_pkcs11.so
#28 0x00007ffff7837e69 in ?? () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#29 0x00007ffff7838d8b in ?? () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#30 0x00007ffff7847ae6 in RAND_get_rand_method () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#31 0x00007ffff7847c60 in RAND_bytes () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#32 0x00007ffff68fb095 in OSSLRNG::generateRandom (this=<optimized out>, data=..., len=32) at OSSLRNG.cpp:44
#33 0x00007ffff6902500 in SecureDataManager::initObject (this=this@entry=0x1f24fa0) at SecureDataManager.cpp:63
[ ... and so on ... ]