自シムに接続できなくなってしまいましたorz

自シムに接続できなくなってしまいましたorz

- 八崎 詠斗 の投稿
返信数: 11

以前サーバにトラブルが発生し、復旧させて一度は自シムへの移動も確認できる状態になったのですが、気づいたらまた自シムへログインできなくなっていました。

トラブルと、復旧は私のブログにまとめてありますが、Dockerのコンテナ内でOpenSimを動かしています。

 

OpenSim側のエラーは以下の通りです。

 

21:20:43 - [SCENE PRESENCE]: Did not find presence with id 64a626c9-a4df-49df-b019-794534f244af in 8sim before timeout
21:20:43 - [LOGHTTP]: Slow handling of 8 PUT /agent/64a626c9-a4df-49df-b019-794534f244af/   from 202.26.159.214:41313 took 20121ms
21:20:43 - [SCENE]: Incoming child agent update for 64a626c9-a4df-49df-b019-794534f244af in 8sim

 

 ビューアー側のエラーは以下の様に出ました。

 

一度自シムに移動できていることから、Docker側の問題ではないと思っています。
自分でも解決方法を模索していきますが、何かアドバイス頂けることがありましたら宜しくお願いしますm(__)m

八崎 詠斗 への返信

Re: 自シムに接続できなくなってしまいましたorz

- Iseki Fumikazu の投稿

こんにちは.

まず,ご使用のルータはヘアピンNAT(NATループバック)機能付きでしょうか?

ヘアピンNAT(NATループバック)機能付きでない場合は,OpenSimのプログラムはJOGで配布しているものを使用していますでしょうか?

ヘアピンNAT(NATループバック)機能付きでない場合は,JOGで配布しているものでないと正常に動作しません.

JOGで配布しているプログラム使用している場合は,Dockerのせいかもしれません.

Docker は名前くらいしか聞いたことが無く詳細は分かりませんが,もしかしてIPアドレス変換等を行っている場合はかなり話がややこしくなると思います.

Iseki Fumikazu への返信

Re: 自シムに接続できなくなってしまいましたorz

- 八崎 詠斗 の投稿

早速のお返事ありがとうございます。

ヘアピンNAT(NATループバック)機能はついておりません。

また、OpenSimのプログラムはJOGで配布されている0.8.2を使用しております。

 

Dockerではポートフォワーディングがされており、特定ポート(9000と8002)はDockerコンテナの仮想マシンに通信させるような設定にしてあります。

やっぱりDockerが原因の可能性が高いですよね・・・^^;

もうちょっと色々調べてみます♪

八崎 詠斗 への返信

Re: 自シムに接続できなくなってしまいましたorz

- Iseki Fumikazu の投稿

JOG のOpenSim のプログラムは NAT(準)対応(要手動設定)ですが,さすがに NATを2段やっている場合は対応していません.

Docker がNATを行っているとしたら,やっぱり難しいですね.

それより,Docker を動かす前の OpenSim のエラーはどんな感じでしたか?
mono のバージョンによっては,OpenSim がDLLの読み込みに失敗して起動しないことがあります.

 

Iseki Fumikazu への返信

Re: 自シムに接続できなくなってしまいましたorz

- 八崎 詠斗 の投稿

>Docker がNATを行っているとしたら,やっぱり難しいですね.

なるほど・・・Docker内で動かすにはちょっと難しい感じですね^^;

 

>それより,Docker を動かす前の OpenSim のエラーはどんな感じでしたか?

APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs

 

Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: libgdiplus.so

  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)

  at System.Drawing.GDIPlus..cctor () [0x00000] in <filename unknown>:0 

  --- End of inner exception stack trace ---

  at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000] in <filename unknown>:0 

  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)

  at OpenSim.Region.CoreModules.Scripting.VectorRender.VectorRenderModule.Initialise (IConfigSource config) [0x00000] in <filename unknown>:0 

  at OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin.Initialise (OpenSim.OpenSimBase openSim) [0x00000] in <filename unknown>:0 

  at OpenSim.ApplicationPluginInitialiser.Initialise (IPlugin plugin) [0x00000] in <filename unknown>:0 

  at OpenSim.Framework.PluginLoader`1[OpenSim.IApplicationPlugin].Load () [0x00000] in <filename unknown>:0 

  at OpenSim.Framework.PluginLoader`1[OpenSim.IApplicationPlugin].Load (System.String extpoint) [0x00000] in <filename unknown>:0 

  at OpenSim.OpenSimBase.LoadPlugins () [0x00000] in <filename unknown>:0 

  at OpenSim.OpenSimBase.StartupSpecific () [0x00000] in <filename unknown>:0 

  at OpenSim.OpenSim.StartupSpecific () [0x00000] in <filename unknown>:0 

  at OpenSim.Framework.Servers.BaseOpenSimServer.Startup () [0x00000] in <filename unknown>:0 

  at OpenSim.Application.Main (System.String[] args) [0x00000] in <filename unknown>:0 

InnerException: System.DllNotFoundException: libgdiplus.so

  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)

  at System.Drawing.GDIPlus..cctor () [0x00000] in <filename unknown>:0 

 

Application is terminating: True

 

[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: libgdiplus.so

  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)

  at System.Drawing.GDIPlus..cctor () [0x00000] in <filename unknown>:0 

  --- End of inner exception stack trace ---

  at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000] in <filename unknown>:0 

  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)

  at OpenSim.Region.CoreModules.Scripting.VectorRender.VectorRenderModule.Initialise (IConfigSource config) [0x00000] in <filename unknown>:0 

  at OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin.Initialise (OpenSim.OpenSimBase openSim) [0x00000] in <filename unknown>:0 

  at OpenSim.ApplicationPluginInitialiser.Initialise (IPlugin plugin) [0x00000] in <filename unknown>:0 

  at OpenSim.Framework.PluginLoader`1[OpenSim.IApplicationPlugin].Load () [0x00000] in <filename unknown>:0 

  at OpenSim.Framework.PluginLoader`1[OpenSim.IApplicationPlugin].Load (System.String extpoint) [0x00000] in <filename unknown>:0 

  at OpenSim.OpenSimBase.LoadPlugins () [0x00000] in <filename unknown>:0 

  at OpenSim.OpenSimBase.StartupSpecific () [0x00000] in <filename unknown>:0 

  at OpenSim.OpenSim.StartupSpecific () [0x00000] in <filename unknown>:0 

  at OpenSim.Framework.Servers.BaseOpenSimServer.Startup () [0x00000] in <filename unknown>:0 

  at OpenSim.Application.Main (System.String[] args) [0x00000] in <filename unknown>:0

 

以上の様なエラーが出ました。「GDIPlus」が正しく読み込まれていない感じのようです。

>mono のバージョンによっては,OpenSim がDLLの読み込みに失敗して起動しないことがあります.

monoのバージョンは4.0.5です。
dnfコマンド(yumの新しいパッケージ管理コマンド)ではダウングレードはできない状態でした・・・。
一度mono関係を削除して、ソースからコンパイルして入れなおした方がいい感じでしょうか・・・?^^;

八崎 詠斗 への返信

Re: 自シムに接続できなくなってしまいましたorz

- Iseki Fumikazu の投稿

libgdiplus.so がインストールされていない様ですね.

libgdiplus はグラフィックのライブラリです.通常は /usr/lib/libgdiplus.so または /usr/lib64/libgdiplus.so にあるはずです.

OSは何でしょう? yum が使えるのであれば yum install libgdiplus  でインストールできるはずです.
パッケージに存在するかどうかは yum search libgdiplus で確認できます.

libgdiplus.so が既に存在する場合は,環境変数の PKG_CONFIG_PATH が正しく設定されていない可能性があります.
一般的な設定では

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig

でしょうか.= の前後は空白を開けません.

 

最新版をコンパイルしたい場合は2Dグラフィック用の Cairo も必要です.
以下のコマンドを root で実行すれば,最新版をコンパイルできます(11/20時点でのバージョン)
コマンドやライブラリは /usr/local 以下にインストールされますので,コマンドの実行前に /etc/ld.so.conf に /usr/local/lib を追加しておいてください.

# wget www.cairographics.org/releases/cairo-1.14.4.tar.xz 
# xzcat cairo-1.14.4.tar.xz |tar xfv
# cd cairo-1.14.4
# ./configure
# make
# make install
# ldconfig

# wget download.mono-project.com/sources/libgdiplus/libgdiplus-3.12.tar.gz
# tar zxfv libgdiplus-3.12.tar.gz
# cd libgdiplus-3.12
# ./configure
# make
# make install
# ldconfig

# wget download.mono-project.com/sources/mono/mono-4.2.1.102.tar.bz2
# tar jxfv mono-4.2.1.102.tar.bz2
# cd mono-4.2.1
# ./configure --with-libgdiplus=/usr/local/lib/libgdiplus.la
# make
# make install
Iseki Fumikazu への返信

Re: 自シムに接続できなくなってしまいましたorz

- Iseki Fumikazu の投稿

そうか dnf だから Fedora でしょうか?

dnf は使ったことはありませんが,dnf install libgdiplus で良いみたいです

 

書き忘れ:

>> mono のバージョンによっては,OpenSim がDLLの読み込みに失敗して起動しないことがあります

私の見たことのあるメッセージとは違いますので,この問題ではないでしょう.

Iseki Fumikazu への返信

Re: 自シムに接続できなくなってしまいましたorz

- 八崎 詠斗 の投稿

>そうか dnf だから Fedora でしょうか?

はい、Fedora23です。

 libgdiplusは既にインストール済ですが先程のエラーがでてしまっている状態です。

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig

もやってみましたが同じエラーで実行できませんでした。

 

ん〜原因がわからないですね・・・^^;

八崎 詠斗 への返信

Re: 自シムに接続できなくなってしまいましたorz

- 八崎 詠斗 の投稿

解決しました!

結局、monoのサイトにあったレポジトリを登録してパッケージをアップデートしたら動きました!
そして、自SIMへの移動も確認できました!

 

色々アドバイスを頂きありがとうございましたm(__)m

 

八崎 詠斗 への返信

Re: 自シムに接続できなくなってしまいましたorz

- Xpyoda Janus の投稿

原因は同じではないかもしれませんけど、私も、

> Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: libgdiplus.so

のようなエラーがでて OpenSimが立ち上がらなくなったことがありました。

http://xpyoda.blogspot.jp/2015/02/mono3100-2.html
http://xpyoda.blogspot.jp/2015/03/x11-toolkitslibgdiplus.html

このときは、giflibライブラリのインターフェイスがかわってるけど、libgdiplusのソースコードが未修正だったのが原因だったようで、しばらく待ってると、パッチがでて、修正され、うごくようになりました。

libgdiplusと、それがつかうライブラリとの不整合が原因だった、というのも考えられます。

八崎 詠斗 への返信

Re: 自シムに接続できなくなってしまいましたorz

- Iseki Fumikazu の投稿

急ぎでなければ,こちらでも Fedora を入れて検証してみます.

OpenSim はJOGのものですよね.