ocaml-community / utop

Universal toplevel for OCaml
Other
847 stars 113 forks source link

Error on dynamically loaded library: dlllwt_unix_stubs.so #273

Closed rom38 closed 5 years ago

rom38 commented 5 years ago

Than i try install utop on android termux. I get the following:

$ opam install utop
The following actions will be performed:
  ∗ install utop 2.3.0

<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[utop.2.3.0] found in cache

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[ERROR] The compilation of utop failed at
        "/data/data/com.termux/files/home/.opam/4.06.1+termux/bin/dune build -p utop -j 7".

#=== ERROR while compiling utop.2.3.0 =========================================#
# context     2.0.1 | linux/arm64 |  | https://opam.ocaml.org#6cfd4ce2
# path        ~/.opam/4.06.1+termux/.opam-switch/build/utop.2.3.0
# command     ~/.opam/4.06.1+termux/bin/dune build -p utop -j 7
# exit-code   1
# env-file    ~/.opam/log/utop-4465-05296d.env
# output-file ~/.opam/log/utop-4465-05296d.out
### output ###
#       ocamlc src/top/utop.bc (exit 2)
# (cd _build/default && /data/data/com.termux/files/home/.opam/4.06.1+termux/bin/ocamlc.opt -w -40 -safe-string -g -o src/top/utop.bc -linkall -I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/bisect_ppx/runtime -I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/bytes -I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile -I /data/data/com.termux/files/home/.opa[...]
# File "_none_", line 1:
# Error: Error on dynamically loaded library: /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so: dlopen failed: cannot locate symbol "socket_type_table" referenced by "/data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so"...

<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build utop 2.3.0
└─
╶─ No changes have been performed
$ cat ~/.opam/log/utop-5746-05296d.out
      ocamlc src/top/utop.bc (exit 2)
(cd _build/default && /data/data/com.termux/files/home/.opam/4.06.1+termux/bin/ocamlc.opt -w -40 -safe-string -g -o src/top/utop.bc -linkall
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/bisect_ppx/runtime
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/bytes 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/default_config 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/dyn 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/lib_default 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/library 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/findlib 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lambda-term 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt/unix 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt_log 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt_log/core 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt_react 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/compiler-libs 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/threads
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/react 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/result 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/seq 
-I /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/zed 
-I src/lib
/data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/compiler-libs/ocamlcommon.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/compiler-libs/ocamlbytecomp.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/compiler-libs/ocamltoplevel.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/findlib/findlib.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/findlib/findlib_top.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/unix.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/bisect_ppx/runtime/bisect.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/result/result.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/seq/seq.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt/lwt.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/bigarray.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/ocaml/threads/threads.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt/unix/lwt_unix.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/react/react.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt_react/lwt_react.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/default_config/camomileDefaultConfig.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/library/camomileLibrary.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/lib_default/camomileLibraryDefault.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/dyn/camomileLibraryDyn.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/camomile/camomile_yuge.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/zed/zed.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt_log/core/lwt_log_core.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lwt_log/lwt_log.cma /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/lambda-term/lambda_term.cma src/lib/uTop.cma src/top/.utop.eobjs/byte/utop.cmo)
File "_none_", line 1:
Error: Error on dynamically loaded library: /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so: dlopen failed: cannot locate symbol "socket_type_table" referenced by "/data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so"...
readelf -s /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so|grep so
    14: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND socket_type_table
    15: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND getsockopt@LIBC (2)
    77: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND alloc_sockaddr
    96: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND getsockname@LIBC (2)
   125: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND get_sockaddr
   128: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND setsockopt@LIBC (2)
   148: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND socket_domain_table
   172: 000000000000ae54    20 FUNC    GLOBAL DEFAULT   10 lwt_unix_is_socket
   215: 000000000000ab54   112 FUNC    GLOBAL DEFAULT   10 socket_domain
   321: 000000000000ae7c    20 FUNC    GLOBAL DEFAULT   10 lwt_unix_socketpair_stub
    38: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS crtbegin_so.c
  1603: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS windows_is_socket.c
  1621: 0000000000020510     8 OBJECT  LOCAL  DEFAULT   17 __dso_handle
  1651: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND socket_type_table
  1652: 000000000000ab54   112 FUNC    GLOBAL DEFAULT   10 socket_domain
  1657: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND getsockopt@@LIBC
  1789: 000000000000ae54    20 FUNC    GLOBAL DEFAULT   10 lwt_unix_is_socket
  1798: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND alloc_sockaddr
  1841: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND getsockname@@LIBC
  1844: 000000000000ae7c    20 FUNC    GLOBAL DEFAULT   10 lwt_unix_socketpair_stub
  1902: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND get_sockaddr
  1907: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND setsockopt@@LIBC
  1955: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND socket_domain_table
nm -D /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so|grep so
                 U alloc_sockaddr
                 U get_sockaddr
                 U getsockname
                 U getsockopt
000000000000ae54 T lwt_unix_is_socket
000000000000ae7c T lwt_unix_socketpair_stub
                 U setsockopt
000000000000ab54 T socket_domain
                 U socket_domain_table
                 U socket_type_table

In linux ubuntu 18.06 and in windows 7 cygwin all OK

What can i do? And what the symbol "socket_type_table"? I can not find it in linux shared libraries in /system/lib/.

ghost commented 5 years ago

Could you try this:

$ touch x.ml
$ ocamlfind ocamlc -linkpkg -linkall -package lwt.unix x.ml

?

rom38 commented 5 years ago

Thanks for help! Yes you right

$ ocamlfind ocamlc -linkpkg  -package lwt.unix x.ml
ocamlfind: [WARNING] Package `threads': Linking problems may arise because of the missing -thread or -vmthread switch
File "x.ml", line 1:
Error: Error on dynamically loaded library: /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so: dlopen failed: cannot locate symbol "socket_type_table" referenced by "/data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so"...
$
$ ocamlfind ocamlc -linkpkg  -linkall -package lwt.unix x.ml
ocamlfind: [WARNING] Package `threads': Linking problems may arise because of the missing -thread or -vmthread switch
File "x.ml", line 1:
Error: Required module `Condition' is unavailable
$ ocamlfind ocamlc -linkpkg  -linkall -thread -package lwt.unix x.ml
File "x.ml", line 1:
Error: Error on dynamically loaded library: /data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so: dlopen failed: cannot locate symbol "socket_type_table" referenced by "/data/data/com.termux/files/home/.opam/4.06.1+termux/lib/stublibs/dlllwt_unix_stubs.so"...
$
rom38 commented 5 years ago

Maybe this is linked with https://github.com/android-ndk/ndk/issues/201 ?

ghost commented 5 years ago

Ok, so this is not an issue with utop then. Could you close this issue and open another one on https://github.com/ocsigen/lwt?

Looking at the Lwt code, there indeed seems to be an inconsistency between the .c and .h files regarding socket_type_table and defined(LWT_ON_WINDOWS) /cc @aantron

rom38 commented 5 years ago

Yes you are right, this is the problem lwt

ophey commented 5 years ago

was there even an issue opened for this on lwt? h0w to fix it?

aantron commented 5 years ago

https://github.com/ocsigen/lwt/issues/664