2017-01-29 5 views
1

J'utilise l'environnement de développement Mgt (mgtcommerce/MGT-développement-environnement-5.6) sur Windows 8.1. & DockerToolbox pour Windows.Uncaught défaut d'exception (le "input_value: mauvais genre Bigarray") - Unison sous Windows et Mgt Environnement de développement

J'ai également téléchargé les versions proposées de OpenSSH & Unison de https://www.mgt-commerce.com/documentation/mgt-development-windows-file-synchronization et créé le sync.bat comme décrit.

Malheureusement Unison chrashes avec le message d'erreur suivant:

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 

Il fonctionne sans problème:

  1. le premier concert de temps est utilisé pour une image docker
  2. lorsque vous utilisez l'unisson avec le drapeau -ignorearchives

J'ai lu plusieurs article s et la plupart d'entre eux arrivent à la conclusion qu'il s'agit d'un problème d'incompatibilité OCaml.

Comment résoudre ce problème? -ce que quelqu'un d'autre expérience que l'erreur aussi bien?

+0

Ouais, je l'ai vu cette erreur avec Unison avant. Et oui, il y a eu des problèmes causés par l'utilisation de deux versions différentes d'OCaml pour compiler les binaires Unison sur les machines de synchronisation. Pouvez-vous recompiler Unison avec les versions correspondantes d'OCaml pour voir si cela résout le problème? –

+0

Je n'ai pas réussi à résoudre ce problème. Il serait intéressant si les autres utilisateurs de l'image docker ci-dessus ont le même problème que l'auteur donne un bon ** [documentation] (https://www.mgt-commerce.com/documentation/mgt-development-windows -file-synchronisation) ** quelles versions unisson utiliser et je n'arrive pas à croire qu'elles aient utilisé des versions incorrectes/différentes d'OCaml. Btw: Je ne peux même pas trouver la version OCaml sur docker-image ci-dessus – toasty

+0

(la seule raison pourrait être que j'utilise Windows 8.1 au lieu de Windows 10) – toasty

Répondre

1

A la fin, j'ai pu obtenir le synchroniser & courir avec la configuration suivante:

  • Sous Windows 10: utiliser les fichiers unisson provided by mgt-commerce.com - c'est la version 2.48.3 (mais je n » sais la OCaml version utilisée)
  • Dans l'image docker unisson recompilation avec unisson sources 2.48.4 et la version OCaml 4.01.0

Les commandes utilisées dans Dockerfile pour cela:

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 
2

Le message d'erreur « input_value: mauvais genre Bigarray » indique que vous frapper un bug assez bien connu dans Unison. Non seulement les versions majeures de deux processus Unison impliqués dans une synchronisation doivent correspondre (comme vous le savez probablement), mais il y avait aussi un changement interne dans les bibliothèques OCaml quelque part entre les versions 4.01 et 4.02 d'OCaml, liées au marshaling. de données. Il est difficile de vous donner un lien précis, comme certains des résultats les plus prometteurs de Google retourner une page vide, mais j'espère que ces feront:

https://github.com/bcpierce00/unison/issues/32 http://unison-users.yahoogroups.narkive.com/7FOa6VCg/re-unison-failed-uncaught-exception-failure-input-value-bad-bigarray-kind

note en particulier sur la page dans le dernier lien:

[...] ceci est un problème connu, et se produit parce que Unison n'a pas été compilé par rapport aux mêmes versions OCaml [...]. Le marshaling en OCaml 4.01 et 4.02 utilise un format différent ... Vous devrez compiler Unison 2.48.3 contre les mêmes versions de OCaml [...]

je lance parfois moi-même dans ce problème, et je circonvenir en compilant mon propre OCaml, Lablgtk for the graphical (GTK) interface et Unison. J'ai trouvé que compiler ceux-ci pour être assez simple sous Linux (n'ont pas essayé sur d'autres systèmes d'exploitation).