Troubleshooting
From OpenSimulator
(→ScriptEngine Issues) |
(→Locales Issues) |
||
Line 330: | Line 330: | ||
I have made many tests to find a solution about that problem. | I have made many tests to find a solution about that problem. | ||
+ | |||
+ | I first ran into this problem with OpenSIM SVN.6660 ... Even if I have no users connected, my OpenSim region server randomly crash ( after 1 hour, or 5 hours, ... ). | ||
+ | |||
+ | My first idea was to upgrade to the latest SVN release, no chance, same problem. So I made a test with a previous SVN release ( SVN.6575 ) which is running fine on another server ( same OS, same parameters, same mono release, ... ) : No chance, same problem. | ||
+ | |||
+ | Then, I tried to play with locales, recompile the '''screen''' unix command line utility I use to run my servers, ... No chance again. | ||
+ | |||
+ | So, I checked the memory usage on my Server, and I discovered that with the last SVN release, the amount of memory needed to run OpenSim server in multi-region/grid mode increased :) ... So, I have tuned my MySQL server to use less memory. Was better, but my OpenSim region server still randomly crash ( but could stay alive longer than before ). | ||
+ | |||
+ | Then, trying to play with the '''screen''' command line options ... And all my tests shows that the '''--debug''' option impact the stability of the server. | ||
+ | |||
+ | Initially, I used such command line to run OpenSim : | ||
+ | <pre> | ||
+ | /screen -S Region-service -d -m --debug mono OpenSim.exe | ||
+ | </pre> | ||
+ | |||
+ | Without the '''--debug''' option, everything seems to be more stable. | ||
+ | |||
+ | About locales, if you read mantis and threads in opensim-dev / opensim-users, you know that there are issues on system that are not "en_US" or "C" local compliant. | ||
+ | |||
+ | I have re-setup my server to be full "en_US.UTF8". | ||
+ | |||
+ | So, the resulting '''screen''' command line options should be : | ||
+ | <pre> | ||
+ | screen -S Region-service -d -m -U mono OpenSim.exe | ||
+ | </pre> | ||
+ | |||
+ | This allow me to run OpenSim SVN.6575 without crash during more than 48 hours, and also SVN.6735 ... | ||
+ | |||
+ | Hope those informations could help peoples. | ||
+ | |||
+ | Just for your information : | ||
+ | |||
+ | Here is my '''OpenSim Startup script''' : | ||
+ | <pre> | ||
+ | #!/bin/bash | ||
+ | |||
+ | echo "User-Service..." | ||
+ | /usr/local/bin/screen -S User-service -d -m -U mono OpenSim.Grid.UserServer.exe | ||
+ | sleep 5 | ||
+ | echo "Grid-Service..." | ||
+ | /usr/local/bin/screen -S Grid-service -d -m -U mono OpenSim.Grid.GridServer.exe | ||
+ | sleep 5 | ||
+ | echo "Asset-Service..." | ||
+ | /usr/local/bin/screen -S Asset-service -d -m -U mono OpenSim.Grid.AssetServer.exe | ||
+ | sleep 10 | ||
+ | echo "Inventory-Service..." | ||
+ | /usr/local/bin/screen -S Inventory-service -d -m -U mono OpenSim.Grid.InventoryServer.exe | ||
+ | sleep 5 | ||
+ | echo "Region-Service..." | ||
+ | /usr/local/bin/screen -S Region-service -d -m -U mono OpenSim.exe | ||
+ | sleep 5 | ||
+ | echo " " | ||
+ | echo " " | ||
+ | /usr/local/bin/screen -list | ||
+ | <pre> | ||
+ | |||
+ | Here is also a small script that give you a menu to connect to the '''screen(s)''' sessions : | ||
+ | <pre> | ||
+ | #!/usr/bin/perl | ||
+ | |||
+ | use strict; | ||
+ | use Term::Menu; | ||
+ | |||
+ | my $EXIT = 1; | ||
+ | |||
+ | my $MainTitle = "+-----------------------------------------------------+\n"; | ||
+ | $MainTitle .= "| Connexion SCREEN aux Serveurs OPENSIM |\n"; | ||
+ | $MainTitle .= "| |\n"; | ||
+ | $MainTitle .= "| ( Type CTRL+A+D to exit the Screen Console. ) |\n"; | ||
+ | $MainTitle .= "+-----------------------------------------------------+\n"; | ||
+ | |||
+ | while ( $EXIT == 1 ) | ||
+ | { | ||
+ | |||
+ | system("screen -list | grep service > /tmp/osg.services"); | ||
+ | my %LIST = (); | ||
+ | open(IN, "/tmp/osg.services"); | ||
+ | while ( my $i = <IN> ) | ||
+ | { | ||
+ | chomp($i); | ||
+ | |||
+ | $i =~ s/\./#/g; | ||
+ | $i =~ s/\-service\t/#/g; | ||
+ | $i =~ s/\t//g; | ||
+ | $i =~ s/\(//g; | ||
+ | $i =~ s/\)//g; | ||
+ | |||
+ | my @STATUS = split(/#/, $i); | ||
+ | $LIST{$STATUS[1]} = $STATUS[2]; | ||
+ | } | ||
+ | close(IN); | ||
+ | |||
+ | my %LIST2 = (); | ||
+ | my @indices = ('User', 'Grid', 'Asset', 'Inventory', 'Region'); | ||
+ | |||
+ | foreach my $key ( @indices ) | ||
+ | { | ||
+ | # print "$key --> $LIST{$key}\n"; | ||
+ | if ( $LIST{$key} =~ /Attached/ ) | ||
+ | { | ||
+ | $LIST2{$key} = "[X]"; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $LIST2{$key} = "[ ]"; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if ( $LIST{'User'} =~ /Attached/ ) | ||
+ | { | ||
+ | $LIST2{'USER'} = "X"; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $LIST2{'USER'} = "-"; | ||
+ | } | ||
+ | |||
+ | system ('clear'); | ||
+ | my $prompt = new Term::Menu ( | ||
+ | spaces => 3, | ||
+ | aftertext => "\nChoisir une option : ", | ||
+ | beforetext => ${MainTitle}, | ||
+ | delim => ". ", | ||
+ | ); | ||
+ | |||
+ | my $SEP = " "; | ||
+ | |||
+ | my $answer = $prompt->menu( | ||
+ | osg_user => ["OpenSim User Server $SEP$LIST2{'User'}", '1'], | ||
+ | osg_grid => ["OpenSim Grid Server $SEP$LIST2{'Grid'}", '2'], | ||
+ | osg_asset => ["OpenSim Asset Server $SEP$LIST2{'Asset'}", '3'], | ||
+ | osg_inventory => ["OpenSim Inventory Server $SEP$LIST2{'Inventory'}", '4'], | ||
+ | osg_region => ["OpenSim Region Server $SEP$LIST2{'Region'}\n", '5'], | ||
+ | osg_shutdown => ["Shutdown Servers (Manual)",'6'], | ||
+ | osg_shutdown2 => ["Shutdown Servers (Hard)\n",'7'], | ||
+ | quit => ["Quitter", 'q'], | ||
+ | ); | ||
+ | |||
+ | if ( "${answer}" eq "quit" ) | ||
+ | { | ||
+ | $EXIT = 0; | ||
+ | } | ||
+ | |||
+ | if ( "${answer}" eq "osg_user" ) | ||
+ | { | ||
+ | system("screen -d -r -S User-service"); | ||
+ | $EXIT = 1; | ||
+ | } | ||
+ | |||
+ | if ( "${answer}" eq "osg_grid" ) | ||
+ | { | ||
+ | system("screen -d -r -S Grid-service"); | ||
+ | $EXIT = 1; | ||
+ | } | ||
+ | |||
+ | if ( "${answer}" eq "osg_asset" ) | ||
+ | { | ||
+ | system("screen -d -r -S Asset-service"); | ||
+ | $EXIT = 1; | ||
+ | } | ||
+ | |||
+ | if ( "${answer}" eq "osg_inventory" ) | ||
+ | { | ||
+ | system("screen -d -r -S Inventory-service"); | ||
+ | $EXIT = 1; | ||
+ | } | ||
+ | |||
+ | if ( "${answer}" eq "osg_region" ) | ||
+ | { | ||
+ | system("screen -d -r -S Region-service"); | ||
+ | $EXIT = 1; | ||
+ | } | ||
+ | |||
+ | if ( "${answer}" eq "osg_shutdown" ) | ||
+ | { | ||
+ | system("screen -d -r -S Region-service"); | ||
+ | system("screen -d -r -S Inventory-service"); | ||
+ | system("screen -d -r -S Asset-service"); | ||
+ | system("screen -d -r -S Grid-service"); | ||
+ | system("screen -d -r -S User-service"); | ||
+ | $EXIT = 1; | ||
+ | } | ||
+ | |||
+ | if ( "${answer}" eq "osg_shutdown2" ) | ||
+ | { | ||
+ | # system("/OPENSIM/shutdownGrid.py"); | ||
+ | system("screen -S Region-service -r -m -X quit"); | ||
+ | system("screen -S Inventory-service -r -m -X quit"); | ||
+ | system("screen -S Asset-service -r -m -X quit"); | ||
+ | system("screen -S Grid-service -r -m -X quit"); | ||
+ | system("screen -S User-service -r -m -X quit"); | ||
+ | $EXIT = 0; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Regards, | ||
+ | Ursula Matova. |
Revision as of 05:05, 9 October 2008
This page gives any system-specific configuration settings that may be useful, and advice for problems that might be encountered.
System-specific configuration
CentOS 5
To install mono and nant, you can use the "Linux Installer for x86" found at http://www.mono-project.com/Downloads.
SVN can be installed by:
yum install subversion
Mono defaults to installing into /opt, so you may have to add this path to your environment variables, for example, in your ~/.bashrc:
export PATH="/opt/mono-1.2.5/bin:$PATH" export PKG_CONFIG_PATH="/opt/mono-1.2.5/lib/pkgconfig:$PKG_CONFIG_PATH" export MANPATH="/opt/mono-1.2.5/share/man:$MANPATH" export LD_LIBRARY_PATH="/opt/mono-1.2.5/lib:$LD_LIBRARY_PATH"
After changing LD_LIBRARY_PATH, you should update the dynamic linker cache:
ldconfig
You may still encounter the "The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file." error listed below. In that case, this may fix this:
yum install glib
If you are running a firewall as well (i.e., if iptables -L shows a list of ACCEPT and REJECT rules), you'll have to open the necessary ports if you want to access the sim from other machines. For standalone mode:
iptables -I RH-Firewall-1-INPUT -p tcp --dport 9000 -j ACCEPT iptables -I RH-Firewall-1-INPUT -p udp --dport 9000 -j ACCEPT
Debian 4.0r0
If you set your system to use unstable sources, and then install some packages listed below, everything should just work. To use unstable sources, modify your /etc/apt/sources.list file, replacing 'etch' or 'stable' with 'unstable':
deb ftp://ftp.debian.org/debian/ unstable main deb-src ftp://ftp.debian.org/debian/ unstable main
Then update your packages to the new versions:
apt-get update apt-get dist-upgrade
This will probably change a large number of packages, and may break things. In my experience, however, if you do not use unstable sources then the packages are not up to date enough, and you run into version issues, which lead to two DllNotFoundException errors below appearing in the console output: gdiplus.dll and libopenjpeg-libsl-2.1.2.0.so.
Once the sources are updated, we need to install the necessary packages to be able to build OpenSim:
apt-get install subversion mono nant mono-gmcs mono-mjs libmono-microsoft8.0-cil libmono-system-runtime2.0-cil
If any of these packages are missing, you'll probably encounter one of the errors listed below. However, with these packages, OpenSim should build cleanly.
Please note: If you are using mysql as storage on unstable you may get the following error:-
Exception: System.NotSupportedException: CodePage 1252 not supported at System.Text.Encoding.GetEncoding (Int32 codePage) [0x00000]
To get it to work, try installing the libmono-i18n2.0-cil package
apt-get install libmono-i18n2.0-cil
Gentoo
some Mono dependency & latest Mono itself may use "~x86" masked packages (assuming x86 is your platform, change may be made to reflect your ex:"~amd64" for 64bits). You could check for USE parameter with:
ACCEPT_KEYWORDS="~x86" emerge -vp subversion nant mono libgdiplus
Then install with:
ACCEPT_KEYWORDS="~x86" emerge subversion nant mono libgdiplus
N.B: The ACCEPT_KEYWORDS="~x86" can be set in Gentoo /etc/make.conf file, but that turn up all the emerges in testing/unstable, using it at the begining of emerge command line use it only for current emerge process
Mac OS X
This assumes you're using the universal binary for mono from the Mono Project site.
If you are using OS X 10.4, you should also install X11 from the OS X install CDs. In OS X 10.5, this is not required.
If you get errors about the 2.0 framework not being supported, you may need to update your pkg-config path. I set this in ~/.bash_profile:
export PKG_CONFIG_PATH="/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/:${PKG_CONFIG_PATH}"
Errors and fixes
Build workarounds due to non-functionality or bugs:
Disappearing prims due to duplicate UID's
Generally this problem occurs when a save-xml/load-xml file is loaded into the same sim without using the -newUID switch to generate new UUID's for the objects. This switch is documented in the general server commands section. (load-xml <filename> -newUID). But if this does not work, the other way is to shift-copy your build and drag it up into the air.. then delete the one in the air, (which is actually the copy). This will generate new UID's on all your prims.. you can now leave that build, and load your original load-xml file in another region.
Linked objects not scaling/editing properly
From Mantis [# 135] and [# 223]:
Linked objects: while linking/unlinking objects seems to work fine, the editing of single prims inside a linked object doesn't work correctly. You have to check the box "Edit linked parts", then you can select a single prim and edit it, but in most cases the changes in size- and/or postion-parameters are not accepted and revert immediately to the original ones. It is not completely reproducible, as it may work in some single case though.
Workaround: unlink the whole object, make the changes, and relink the whole thing again.
note: re-scaling unlinked objects in grid mode seems to work better than in standalone.
Exception and loss of ode physics System.EntryPointNotFoundException: dSpaceLockQuery
The following is usually caused by using the wrong version of libode. First try find / -name "libode.so" to see if you have other copies of the ode physics engine. Then make sure you have the latest version of this.
[SCENE] [02-01 22:20:40] System.EntryPointNotFoundException: dSpaceLockQuery
at (wrapper managed-to-native) Ode.NET.d:SpaceLockQuery (intptr) at OpenSim.Region.Physics.OdePlugin.OdeScene.waitForSpaceUnlock (IntPtr space) [0x00000] at OpenSim.Region.Physics.OdePlugin.OdeCharacter.AvatarGeomAndBodyCreation (Single npositionX, Single npositionY, Single npositionZ, Single tensor) [0x00000] at OpenSim.Region.Physics.OdePlugin.OdeCharacter..ctor (System.String avName, OpenSim.Region.Physics.OdePlugin.OdeScene parent_scene, OpenSim.Region.Physics.Manager.PhysicsVector pos) [0x00000] at OpenSim.Region.Physics.OdePlugin.OdeScene.AddAvatar (System.String avName, OpenSim.Region.Physics.Manager.PhysicsVector position) [0x00000] at OpenSim.Region.Environment.Scenes.ScenePresence.AddToPhysicalScene () [0x00000] at OpenSim.Region.Environment.Scenes.ScenePresence.MakeRootAgent (LLVector3 pos, Boolean isFlying) [0x00000] at OpenSim.Region.Environment.Scenes.Scene.AgentCrossing (UInt64 regionHandle, LLUUID agentID, LLVector3 position, Boolean isFlying) [0x00000]
MySQL connection errors after about 6-8 hours
MySQL has a timeout which drops the connection after 28,800 seconds (8 hours) of inactivity, which will probably result in failure to login after the User server has been sitting idle for an extended period. If you have this problem, increase the timeout to something larger, like 604800 (1 week) or 31536000 (1 year). From the mysql console, type:
set global wait_timeout=604800;
System.DllNotFoundException: gdiplus.dll
First, check to make sure that libgdiplus.so is known to the dynamic linker:
/sbin/ldconfig -p | grep libgdiplus
If nothing is found, make sure that the directory libgdiplus.so exists in is either in your LD_LIBRARY_PATH environment variable or listed in a *.conf file (e.g., gdiplus.conf) in /etc/ld.so.conf.d/. Then run ldconfig to update the cache. Then it should be able to find the library.
You may still have the above error, however, since libgdiplus also depends on other dynamic libraries, and if they fail to load, libgdiplus will fail. To test for this, run OpenSim with debugging information turned on:
MONO_LOG_LEVEL=debug mono OpenSim.exe
{It may show errors loading other libraries, like libexif.so.9. In that case, linking to an existing version of the offending library may work:
ln -s libexif.so.12 libexif.so.9
On Mac OS X - check the following file exists... /opt/local/lib/libgdiplus.dylib if it does then as root user edit the file /opt/local/etc/mono/config and add the line
<dllmap dll="gdiplus.dll" target="/opt/local/lib/libgdiplus.dylib" os="!windows"/>
(Is there a cleaner solution than this?)} **see below for alternative/cleaner fix**
When installing mono or libgdiplus0 you may get dependency missing libexif.so.9
This was noticed on Centos5 but may occur on other systems, download ftp://rpmfind.net/linux/conectiva/snapshot/i386/RPMS.extra/libexif9-0.5.12-47547cl.i386.rpm and install problem solved. You will now be able to install mono (as long as nothing else goes wrong )
The assembly mscorlib.dll was not found or could not be loaded
This indicates that you are missing one of the mscor libs that comes with nant. This is easily solved by getting NAnt, which comes with both versions 1.0 and 2.0 of the required lib.
apt-get install nant
External Program Failed: /usr/lib/pkgconfig/../../lib/mono/2.0/gmcs.exe
This is quickly fixed by retrieving mono-gmcs.
apt-get install mono-gmcs
The type or namespace name JScript does not exist in the namespace Microsoft
Note that it says Jscript over and over again. Hint perhaps?
apt-get install mono-mjs libmono-microsoft8.0-cil
On Fedora, the needed package is mono-jscript
The type or namespace name Tcp does not exist in the namespace System.Runtime.Remoting.Channels
This one is taken care of with a quick install:
apt-get install libmono-system-runtime2.0-cil
Missing: libopenjpeg-libsl-2.1.2.0-x86_64.so
You are on 64bit linux machine and my need to follow these instructions: Installing and running on x86-64
If you start with a base Debian system as we did at the top of the page, but instead of using the apt version of mono you use the installer from their website, then you may encounter this issue.
After getting the .bin file from http://www.mono-project.com/Downloads, and executing it as per its instructions, upon finishing, you may find that if you try to run `mono --version` you are presented with this message. This one means you need to install 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.
This one seems to be fixed by retrieving the apt version of nant.
apt-get install nant
This can also be due to pkg-config not being able to locate the mono.pc file. Adding the directory containing this file to the environment variable PKG_CONFIG_PATH may solve this.
Networking and config issues
See Running section
You are able to log in, but not connect to a Region from a remote client
Look in your OpenSimulator/bin/Regions folder 1) Try 0.0.0.0 for the internal_ip_address in your region.xml(default.xml) file (you'll have one of those files *per* region you've created) 2) external_host_name="127.0.0.1" will need to be changed to the accessable DNS name such as "opensim.example-host.com" or "71.6.131.152" (your public accessable ip)
Building OpenSim
I can't find any build files or solution files
- If you're on Windows, run runprebuild.bat - on Linux/Mac/FreeBSD, run runprebuild.sh
VS2005 won't open the .sln file
- Try running VS2005 C#. You are probably running VS2005 C++. This is a C# project.
Running OpenSim
Running OpenSim.exe from a Cygwin shell has access denied for some dll's
- Do a 'cd bin' followed by 'chmod a+x *' to make all dll files executable.
I cannot start my sim
- See Configuration
Something Has Gone Wrong!
I get errors concerning 'owner_uuid' when starting up my grid after updating from svn beyond r3254
When updating to recent revisions after r3254, we are now using the unused owner_uuid. There are some grids whose mysql tables were created during a time when this field was inadvertently removed from the .sql script that initializes the regions table. Logging in to your mysql instance and executing this SQL query to add the missing owner_uuid should solve this issue:
alter table `regions` add column `owner_uuid` varchar(36) default '00000000-0000-0000-0000-000000000000' not null, comment 'Rev.2';
The punctuation around regions and owner_uuid is "grave accent". The punctuation around the default value and the comment is the single quote. The "grave accent" is the one generally to the left of the One button, under the tilde and the single-quote, is, well, underneath the double quote. I think this matters to mysql.
I get errors concerning 'State' when starting up my grid after updating from svn beyond r3786
After r3786, a new 'State' field has been added to the 'primshapes' table on SQLite. This field is used to persist trees and grass. You may have an empty region at startup, because OpenSim does not find this 'State' field and does not know what to do. The best is to use SQLiteBrowser or another SQLite table editor (download it at http://sqlitebrowser.sourceforge.net/) to create the missing field:
alter table primshapes add column State integer default 0
Just launch SQLiteBrowser, use File/Open database, then browse to OpenSim.db file and open it. Then, go to the "Execute SQL" tab, copy/paste the command above in the "SQL string" textbox, then hit the "Execute query" button.
I get a timeout during region handshake
- Do you have the correct IP in your Regions\* config files?
- Do you have multiple interfaces on the server running OpenSim? OpenSim will not bind outgoing UDP packets to a specific IP, its default IP to reach you will be what the Region answers UDP with. If you have configured the region for another IP you will get a timeout during connect.
I cannot connect to my OpenSim
I can connect but cannot move
If the client connects but the avatar can only spin in place and not move, then the sim is not correctly configured. It completed the initial login function, but packets are not being exchanged between the client and the sim, probably due to a network configuration error on the sim.
From time to time my Avatar seems to get stuck
Right now there is a bottle neck when syncing prims off to the database. This will cause small (5 - 10 second) apparent hangs of the Avatar, but it will recover fine once the data is synced. It is a known issue based on legacy architecture of some of the data storage code. We hope this will be removed soon.
I have problems with viewing the worldmap
- This may happen when running OpenSim on a Linux server, both in grid or standalone mode.
- Symptoms: when opening the worldmap window in the SL-viewer, the sims are not displayed grahically in the worldmap, the server console shows some error related to openjpeg, the current session freezes...
- Reason: your svn source trunk does not have the correct (or whatever...) libopenjpeg-libsl library.
- Other reason: the file "defaultstripe.png" does not exists in the same OpenSim folder, or is corrupted.
- Solution: get the newest code from libsecondlife (svn co svn://opensecondlife.org/libsl/trunk), 'make' manually in the subdir openjpeg-libsl, and copy the resulting libopenjpeg-libsl-2.1.2.0.so into your OpenSim bin subdir, overwriting the existing one.
- Recompile & restart OpenSim
Exceptions on the Console
This is a list of Exceptions that you may see on the console, what they mean, and if they are a problem.
System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so
Failed generating terrain map: System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so at (wrapper managed-to-native) OpenJPEGNet.OpenJPEG:LibslAllocDecoded OpenJPEGNet.OpenJPEG/LibslImage&) at OpenJPEGNet.OpenJPEG.Encode (System.Byte[] decoded, Int32 width, Int32 height, Int32 components, Boolean lossless) [0x00000] at OpenJPEGNet.OpenJPEG.EncodeFromImage (System.Drawing.Bitmap bitmap, Boolean lossless) [0x00000] at OpenSim.Region.Terrain.TerrainEngine.ExportJpegImage (System.String gradientmap) [0x00000]
You are on Linux, and the native lib libopenjpeg-libsl-2.1.2.0.so is not compatible with your system for one of the following reasons:
- You have an old processor (libopenjpeg has been compiled with optimizations)
- You are running in 64bit mode (none of the native libs are built for 64bit)
You can rebuild your own libopenjpeg from source, or run in a compatible environment. You can do this by:
svn co svn://opensecondlife.org/libsl/trunk libsl cd libsl/openjpeg-libsl/ make
then copy libopenjpeg-libsl-2.1.2.0.so into OpenSim bin-folder.
Grid Mode
Note: Grid Mode isn't officially supported yet. As such, you are pretty much on your own if you are trying to get OpenSim up and running in Grid Mode.
I start the sim and it doesn't connect to any grid
When OpenSim is first started, it needs configuration.
I start the OpenSim.Grid.UserServer.exe and it gives an error
If this error is access denied for username@localhost, the mysql database is not set up. It will print some text and wait for input - either an enter to accept a default value, or another value you can supply.
I want to run my own Local Grid but one or more servers fail to start
- Be sure that you're able to start OpenSim.exe alone, in Standalone mode, and to be able to login.
- Start the servers in the correct UGAS order and answer the questions as recommended (see OpenSim: Configuration).
- Set all the external URI's to the correct IP: 127.0.0.1 if running on your local machine, or aaa.bbb.ccc.ddd if running on a remote server.
- Check again all the *.xml configuration files for any wrong settings or typing errors...!
- Don't forget to connect with your SL-viewer to port 8002 (Grid User-Server) instead of 9000 (Standalone OpenSim-Server).
- Delete all *.xml and *.yap files in the bin directory if you want to run a full reconfiguration again.
I get a bunch of asset not found errors, while connected to a online grid, and my inventory doesn't seem to work right
- Make sure your opensim.ini has ' asset_database = "grid" ' otherwise it will not work correctly.
ScriptEngine Issues
Got "Primitive: Error compiling script: unknown char: . error" when compiling script
When trying to compile a script ( using DotNetEngine or XEngine ) you could have this error :
Primitive: Error compiling script: unknown char: .
And on the console :
11:06:37 - [ScriptEngine.DotNetEngine]: Unloading script 11:06:37 - Exception in MaintenanceLoopThread. Thread will recover after 5 sec throttle. Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2[OpenSim.Region.ScriptEngine.Interfaces.IEventReceiver,OpenSim.Region.ScriptEngine.Shared.Api.Plugins.Dataserver].get_Item (IEventReceiver key) [0x00000] at OpenSim.Region.ScriptEngine.Shared.Api.AsyncCommandManager.RemoveScript (IEventReceiver engine, UInt32 localID, UUID itemID) [0x00000] at OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager._StopScript (UInt32 localID, UUID itemID) [0x00000] at OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager.DoScriptLoadUnload () [0x00000] at OpenSim.Region.ScriptEngine.DotNetEngine.MaintenanceThread.MaintenanceLoop () [0x00000] 11:06:37 - [ScriptEngine.DotNetEngine]: Loading script 11:06:37 - [ScriptEngine.DotNetEngine]: ScriptManager StartScript: localID: 720001, itemID: 88c9d28c-6004-4609-a707-717190de044a 11:06:37 - [Compiler]: Compiled new assembly for fad15951-f9aa-493f-be68-2aaf5ff8a3c9 11:06:37 - [SCRIPT]: Compiled assetID fad15951-f9aa-493f-be68-2aaf5ff8a3c9: ScriptEngines/a83150da-1ab1-11dd-89fb-0014853ee9da/CommonCompiler_compiled_fad15951-f9aa-493f-be68-2aaf5ff8a3c9.dll 11:06:37 - [ScriptEngine.DotNetEngine]: AppDomain Loading: OpenSim.Region.ScriptEngine.Shared, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
This happens on linux when your locales are not set to default ( "C" ).
- You could refer to Mantis #2088 and Mantis #2015 for a workaround to run opensim.
env LANG=C mono --debug OpenSim.exe
- You could also change your locale setup. Here is what I use in my '.bash_profile' :
export LC_ALL=C export LANG=C
I know it's a ugly way to setup locales on a linux box, but it works fine on my Linux From Scratch box.
Locales Issues
Well, some of us, OpenSim users, ran into random crash of the OpenSim Region server in grid mode ...
I have made many tests to find a solution about that problem.
I first ran into this problem with OpenSIM SVN.6660 ... Even if I have no users connected, my OpenSim region server randomly crash ( after 1 hour, or 5 hours, ... ).
My first idea was to upgrade to the latest SVN release, no chance, same problem. So I made a test with a previous SVN release ( SVN.6575 ) which is running fine on another server ( same OS, same parameters, same mono release, ... ) : No chance, same problem.
Then, I tried to play with locales, recompile the screen unix command line utility I use to run my servers, ... No chance again.
So, I checked the memory usage on my Server, and I discovered that with the last SVN release, the amount of memory needed to run OpenSim server in multi-region/grid mode increased :) ... So, I have tuned my MySQL server to use less memory. Was better, but my OpenSim region server still randomly crash ( but could stay alive longer than before ).
Then, trying to play with the screen command line options ... And all my tests shows that the --debug option impact the stability of the server.
Initially, I used such command line to run OpenSim :
/screen -S Region-service -d -m --debug mono OpenSim.exe
Without the --debug option, everything seems to be more stable.
About locales, if you read mantis and threads in opensim-dev / opensim-users, you know that there are issues on system that are not "en_US" or "C" local compliant.
I have re-setup my server to be full "en_US.UTF8".
So, the resulting screen command line options should be :
screen -S Region-service -d -m -U mono OpenSim.exe
This allow me to run OpenSim SVN.6575 without crash during more than 48 hours, and also SVN.6735 ...
Hope those informations could help peoples.
Just for your information :
Here is my OpenSim Startup script :
#!/bin/bash echo "User-Service..." /usr/local/bin/screen -S User-service -d -m -U mono OpenSim.Grid.UserServer.exe sleep 5 echo "Grid-Service..." /usr/local/bin/screen -S Grid-service -d -m -U mono OpenSim.Grid.GridServer.exe sleep 5 echo "Asset-Service..." /usr/local/bin/screen -S Asset-service -d -m -U mono OpenSim.Grid.AssetServer.exe sleep 10 echo "Inventory-Service..." /usr/local/bin/screen -S Inventory-service -d -m -U mono OpenSim.Grid.InventoryServer.exe sleep 5 echo "Region-Service..." /usr/local/bin/screen -S Region-service -d -m -U mono OpenSim.exe sleep 5 echo " " echo " " /usr/local/bin/screen -list <pre> Here is also a small script that give you a menu to connect to the '''screen(s)''' sessions : <pre> #!/usr/bin/perl use strict; use Term::Menu; my $EXIT = 1; my $MainTitle = "+-----------------------------------------------------+\n"; $MainTitle .= "| Connexion SCREEN aux Serveurs OPENSIM |\n"; $MainTitle .= "| |\n"; $MainTitle .= "| ( Type CTRL+A+D to exit the Screen Console. ) |\n"; $MainTitle .= "+-----------------------------------------------------+\n"; while ( $EXIT == 1 ) { system("screen -list | grep service > /tmp/osg.services"); my %LIST = (); open(IN, "/tmp/osg.services"); while ( my $i = <IN> ) { chomp($i); $i =~ s/\./#/g; $i =~ s/\-service\t/#/g; $i =~ s/\t//g; $i =~ s/\(//g; $i =~ s/\)//g; my @STATUS = split(/#/, $i); $LIST{$STATUS[1]} = $STATUS[2]; } close(IN); my %LIST2 = (); my @indices = ('User', 'Grid', 'Asset', 'Inventory', 'Region'); foreach my $key ( @indices ) { # print "$key --> $LIST{$key}\n"; if ( $LIST{$key} =~ /Attached/ ) { $LIST2{$key} = "[X]"; } else { $LIST2{$key} = "[ ]"; } } if ( $LIST{'User'} =~ /Attached/ ) { $LIST2{'USER'} = "X"; } else { $LIST2{'USER'} = "-"; } system ('clear'); my $prompt = new Term::Menu ( spaces => 3, aftertext => "\nChoisir une option : ", beforetext => ${MainTitle}, delim => ". ", ); my $SEP = " "; my $answer = $prompt->menu( osg_user => ["OpenSim User Server $SEP$LIST2{'User'}", '1'], osg_grid => ["OpenSim Grid Server $SEP$LIST2{'Grid'}", '2'], osg_asset => ["OpenSim Asset Server $SEP$LIST2{'Asset'}", '3'], osg_inventory => ["OpenSim Inventory Server $SEP$LIST2{'Inventory'}", '4'], osg_region => ["OpenSim Region Server $SEP$LIST2{'Region'}\n", '5'], osg_shutdown => ["Shutdown Servers (Manual)",'6'], osg_shutdown2 => ["Shutdown Servers (Hard)\n",'7'], quit => ["Quitter", 'q'], ); if ( "${answer}" eq "quit" ) { $EXIT = 0; } if ( "${answer}" eq "osg_user" ) { system("screen -d -r -S User-service"); $EXIT = 1; } if ( "${answer}" eq "osg_grid" ) { system("screen -d -r -S Grid-service"); $EXIT = 1; } if ( "${answer}" eq "osg_asset" ) { system("screen -d -r -S Asset-service"); $EXIT = 1; } if ( "${answer}" eq "osg_inventory" ) { system("screen -d -r -S Inventory-service"); $EXIT = 1; } if ( "${answer}" eq "osg_region" ) { system("screen -d -r -S Region-service"); $EXIT = 1; } if ( "${answer}" eq "osg_shutdown" ) { system("screen -d -r -S Region-service"); system("screen -d -r -S Inventory-service"); system("screen -d -r -S Asset-service"); system("screen -d -r -S Grid-service"); system("screen -d -r -S User-service"); $EXIT = 1; } if ( "${answer}" eq "osg_shutdown2" ) { # system("/OPENSIM/shutdownGrid.py"); system("screen -S Region-service -r -m -X quit"); system("screen -S Inventory-service -r -m -X quit"); system("screen -S Asset-service -r -m -X quit"); system("screen -S Grid-service -r -m -X quit"); system("screen -S User-service -r -m -X quit"); $EXIT = 0; } }
Regards, Ursula Matova.