Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff65a3d7fa __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff65affbc1 pthread_kill + 432
2 libsystem_c.dylib 0x00007fff659c4a1c abort + 120
3 libcrypto.dylib 0x00007fff6333b804 __report_load + 352
4 dyld 0x000000011602e15d ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 539
5 dyld 0x000000011602e582 ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 40
6 dyld 0x0000000116028dc7 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 493
7 dyld 0x0000000116026e58 ImageLoader::processInitializers(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 188
8 dyld 0x0000000116026ef8 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 82
9 dyld 0x0000000116018f87 dyld::runInitializers(ImageLoader*) + 82
10 dyld 0x0000000116022ad7 dlopen_internal + 609
11 libdyld.dylib 0x00007fff658e1a7f dlopen + 171
12 com.company.editor 0x000000010777935a 0x10764f000 + 1221466
13 com.company.editor 0x000000010765fc1f SYSTEM_$$_LOADLIBRARY$RAWBYTESTRING$$INT64 + 15
14 com.company.editor 0x0000000107ac2246 SYNAFPC_$$_LOADLIBRARY$PCHAR$$INT64 + 86 (synafpc.pas:109)
15 com.company.editor 0x0000000107acf849 0x10764f000 + 4720713
16 com.company.editor 0x0000000107acf919 SSL_OPENSSL_LIB_$$_INITSSLINTERFACE$$BOOLEAN + 175
17 com.company.editor 0x0000000107ac8067 INIT$_$SSL_OPENSSL + 10
18 com.company.editor 0x000000010765cdcc FPC_INITIALIZEUNITS + 60
19 com.company.editor 0x000000010765058d PASCALMAIN + 10
Catalina doesn't seem to like OpenSSL anymore.
You're right, better explained than I did ...
My only concern with that, is that on another Mac, now or in the future, that particular library version may or may not be installed on their system?
So one may have to distribute that exact version of OpenSSL (and all that comes with it) with your application to avoid that?
Where as the other approach would not only rely on Apple's API.
The solution is to explicitly load either /usr/lib/libcrypto.0.9.7.dylib or /usr/lib/libcrypto.0.9.8.dylib, depending on which version of OpenSSL your (Synapse) interface uses. At first sight, this needs to be fixed in a unit called ssl_openssl_lib.
Indy and the openssl/libressl libs included in macos generally works for me.
You probably already have LibreSSL installed on your Mac OS system (and those versions overall seem compatible with regards to HTTPS usage. Newer versions of LibreSSL may differ)
https://github.com/IndySockets/Indy/issues/231#issuecomment-566542370 (https://github.com/IndySockets/Indy/issues/231#issuecomment-566542370)
You probably already have LibreSSL installed on your Mac OS system (and those versions overall seem compatible with regards to HTTPS usage. Newer versions of LibreSSL may differ)
https://github.com/IndySockets/Indy/issues/231#issuecomment-566542370 (https://github.com/IndySockets/Indy/issues/231#issuecomment-566542370)
The problem is de fphttp is not working with https in trunk. I think, maybe if i put de dylib in the binary directory maybe work.
While trying to put together a working example, my iMac mini's disk has just died. It is pushing up daisies, gone to meet its maker, it is an ex-mini.
Will try to get a new one (second hand, any offers?)
It was only seven years old.... :'( :'( It had already a long history of illness...
This is what I use - it works on macos Mojave and Catalina, FreeBSD, Ubuntu Linux and Windows.
{$IFDEF DARWIN}Use IFDEF to call this on Darwin only.
procedure CheckOpenSSLFixNeeded;
const
fixDarwinRelease = 19; // Catalina
var
KernelInfo: UtsName;
begin
if (fpUName(KernelInfo) = 0) then
if (StrToIntDef(Copy(KernelInfo.Release, 1, 2), 0) >= fixDarwinRelease) then begin
DLLSSLName := '/usr/lib/libssl.46.dylib';
DLLUtilName := '/usr/lib/libcrypto.44.dylib';
end;
end;
{$ENDIF DARWIN}
For those who need Synapse to work with LibreSSL on Catalina and BigSur. Call this routine from initialization section of ssl_openssl_lib:Quote{$IFDEF DARWIN}Use IFDEF to call this on Darwin only.
procedure CheckOpenSSLFixNeeded;
const
fixDarwinRelease = 19; // Catalina
var
KernelInfo: UtsName;
begin
if (fpUName(KernelInfo) = 0) then
if (StrToIntDef(Copy(KernelInfo.Release, 1, 2), 0) >= fixDarwinRelease) then begin
DLLSSLName := '/usr/lib/libssl.46.dylib';
DLLUtilName := '/usr/lib/libcrypto.44.dylib';
end;
end;
{$ENDIF DARWIN}
P.S. Catalina blocked using libssl.dylib and libcrypto.dylib wrappers and BigSur stopped us from listing dylib's in /usr/lib/ to find last version. So we just stick on existing LibreSSL version.
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.