dockerunison

Uncaught exception Failure("input_value: bad bigarray kind") - Unison on Windows and Mgt Development Environment


I am using the Mgt Development Environment (mgtcommerce/mgt-development-environment-5.6) on Windows 8.1. & DockerToolbox for Windows.

I also downloaded the proposed versions of OpenSSH & Unison from https://www.mgt-commerce.com/documentation/mgt-development-windows-file-synchronization and created the sync.bat as described.

Unfortunately Unison chrashes with the following error message:

Uncaught exception Failure("input_value: bad bigarray kind")
Raised by primitive operation at file "./remote.ml", line 453, characters 18-45
Called from file "./remote.ml", line 459, characters 23-61
Called from file "./lwt/lwt.ml", line 75, characters 20-23
Re-raised at file "./lwt/lwt.ml", line 135, characters 12-13
Called from file "list.ml", line 73, characters 12-15
Called from file "./lwt/lwt.ml", line 31, characters 2-37
Called from file "./lwt/lwt.ml", line 83, characters 17-46
Called from file "./lwt/win/lwt_unix_impl.ml", line 239, characters 6-40
Called from file "./uitext.ml", line 490, characters 2-113
Called from file "./uitext.ml", line 556, characters 38-66
Called from file "./uitext.ml", line 718, characters 6-47
Called from file "./uitext.ml", line 756, characters 6-125
Called from file "./uitext.ml", line 804, characters 8-47
Called from file "./uitext.ml", line 870, characters 21-43

It does work without problems:

  1. the first time unison is used for a docker image
  2. when using unison with the flag -ignorearchives

I read several articles and most of them come to the conclusion that this is an OCaml incompatibility problem.

How to fix this? Did someone else experience that error as well?


Solution

  • At the end I was able to get the sync up & running with the following setup:

    Commands used within Dockerfile for this:

    RUN apt-get update && apt-get install -y \
        ocaml \
        && curl -L https://github.com/bcpierce00/unison/archive/2.48.4.tar.gz | tar zxv -C /tmp && \
             cd /tmp/unison-2.48.4 && \
             sed -i -e 's/GLIBC_SUPPORT_INOTIFY 0/GLIBC_SUPPORT_INOTIFY 1/' src/fsmonitor/linux/inotify_stubs.c && \
             make && \
             cp src/unison src/unison-fsmonitor /usr/bin && \
             cd /root && rm -rf /tmp/unison-2.48.4