Opened 11 years ago

Closed 3 years ago

Last modified 3 years ago

#19975 closed defect (fixed)

Ocaml 3.11.0 breaks Unison "ssh://"

Reported by: denis.laplante@… Owned by: pmetzger (Perry E. Metzger)
Priority: Normal Milestone:
Component: ports Version: 1.7.1
Keywords: Cc: kballard (Lily Ballard), mason.kramer@…
Port: ocaml unison

Description (last modified by mf2k (Frank Schima))

The major symptom was message 'Some error in create_session child' when trying to synchronize over ssh. The fix is to revert to ocaml version 3.10.2

From: Jerome Vouillon <Jerome.Vouillon@..>
Date: June 13, 2009 12:47:20 AM PDT (CA)
To: Denis Laplante <denis.laplante@..>
Subject: Re: 'Some error in create_session child'

DL> Bonjour
DL> 
DL> I get this message every time my MacPorts install of unison  
DL> @2.27.57_0+aqua
DL> tries to start ssh.  In fact "ls -lu /usr/bin/ssh" shows that ssh never 
DL> gets loaded.
DL> 
DL> Dtruss ( sudo /usr/bin/dtruss -f  Unison -debug verbose mac-via-ssh )
DL> shows that execve() after fork() fails with error 45 ( ENOSUP Not  
DL> supported).

JV> This is a bug in OCaml 3.11.0.  You should recompile Unison either
JV> with OCaml 3.11.1 or an older version of OCaml.
JV> 
JV> Thanks for this detailed report!

With ocaml 3.11.1 the following error occurs at compile time:

[ abbreviation: {} for "local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_net_unison/work/unison-2.27.57" ]
  /Developer/usr/bin/gcc-4.0 -arch i386 -L/opt/{}/uimacnew/build/Default -F/opt/{}/uimacnew/build/Default -F/opt/{}/uimacnew -filelist /opt/{}/uimacnew/build/uimac.build/Default/uimac.build/Objects-normal/i386/Unison.LinkFileList -mmacosx-version-min=10.5 /opt/{}/uimacnew/../unison-blob.o -L/opt/local/lib/ocaml -lunix -lthreadsnat -lstr -lasmrun -framework Cocoa -framework Security -framework Growl -framework ExceptionHandling -o /opt/{}/uimacnew/build/Default/Unison.app/Contents/MacOS/Unison
Undefined symbols:
 "_caml_apply2", referenced from:
     _caml_callback2_exn in libasmrun.a(i386.o)
 "_caml_apply3", referenced from:
     _caml_callback3_exn in libasmrun.a(i386.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

Change History (10)

comment:1 Changed 11 years ago by mf2k (Frank Schima)

Cc: eridius@… added
Description: modified (diff)
Owner: changed from macports-tickets@… to pguyot@…

comment:2 Changed 11 years ago by julio.lopez@…

It seems that the unison port (and perhaps other ocaml -dependent ports) does not appropriately list its dependencies.

I reverted back to ocaml 3.10.2 and still had undefined symbols. See below. After installing caml-ocamlnet, caml-extlib and their dependencies I was able to build and use unison with ocaml 3.10.2. I have not tried this with ocaml 3.11.1

Command output: Undefined symbols:
  "_unix_setsockopt", referenced from:
      _camlUnix__213 in unison-blob.o
      _unix_setsockopt$non_lazy_ptr in unison-blob.o
  "_caml_backtrace_status", referenced from:
      _camlPrintexc__39 in unison-blob.o
      _caml_backtrace_status$non_lazy_ptr in unison-blob.o
  "_caml_get_exception_backtrace", referenced from:
      _camlPrintexc__39 in unison-blob.o
      _caml_get_exception_backtrace$non_lazy_ptr in unison-blob.o
  "_caml_apply2", referenced from:
      _caml_callback2_exn in libasmrun.a(i386.o)
  "_caml_apply3", referenced from:
      _caml_callback3_exn in libasmrun.a(i386.o)
  "_caml_record_backtrace", referenced from:
      _camlPrintexc__39 in unison-blob.o
      _caml_record_backtrace$non_lazy_ptr in unison-blob.o
  "_unix_getsockopt", referenced from:
      _camlUnix__213 in unison-blob.o
      _unix_getsockopt$non_lazy_ptr in unison-blob.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
** BUILD FAILED **

comment:3 Changed 11 years ago by mason.kramer@…

Hi, I'm encountering the same bugs.

  1. Unison compiled against Ocaml 3.11.1 cannot connect via ssh:// and it doesn't seem to be dependant on which version of Unison is used.
  1. In the second case aqua unison cannot build with the listed dependencies of 3.11.1. I tried to install the mentioned dependencies in this ticket (caml-ocamlnet and caml-extlib) and still couldn't build it on 3.11.1. In the end I just omitted the aqua build and built with +x11 only.
  1. I don't have ocaml 3.10.2 anymore and am unable to revert to it. I'm unable or unwilling to compile ocaml and unison from source so unison is simply dead for me. Is there something I can do?

comment:4 Changed 11 years ago by mason.kramer@…

Cc: mason.kramer@… added

Cc Me!

comment:5 Changed 10 years ago by jmroot (Joshua Root)

Owner: changed from pguyot@… to mww@…

comment:6 Changed 4 years ago by mf2k (Frank Schima)

Owner: mww@… deleted
Port: ocaml , unisonocaml unison
Status: newassigned

See #53012.

comment:7 Changed 3 years ago by mojca (Mojca Miklavec)

Owner: set to pmetzger

comment:8 Changed 3 years ago by pmetzger (Perry E. Metzger)

The last substantive comment on this ticket was eight years ago. We are now on a totally different version of Unison and a totally different version of OCaml. Is this problem still extant?

comment:9 Changed 3 years ago by ryandesign (Ryan Schmidt)

Resolution: fixed
Status: assignedclosed

The reporter cannot log in to Trac but responded by email to say:

I have not had a problem with this for a long time.
My use of ocaml was for compiling unison, which I now get pre-compiled through macports.
Thank you.

comment:10 Changed 3 years ago by kballard (Lily Ballard)

I can confirm, Unison 2.48.4 compiled with OCaml 4.05.0 handles ssh:// URLs just fine.

Note: See TracTickets for help on using tickets.