Open ExpandingMan opened 4 years ago
Yeah it looks like the breaking version is loading the system's libcrypto.so ("/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1"
) in addition to the one provided by the JLL. Maybe the versions don't match up? But I have no idea how to resolve something like this.
That sounds like the SONAMEs don't match, so the OS doesn't realize that it's loading two different copies of the same thing.
@ExpandingMan what does readelf -d $file
say about the two libcrypto
's being loaded?
◖0▮expandingman@server▮~/.julia/artifacts/e6e5f41352118bbeb44677765ebccab8c151c72a/lib▮◗ readelf -d libssl.so
Dynamic section at offset 0xa8000 contains 29 entries:
Tag Type Name/Value
0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN]
0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.1.1]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libssl.so.1.1]
0x0000000000000010 (SYMBOLIC) 0x0
0x000000000000000c (INIT) 0x1c468
0x000000000000000d (FINI) 0x6c188
0x0000000000000004 (HASH) 0x296d98
0x0000000000000005 (STRTAB) 0x299000
0x0000000000000006 (SYMTAB) 0x1888
0x000000000000000a (STRSZ) 19346 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000003 (PLTGOT) 0x28d588
0x0000000000000002 (PLTRELSZ) 10608 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x19af8
0x0000000000000007 (RELA) 0xc6e8
0x0000000000000008 (RELASZ) 54288 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffc (VERDEF) 0xc5a0
0x000000006ffffffd (VERDEFNUM) 5
0x000000006ffffffb (FLAGS_1) Flags: NODELETE
0x000000006ffffffe (VERNEED) 0xc648
0x000000006fffffff (VERNEEDNUM) 3
0x000000006ffffff0 (VERSYM) 0xbe1a
0x000000006ffffff9 (RELACOUNT) 2223
0x0000000000000000 (NULL) 0x0
◖0▮expandingman@server▮/usr/lib/x86_64-linux-gnu▮◗ readelf -d libcrypto.so.1.1
Dynamic section at offset 0x2c54e8 contains 31 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libcrypto.so.1.1]
0x000000000000000c (INIT) 0x76da0
0x000000000000000d (FINI) 0x20e3a0
0x0000000000000019 (INIT_ARRAY) 0x49ad70
0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)
0x000000000000001a (FINI_ARRAY) 0x49ad78
0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
0x000000006ffffef5 (GNU_HASH) 0x1f0
0x0000000000000005 (STRTAB) 0x23e10
0x0000000000000006 (SYMTAB) 0x9680
0x000000000000000a (STRSZ) 87843 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000003 (PLTGOT) 0x4c5718
0x0000000000000002 (PLTRELSZ) 3072 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x761a0
0x0000000000000007 (RELA) 0x3baf0
0x0000000000000008 (RELASZ) 239280 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffc (VERDEF) 0x3b880
0x000000006ffffffd (VERDEFNUM) 11
0x000000000000001e (FLAGS) BIND_NOW
0x000000006ffffffb (FLAGS_1) Flags: NOW NODELETE
0x000000006ffffffe (VERNEED) 0x3ba00
0x000000006fffffff (VERNEEDNUM) 3
0x000000006ffffff0 (VERSYM) 0x39534
0x000000006ffffff9 (RELACOUNT) 9158
0x0000000000000000 (NULL) 0x0
I'm not really sure if these were the files you wanted me to dump, if there were another you had in mind, please let me know and I'll provide it for you.
So far, the only way I've actually been able to fix this is by making using LibPQ
the very first statement when Julia loads. Oddly, simply ensuring that using LibPQ
is executed before any of the scikit-learn stuff in the actual module where the conflict is occurring did not remedy the situation.
@ExpandingMan The first library you readelf
d was libssl
, could you dump libcrypto
from the same location?
◖0▮expandingman@server▮~/.julia/artifacts/e6e5f41352118bbeb44677765ebccab8c151c72a/lib▮◗ readelf -d libcrypto.so
Dynamic section at offset 0x2dd3c8 contains 27 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libcrypto.so.1.1]
0x0000000000000010 (SYMBOLIC) 0x0
0x000000000000000c (INIT) 0x75260
0x000000000000000d (FINI) 0x223f88
0x0000000000000004 (HASH) 0x158
0x0000000000000005 (STRTAB) 0x232c0
0x0000000000000006 (SYMTAB) 0x8878
0x000000000000000a (STRSZ) 88249 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000003 (PLTGOT) 0x4dd638
0x0000000000000002 (PLTRELSZ) 3144 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x74618
0x0000000000000007 (RELA) 0x3b1b0
0x0000000000000008 (RELASZ) 234600 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffc (VERDEF) 0x3af00
0x000000006ffffffd (VERDEFNUM) 15
0x000000006ffffffb (FLAGS_1) Flags: NODELETE
0x000000006ffffffe (VERNEED) 0x3b110
0x000000006fffffff (VERNEEDNUM) 3
0x000000006ffffff0 (VERSYM) 0x38b7a
0x000000006ffffff9 (RELACOUNT) 9765
0x0000000000000000 (NULL) 0x0
I am sometimes getting Julia crash with the following error when calling
LibPQ.Connection(::String)
There seems to be some conflict with some python library loaded by scikitlearn. I'm having a very hard time getting an MWE. Instead, what I have done is to run it both with and without scikitlearn. If I run without scikitlearn I don't get the error.
Here is the result of
Libdl.dllist()
without scikitlearn (and I don't get the error)And here it is with scikitlearn when I do get the error
@staticfloat, @giordano