Troubleshooting/fr

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(L'exécution d'OpenSim.exe à partir d'un shell Cygwin refuse l'accès à certaines dll)
(Comment faire une recompilation propre ? (par exemple, après 'APPLICATION EXCEPTION DETECTED' ,après une recompilation avec des sources mises à jour))
Line 217: Line 217:
  
 
=== Comment faire une recompilation  propre ? (par exemple, après 'APPLICATION EXCEPTION DETECTED' ,après une recompilation  avec des sources mises à jour)===
 
=== Comment faire une recompilation  propre ? (par exemple, après 'APPLICATION EXCEPTION DETECTED' ,après une recompilation  avec des sources mises à jour)===
 +
Lorsque vous compilez à partir du code source, puis mettez à jour le code source, recompilez et essayez de l'exécuter, vous obtenez d'étranges exceptions d'exécution comme celle-ci :
 +
 +
  APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs
 +
  Exception: System.MissingMethodException
 +
 +
Lorsque vous compilez la source, il est  "compilée" en fichiers exécutables appelés "dlls" ou Dynamic Link Libraries.
 +
Ces fichiers portent l'extension .dll, ils sont ajoutés à votre installation locale et ne sont pas soumis au contrôle de la source.
 +
Lorsque nous changeons l'endroit où ces dlls sont créées, les "anciennes" dlls, issues des versions précédentes, seront toujours présentes.
 +
Le programme essaiera alors de charger ces anciens fichiers DLL, avec des résultats inattendus.
 +
 +
En général, l'un des correctifs suivants devrait résoudre le problème :
 +
* Faites un 'nant clean' si vous utilisez Nant, ou xbuild /t:clear ou msbuild /t:clean.
 +
* Supprimer le dossier bin/addin-db-002
 +
* Supprimez tous les OpenSim.*.dll (seulement les fichiers qui commencent par "OpenSim." et se terminent par ".dll", comme "OpenSim.Framework.dll") récursivement de votre répertoire d'installation. C'est ce que fait "nant clean" ci-dessus. Enfin, reconstruisez et exécutez.
 +
* Faites un checkout propre, construisez-le à partir de zéro, puis copiez tous les fichiers de données (*.db, *.ini) de votre ancienne installation, reconstruisez et exécutez.
 +
 +
Si tout le reste échoue, rejoignez le canal [[IRC]] #opensim, ou envoyez un email à la liste de diffusion [https://lists.berlios.de/mailman/listinfo/opensim-users opensim-users].
 +
 
=== L'entrée console d'OpenSim.exe est brouillée (scramblée) lorsqu'elle est exécutée avec mono sous Windows===
 
=== L'entrée console d'OpenSim.exe est brouillée (scramblée) lorsqu'elle est exécutée avec mono sous Windows===
  

Revision as of 09:21, 26 September 2021

Retour au Sommaire
Cette page donnne des configurations specifiques a certains systèmes qui peuvent etre utiles et des conseils pour des problèmes pouvant être rencontrés.

Contents

Conseils généraux

Si OpenSimulator démarre jusqu'au stade où vous pouvez taper des commandes dans la console de la région, alors vous pouvez connaître la configuration du simulateur en utilisant les commandes "config get" et "config save" comme détaillé à la page Server Commands. (et en tapant help dans la console). Cela peut être utile pour supprimer une erreur de configuration lors du diagnostic de certains problèmes.

Assurez-vous également que vous exécutez les bonnes versions du runtime .NET et de la base de données. Voir la Configuration#Database pour avoir des informations sur les versions des bases de données. Vous devez aussi utiliser .NET 3.5 ou plus. .NET 2.0 ne possède pas de System.Core. Si vous utilisez Windows .NET, téléchargez simplement la mise à jour 3.5 ou 4. Si vous utilisez Mono, vous devrez mettre à jour votre version de Mono.

System-specific configuration

CentOS 5 (64bit)

If you are running Mono 2.2 compiled from source on CentOS 5.2 64bit (not sure if it applies to other scenarios as well), you need to take these steps:

sudo yum install libgdiplus
sudo yum install libexif
sudo ln -s /usr/lib64/libgdiplus.so.0 /usr/lib64/libgdiplus.so
ldconfig

Cela m'a finalement permis de faire tourner OpenSimulator sans erreurs, et même de me connecter à d'autres grilles.

Gentoo

certaines dependances de Mono et le dernier Mono devraient utiliser les packages masqués de "~x86" (en assumant que votre plateforme soit un x86 , le changement peut etre effectué pour apparaitre comme ex:"~amd64" pour 64bits). Vous pouvez verifier pour le parametre USE avec:

ACCEPT_KEYWORDS="~x86" emerge -vp subversion nant mono libgdiplus

Ensuite installez avec:

ACCEPT_KEYWORDS="~x86" emerge subversion nant mono libgdiplus

N.B: The ACCEPT_KEYWORDS="~x86" peut etre changé dans le fichier Gentoo /etc/make.conf, mais ceci change les valeurs dans testing/unstable, en l'utilisant au debut de la ligne de commande seulement pour le process emergeant

Mac OS X

Si vous obtenez des erreurs concernant le framework 2.0 qui n'est pas supporté, vous devrez peut-être mettre à jour votre chemin pkg-config. Par exemple, vous pouvez le définir dans ~/.bash_profile :

Par exemple, vous pouvez le définir dans ~/.bash_profile:

export PKG_CONFIG_PATH="/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/:${PKG_CONFIG_PATH}"

Erreurs et corrections

Erreurs de connexion MySQL après environ 6-8 heures

MySQL dispose d'un délai d'attente qui interrompt la connexion après 28 800 secondes (8 heures) d'inactivité, ce qui entraînera probablement un échec de la connexion après que le serveur utilisateur soit resté inactif pendant une longue période. Si vous rencontrez ce problème, augmentez le délai d'attente à quelque chose de plus grand, comme 604800 (1 semaine) ou 31536000 (1 an). Dans la console mysql, tapez :

set global wait_timeout=604800;

System.DllNotFoundException: gdiplus.dll

D'abord verifiez d'etre sur que libgdiplus.so est connu en tant que gestionnaire de lisaisons dynamique:

/sbin/ldconfig -p | grep libgdiplus

Si rien n'est trouvé, verifiez bien que le dossier libgdiplus.so existe ou bien dans votre variable LD_LIBRARY_PATH ou listé dans un fichier *.conf file (e.g., gdiplus.conf) dans /etc/ld.so.conf.d/. Ensuite lancez ldconfig pour mettre a jour le cache. Ensuite, il devrait etre capable de trouver la librairie.

Vous devriez toujours avoir l'erreur ci dessus, cependant depuis que libgdiplus depend aussi d'autres librairies dynamiques, et si elles ont echoué au lancement, libgdiplus echouera. Pour tester cela, lancez OpenSimulator avec les informations de debug activées:

MONO_LOG_LEVEL=debug mono OpenSim.exe

Sous Mac OS X - vérifiez que le fichier suivant existe... /opt/local/lib/libgdiplus.dylib si c'est le cas, en tant qu'utilisateur root, éditez le fichier /opt/local/etc/mono/config et ajoutez la ligne suivante

<dllmap dll="gdiplus.dll" target="/opt/local/lib/libgdiplus.dylib" os="!windows"/>

Migration de la base de données Opensim / MySQL de Windows à Linux

MySql.Data.MySqlClient.MySqlException : La table 'opensim.UserAccounts' n'existe pas.

Environnement : Opensim Server 0.7.0.2 derrière Linux Ubuntu 8.0.4 avec mono 2.8 et MySQL 5.0 installés.

Quand vous migrez une base de données Opensim 0.7 fonctionnant avec MySQL 5.0 sous Windows vers Linux, lors de la connexion d'un utilisateur dans le serveur Opensim, vous pouvez recevoir l'exception suivante dans la console du serveur Opensim :

 03:11:10 - [LLOGIN SERVICE]: Exception processing login for (user_name): MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist
at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64& affectedRows, System.Int64& lastInsertId) [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] in <filename unknown>:0    at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64& affectedRows, System.Int64& lastInsertId) [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] in <filename unknown>:0

Dans le client, vous recevez également l'erreur suivante :

Login Failed
Error generating Login Response

Cette exception est causée par la façon dont MySQL stocke les noms des tables. Sur un serveur MySQL Windows, les noms des tables ne sont pas sensibles à la casse, mais toutes les tables dans MySQL Linux sont sensibles à la casse par défaut, donc quand OpenSimulator veut les trouver dans la base de données avec des noms en premières majuscules, il ne peut pas les trouver.

Une solution serait de changer les noms des tables requises par opensim (ALTER TABLE's), mais la solution la plus propre est de changer la configuration de MySQL, en vérifiant l'option "lower_case_sensitive = 1" dans le fichier "/etc/mysql/my.cnf", section [mysqld].

# sudo nano /etc/mysql/my.cnf

..........................
[mysqld]
..........................
lower_case_sensitive=1
..........................

Cela permet à MySQL de traduire automatiquement les noms de tables en minuscules. Après avoir redémarré le serveur MySQL et OpenSim, les tables sont chargées sans problème.

Attention : n'essayez pas d'effacer la table migration' pour forcer opensim à re-migrer votre base de données, car cela provoquera un dégât sur votre base de données.

Erreurs dues à des migrations de données incomplètes

Cela peut se produire lors des mises à jour de version si, pour une raison quelconque, une migration de base de données échoue lorsqu'il y a un changement dans la façon dont OpenSimulator stocke les données.

Vous pouvez voir des erreurs sur la console OpenSimulator comme :

 [LLOGIN SERVICE]: Exception processing login for [username]: MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist
 at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] 
 at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64& affectedRows, System.Int64& lastInsertId) [0x00000] 
 at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] 
 at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000]    at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] 
 at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64& affectedRows, System.Int64& lastInsertId) [0x00000] 
 at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] 
 at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] 

Dans ce cas, la table "users" n'avait pas été migrée vers la table "UserAccounts", comme l'attendait OpenSimulator, ce qui a également entraîné l'erreur côté viewer :

 Login Failed
 Error generating Login Response

J'ai résolu le problème en corrigeant les permissions du système de fichiers qui causaient l'échec de la migration (sur ma machine Linux, '/var/lib/mysql/...' s'était embrouillé), puis en supprimant la table de migration et en relançant le serveur (d'après les avertissements de migration [non-critical] rencontrés, il y avait probablement un moyen plus précis de le faire, mais j'avais tout sauvegardé et j'ai fait ça à la va-vite). À part la perte des références des données de terrain et des données de silouhettesd'habillage et d'attachement (facilement restaurées dans la simulation), tout est résolu pour moi.

Lors de l'installation de mono ou libgdiplus0, il se peut que la dépendance libexif.so.9 soit manquante

Ceci a été indiqué pour Centos5 mais peut se produire sur d'autres systèmes, téléchargez ftp://rpmfind.net/linux/conectiva/snapshot/i386/RPMS.extra/libexif9-0.5.12-47547cl.i386.rpm et installez pour résoudre le problème. Vous pourrez maintenant installer mono (si tout va bien).

The assembly mscorlib.dll was not found or could not be loaded

Ceci indique qu'il vous manque une des librairies mscor qui viennent avec nant. Ceci est facilement resolu en recuperant NAnt, qui est fourni avec les version 1.0 et 2.0 de la librairie necessaire.

apt-get install nant

External Program Failed: /usr/lib/pkgconfig/../../lib/mono/2.0/gmcs.exe

Ceci est rapidement reparé en recuperant mono-gmcs.

apt-get install mono-gmcs

The type or namespace name JScript does not exist in the namespace Microsoft

Notez que cela dit Jscript en boucle. Un indice peut etre ?

apt-get install mono-mjs libmono-microsoft8.0-cil

Sur Fedora et OpenSUSE, le paquetage nécessaire est "mono-jscript".

The type or namespace name Tcp does not exist in the namespace System.Runtime.Remoting.Channels

Celui ci est pris en compte avec une rapide installation:

apt-get install libmono-system-runtime2.0-cil


error while loading shared libraries: libgthread-2.0.so.0: cannot open shared object file

Si vous demarrez un systèeme de base Debian comme nous avons fait en haut de cette page, mais à la place d'utiliser la version apt de mono vous utilisez l'installeur depuis leur site web, alors vous pouvez rencontrer ce probleme.

Après avoir obtenu le fichier .bin depuis http://www.mono-project.com/Downloads, et l'avoir installé en suivant les instructions, en lançant 'mono --version' vous aurez ce message. Vous devez installer libglib2.0-0.

apt-get install libglib2.0-0

The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file.

Celle ci semble être réparé en récupérant la version apt de nant.

apt-get install nant

Ceci peut aussi etre dû à pkg-config qui n'est pas capable de localiser le fichier mono.pc. Ajoutez le dossier qui contient ce fichier dans votre variable d'environnement PKG_CONFIG_PATH devrait resoudre le problème.

Problèmes de réseau et de configuration

Voir aussi la page wiki :

Vous pouvez vous identifier, mais pas vous connecter à une région à partir d'un client distant.

Regardez dans votre dossier OpenSimulator/bin/Regions :

  1. Essayez 0.0.0.0 pour l'InternalAddress dans votre fichier Regions.ini.
  2. ExternalHostName=127.0.0.1 sera nécessaire pour changer son nom en nom DNS évaluable tel que "opensim.example-host.com" ou "71.6.131.152" (votre ip accessible au public).

Si vous avez toujours le même problème, il peut s'agir d'un problème de pare-feu. Vérifiez si votre pare-feu est actif et configurez-le. Voir Firewall Settings pour des instructions détaillées.

J'obtiens un délai d'attente pendant handshake (établissement d'une liaison) de la région

  • Avez-vous indiqué l'IP correcte dans vos fichiers de configuration de Regions\* ? Celle-ci doit être accessible depuis la machine du viewer.
  • Avez-vous plusieurs interfaces sur le serveur qui exécute OpenSim ? OpenSimulator ne lie pas les paquets UDP sortants à une IP spécifique, son IP par défaut pour vous joindre sera celle avec laquelle la région répondra à l'UDP. Si vous avez configuré la région pour une autre IP, vous obtiendrez un timeout pendant la connexion.

Je ne peux pas me connecter à mon OpenSimulator

Mon viewer est constamment déconnectée ou le mouvement de l'avatar est très mauvais (élastique, lag, etc.).

D'une manière générale, cela se produit soit parce que

  1. le viewer est surchargé
  2. Le simulateur a un problème ou est surchargé.
  3. la connexion réseau entre le viewer et le serveur a une bande passante insuffisante, une latence très élevée ou une perte de paquets significative.

La façon la plus simple de diagnostiquer le premier problème est de se connecter à des régions similaires sur d'autres grilles avec le même viewer et de voir si les mêmes problèmes se produisent.

Les problèmes de simulateur sont plus difficiles à diagnostiquer du seul côté ddu viewer, bien que l'on puisse regarder les monitorage côté client pour savoir si le simulateur est surchargé ou a d'autres problèmes.

La connexion réseau peut également être difficile à tester sans la coopération des opérateurs du serveur et du viewer. Si l'on peut compter sur la coopération des deux, on peut utiliser un programme externe tel que lperf en mode UDP pour effectuer des tests de base sur la connexion. iperf est disponible pour Windows, Mac et Linux. Si ces tests UDP révèlent une instabilité élevée (écart important par rapport à la latence moyenne de la connexion) ou une perte de paquets significative, cela posera des problèmes pour la connexion du spectateur au simulateur.

Compiler OpenSimulator

Je ne trouve aucun fichier de compilation ou de fichier solution

  • Si vous êtes sous Windows, exécutez
runprebuild.bat
  • sous Linux/Mac/FreeBSD, exécutez
runprebuild.sh

VS2005 ne veut pas ouvrir le fichier .sln

  • Essayez d'exécuter VS2005 C#. Vous utilisez probablement VS2005 C++. Ceci est un projet C#.

Exécuter OpenSimulator

L'exécution d'OpenSim.exe à partir d'un shell Cygwin refuse l'accès à certaines dll

  • Faites un 'cd bin' suivi de 'chmod a+x *' pour rendre tous les fichiers dll exécutables.

Comment faire une recompilation propre ? (par exemple, après 'APPLICATION EXCEPTION DETECTED' ,après une recompilation avec des sources mises à jour)

Lorsque vous compilez à partir du code source, puis mettez à jour le code source, recompilez et essayez de l'exécuter, vous obtenez d'étranges exceptions d'exécution comme celle-ci :

  APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs
 Exception: System.MissingMethodException

Lorsque vous compilez la source, il est "compilée" en fichiers exécutables appelés "dlls" ou Dynamic Link Libraries. Ces fichiers portent l'extension .dll, ils sont ajoutés à votre installation locale et ne sont pas soumis au contrôle de la source. Lorsque nous changeons l'endroit où ces dlls sont créées, les "anciennes" dlls, issues des versions précédentes, seront toujours présentes. Le programme essaiera alors de charger ces anciens fichiers DLL, avec des résultats inattendus.

En général, l'un des correctifs suivants devrait résoudre le problème :

  • Faites un 'nant clean' si vous utilisez Nant, ou xbuild /t:clear ou msbuild /t:clean.
  • Supprimer le dossier bin/addin-db-002
  • Supprimez tous les OpenSim.*.dll (seulement les fichiers qui commencent par "OpenSim." et se terminent par ".dll", comme "OpenSim.Framework.dll") récursivement de votre répertoire d'installation. C'est ce que fait "nant clean" ci-dessus. Enfin, reconstruisez et exécutez.
  • Faites un checkout propre, construisez-le à partir de zéro, puis copiez tous les fichiers de données (*.db, *.ini) de votre ancienne installation, reconstruisez et exécutez.

Si tout le reste échoue, rejoignez le canal IRC #opensim, ou envoyez un email à la liste de diffusion opensim-users.

L'entrée console d'OpenSim.exe est brouillée (scramblée) lorsqu'elle est exécutée avec mono sous Windows

Exceptions dans la console

System.DllNotFoundException: lib32/libopenjpeg-dotnet-2.1.3.0-dotnet-1-i686

System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so

System.NullReferenceException at OpenSim.Region.Communications.Local.LocalLoginService.PrepareLoginToRegion

Exception: System.NotImplementedException: The requested feature is not implemented

Command error: System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, culture=neutral,PublicKeyToken=b77a5c561934e089' or one of its dependencies

Questions relatives aux scènes

Disparition de prims à cause de doublons d'UUIDs

Pourquoi mes genoux sont-ils pliés lorsque je suis au repos ?

Mon avatar semble bouger sans cesse et s'envoler de temps en temps sans que je puisse l'arrêter

Questions relatives à l'inventaire

Lorsque je crée une nouvelle peau et une nouvelle silhouette, le système devient fou en créant constamment de nouveaux assets

Questions relatives à la carte

J'ai des problèmes pour visualiser la carte du monde

Mode Grille

Je démarre la simulation et elle ne se connecte à aucune grille

Ma grille fonctionne bien avec un utilisateur, mais lorsque deux utilisateurs se connectent en même temps, les deux se bloquent

Après environ 20 minutes, ma région commence à prendre 100% du processeur et la ou les régions se bloquent

Hypergrid

Après avoir démarré OpenSimulator avec Hypergrid activé, mon inventaire ne se charge pas !

Questions relatives à la physique

Problèmes d'utilisation de OpenDynamicsEngine (ODE) de ubOde sur *nix

Exception et perte de la physique ODE (System.EntryPointNotFoundException : dSpaceLockQuery)

Question relatives au moteur de scripts

Lors du chargement d'un OAR ou au démarrage du simulateur, il se bloque avec StackOverflowException

J'obtiens "Primitive : Error compiling script : unknown char : . error" lors de la compilation du script

J'obtiens "Primitive: Error compiling script: ApplicationName='gmcs', ..." lors de la compilation du script

J'obtiens "gmcs: Cannot find the specified file" lors de la compilation du script

Problèmes local

OpenSimulator moderne (après 0.7.3) devrait correctement définir la locale en_US pour toutes les sauvegardes de données, ce qui est nécessaire pour la compatibilité entre simulateurs. Cependant, si vous rencontrez des problèmes avec de grandes quantités de données corrompues, vous pouvez essayer de régler votre machine locale sur en_US et soumettre un rapport de bogue.

Questions relatives à l'Apparence

Voir Appearance Troubleshooting.


Retour au Sommaire

Personal tools
General
About This Wiki