mmottl / postgresql-ocaml

OCaml-bindings for the PostgreSQL database
Other
141 stars 23 forks source link

Missing _PQbackendPID symbol on m1 / big sur #44

Closed sgrove closed 3 weeks ago

sgrove commented 3 years ago

Sorry for the sparse report, I'm not sure where the issue is exactly at this point given there are quite a few pieces that changed all at once!

Running into a problem with a missing symbol, _PQbackendPID:

Error: Error on dynamically loaded library: /Users/s/.esy/3_______________________________________________________________________/i/opam__s__postgresql-opam__c__4.3.0-4180f521/lib/stublibs/dllpostgresql_stubs.so: dlopen(/Users/s/.esy/3_______________________________________________________________________/i/opam__s__postgresql-opam__c__4.3.0-4180f521/lib/stublibs/dllpostgresql_stubs.so, 10): Symbol not found: _PQbackendPID
  Referenced from: /Users/s/.esy/3_______________________________________________________________________/i/opam__s__postgresql-opam__c__4.3.0-4180f521/lib/stublibs/dllpostgresql_stubs.so
  Expected in: flat namespace
 in /Users/s/.esy/3_______________________________________________________________________/i/opam__s__postgresql-opam__c__4.3.0-4180f521/lib/stublibs/dllpostgresql_stubs.so

Looking at a list of the symbols in the .so:

❯ nm /Users/s/.esy/3_______________________________________________________________________/i/opam__s__postgresql-opam__c__4.3.0-4180f521/lib/stublibs/dllpostgresql_stubs.so
                 U _Caml_state
0000000000005ba0 T _PQCancel_stub
                 U _PQbackendPID
0000000000003b80 T _PQbackendPID_stub
0000000000003b90 T _PQbackendPID_stub_bc
                 U _PQbinaryTuples
0000000000004810 T _PQbinaryTuples_stub
                 U _PQcancel
                 U _PQclear
                 U _PQcmdStatus
0000000000005050 T _PQcmdStatus_stub
                 U _PQcmdTuples
00000000000050d0 T _PQcmdTuples_stub
00000000000030f0 T _PQconn_isnull
                 U _PQconndefaults
00000000000032c0 T _PQconndefaults_stub
                 U _PQconnectPoll
0000000000003610 T _PQconnectPoll_stub
                 U _PQconnectStart
                 U _PQconnectdb
0000000000003110 T _PQconnectdb_stub
                 U _PQconninfoFree
                 U _PQconsumeInput
0000000000005af0 T _PQconsumeInput_stub
0000000000005b00 T _PQconsumeInput_stub_bc
                 U _PQdb
0000000000003760 T _PQdb_stub
                 U _PQdescribePrepared
00000000000045d0 T _PQdescribePrepared_stub
                 U _PQendcopy
00000000000065c0 T _PQendcopy_stub
0000000000006640 T _PQendcopy_stub_bc
                 U _PQerrorMessage
0000000000003b00 T _PQerrorMessage_stub
                 U _PQescapeByteaConn
0000000000005da0 T _PQescapeByteaConn_stub
0000000000005e00 T _PQescapeByteaConn_stub_bc
                 U _PQescapeStringConn
0000000000005cf0 T _PQescapeStringConn_stub
0000000000005d80 T _PQescapeStringConn_stub_bc
                 U _PQexec
                 U _PQexecParams
0000000000003c00 T _PQexecParams_stub
                 U _PQexecPrepared
0000000000004190 T _PQexecPrepared_stub
                 U _PQfformat
0000000000004a40 T _PQfformat_stub
0000000000004a60 T _PQfformat_stub_bc
                 U _PQfinish
00000000000031c0 T _PQfinish_stub
                 U _PQflush
0000000000005b40 T _PQflush_stub
0000000000005b50 T _PQflush_stub_bc
                 U _PQfmod
0000000000004ac0 T _PQfmod_stub
0000000000004ae0 T _PQfmod_stub_bc
                 U _PQfname
0000000000004830 T _PQfname_stub
00000000000048b0 T _PQfname_stub_bc
                 U _PQfnumber
0000000000004a00 T _PQfnumber_stub
0000000000004a20 T _PQfnumber_stub_bc
                 U _PQfreeCancel
                 U _PQfreemem
                 U _PQfsize
0000000000004b00 T _PQfsize_stub
0000000000004b20 T _PQfsize_stub_bc
                 U _PQftype
0000000000004a80 T _PQftype_stub
0000000000004aa0 T _PQftype_stub_bc
                 U _PQgetCancel
                 U _PQgetResult
0000000000005a40 T _PQgetResult_stub
0000000000004c90 T _PQgetescval_stub
0000000000004fa0 T _PQgetescval_stub_bc
                 U _PQgetisnull
0000000000004fc0 T _PQgetisnull_stub
0000000000004fe0 T _PQgetisnull_stub_bc
                 U _PQgetlength
0000000000005010 T _PQgetlength_stub
0000000000005030 T _PQgetlength_stub_bc
                 U _PQgetline
                 U _PQgetlineAsync
0000000000006260 T _PQgetlineAsync_stub
0000000000006280 T _PQgetlineAsync_stub_bc
00000000000060d0 T _PQgetline_stub
0000000000006190 T _PQgetline_stub_bc
                 U _PQgetvalue
0000000000004b80 T _PQgetvalue_stub
0000000000004c70 T _PQgetvalue_stub_bc
                 U _PQhost
00000000000038e0 T _PQhost_stub
                 U _PQisBusy
0000000000005b20 T _PQisBusy_stub
                 U _PQisnonblocking
0000000000005270 T _PQisnonblocking_stub
                 U _PQmakeEmptyPGresult
0000000000005190 T _PQmakeEmptyPGresult_stub
                 U _PQnfields
00000000000047d0 T _PQnfields_stub
00000000000047f0 T _PQnfields_stub_bc
                 U _PQnotifies
0000000000005f50 T _PQnotifies_stub
                 U _PQnparams
00000000000049c0 T _PQnparams_stub
00000000000049e0 T _PQnparams_stub_bc
                 U _PQntuples
0000000000004790 T _PQntuples_stub
00000000000047b0 T _PQntuples_stub_bc
0000000000002f90 T _PQocaml_init
                 U _PQoidValue
0000000000005150 T _PQoidValue_stub
0000000000005170 T _PQoidValue_stub_bc
                 U _PQoptions
0000000000003a60 T _PQoptions_stub
                 U _PQparamtype
0000000000004b40 T _PQparamtype_stub
0000000000004b60 T _PQparamtype_stub_bc
                 U _PQpass
0000000000003860 T _PQpass_stub
                 U _PQport
0000000000003960 T _PQport_stub
                 U _PQprepare
0000000000004050 T _PQprepare_stub
                 U _PQputline
00000000000062b0 T _PQputline_stub
0000000000006370 T _PQputline_stub_bc
                 U _PQputnbytes
0000000000006430 T _PQputnbytes_stub
00000000000064f0 T _PQputnbytes_stub_bc
                 U _PQresStatus
00000000000046e0 T _PQresStatus_stub
0000000000003be0 T _PQres_isnull
                 U _PQreset
                 U _PQresetPoll
00000000000036f0 T _PQresetPoll_stub
                 U _PQresetStart
0000000000003680 T _PQresetStart_stub
0000000000003240 T _PQreset_stub
                 U _PQresultErrorField
0000000000004930 T _PQresultErrorField_stub
                 U _PQresultErrorMessage
0000000000004710 T _PQresultErrorMessage_stub
                 U _PQresultStatus
00000000000046c0 T _PQresultStatus_stub
                 U _PQsendDescribePortal
00000000000059e0 T _PQsendDescribePortal_stub
00000000000059f0 T _PQsendDescribePortal_stub_bc
                 U _PQsendDescribePrepared
00000000000059b0 T _PQsendDescribePrepared_stub
00000000000059c0 T _PQsendDescribePrepared_stub_bc
                 U _PQsendPrepare
0000000000005600 T _PQsendPrepare_stub
0000000000005620 T _PQsendPrepare_stub_bc
                 U _PQsendQuery
                 U _PQsendQueryParams
0000000000005290 T _PQsendQueryParams_stub
00000000000055f0 T _PQsendQueryParams_stub_bc
                 U _PQsendQueryPrepared
0000000000005640 T _PQsendQueryPrepared_stub
00000000000059a0 T _PQsendQueryPrepared_stub_bc
                 U _PQserverVersion
0000000000003bb0 T _PQserverVersion_stub
0000000000003bc0 T _PQserverVersion_stub_bc
                 U _PQsetNoticeProcessor
00000000000066c0 T _PQsetNoticeProcessor_stub
                 U _PQsetSingleRowMode
0000000000005a10 T _PQsetSingleRowMode_stub
0000000000005a20 T _PQsetSingleRowMode_stub_bc
                 U _PQsetnonblocking
0000000000005230 T _PQsetnonblocking_stub
0000000000005250 T _PQsetnonblocking_stub_bc
                 U _PQsocket
0000000000005b70 T _PQsocket_stub
0000000000005b80 T _PQsocket_stub_bc
                 U _PQstatus
0000000000003ae0 T _PQstatus_stub
                 U _PQtty
00000000000039e0 T _PQtty_stub
                 U _PQunescapeBytea
0000000000005e60 T _PQunescapeBytea_stub
                 U _PQuser
00000000000037e0 T _PQuser_stub
                 U __DefaultRuneLocale
                 U ___maskrune
                 U ___stack_chk_fail
                 U ___stack_chk_guard
000000000000c380 d __dyld_private
0000000000004df0 t _bytea_hex_pairs
                 U _caml_alloc_custom
                 U _caml_alloc_small
                 U _caml_alloc_string
                 U _caml_alloc_tuple
                 U _caml_callback
                 U _caml_copy_string
                 U _caml_enter_blocking_section
                 U _caml_failwith
                 U _caml_leave_blocking_section
                 U _caml_modify
                 U _caml_named_value
                 U _caml_raise_with_arg
                 U _caml_register_generational_global_root
                 U _caml_remove_generational_global_root
                 U _caml_stat_alloc
                 U _caml_stat_free
                 U _caml_string_length
0000000000004eb0 t _decode_bytea_hex
0000000000007f00 s _error_field_tbl
0000000000007770 t _free_result
0000000000002fe0 T _ftype_of_oid_stub
0000000000003040 T _ftype_of_oid_stub_bc
                 U _lo_close
0000000000006cb0 T _lo_close_stub
0000000000006d30 T _lo_close_stub_bc
                 U _lo_creat
0000000000006780 T _lo_creat_stub
0000000000006800 T _lo_creat_stub_bc
                 U _lo_export
0000000000006a00 T _lo_export_stub
0000000000006ac0 T _lo_export_stub_bc
                 U _lo_import
0000000000006880 T _lo_import_stub
0000000000006940 T _lo_import_stub_bc
                 U _lo_lseek
0000000000007600 T _lo_lseek_stub
00000000000076b0 T _lo_lseek_stub_bc
                 U _lo_open
0000000000006b90 T _lo_open_stub
0000000000006c20 T _lo_open_stub_bc
                 U _lo_read
0000000000007190 T _lo_read_ba_stub
0000000000007240 T _lo_read_ba_stub_bc
0000000000006fe0 T _lo_read_stub
00000000000070b0 T _lo_read_stub_bc
                 U _lo_tell
0000000000006dc0 T _lo_tell_stub
0000000000006e40 T _lo_tell_stub_bc
                 U _lo_unlink
0000000000006ed0 T _lo_unlink_stub
0000000000006f50 T _lo_unlink_stub_bc
                 U _lo_write
00000000000074a0 T _lo_write_ba_stub
0000000000007550 T _lo_write_ba_stub_bc
00000000000072f0 T _lo_write_stub
00000000000073c0 T _lo_write_stub_bc
                 U _memcpy
0000000000006740 t _notice_ml
00000000000030b0 T _oid_of_ftype_stub
00000000000030d0 T _oid_of_ftype_stub_bc
000000000000c3a0 d _oid_tbl
000000000000c498 d _result_ops
                 U _strlen
000000000000c390 d _v_empty_string
000000000000c4d8 b _v_exc_Oid
000000000000c4e0 b _v_null_param
                 U dyld_stub_binder

Appreciate any pointers you might have on how to start tracking this down!

mmottl commented 3 years ago

I'm afraid, but I couldn't replicate this problem on Big Sur. I don't have an M1 platform though. You may want to check the installation of your PostgreSQL library. Mine was installed via MacPorts (postgresql13).