このところOSGrid配布のOpenSim-0.9.1系バイナリを主にスタンドアロンHGの環境でテストしています。
最近の 2017-04-21、2017-05-12、2017-05-28 の3つについてテストしました。3つの不具合に遭遇しています。
1.外部のHGアバタが入れない。
この問題は 2017-05-12にだけ起こり、2017-05-28では解消されています。
2. 一部の特定オブジェクトが装着できない。
一部特定の髪が装着できません。地面にRezすると正常に表示されます。
上記3つのバージョンすべてで起こります。OpenSimプロジェクト公式配布の 0.8.2.1 では正常に装着できます。JOG配布の 0.9.0Devでも同じ問題は起こります。しかし JOG Center Sim では正常に装着できます。
3. 他HGから来訪のアバタがスタンドアロンHG上の、元はフルパーだったオブジェクトをコピーして持ち帰ったときに、その中身のパーミッションがコピー改変譲渡すべて不可に変化する。
前項2と同様に OSG配布の0.9.1系3つ、JOG配布の 0.9.0Devでも起こります。 0.8.2.1 では問題なく、フルパーはフルパーのままです。
最近のOSGrid配布のOpenSim-0.9.1系バイナリには上記2と3の問題が深刻です。とうぶん、うちでは OpenSimプロジェクト公式配布の 0.8.2.1 を継続使用します。
私のところの自前グリッドも、OSGrid配布最新の 2017-05-28付けのものにしました。
これ以前のものだと、コンソールから 'shutdown' or 'quit' しても、以下のメッセージを出力したまま、だんまりになってました(しかたがないので、PIDをしらべてkillしてた...)。
[SHUTDOWN]: Shutdown processing on main thread complete. Exiting...
具体的には、ソースコードOpenSim/Framework/Servers/BaseOpenSimServer.cs の ShutdownSpecific()ってメソッドの中で、Environment.Exit(0);をコールしたまま、プログラムが終了もせずだんまりになってました (Environment.Exit(0)は、最終的には exit()システムコールを呼び出すはずなんだけど...。デバッグ用ログ吐くようにして、確認はしてみた。FreeBSDでうごくまともなデバッガー欲しい...)。
ですが、2017-05-28のソースコードは、ShutdownSpecific() の中身が変わってて、スレッドの後始末をしてから、終了するようになってました。
というわけで、2017-05-28 版では、いろいろな問題が解決してて、とりあえずよかったです。
ちなみに、monoのバージョンは、4.8.1です。FreeBSDのportsの場合、3.xは脆弱性があるとかで、他のライブラリとかの整合性の不具合を無視しないともうビルドできなくなってしまっています。最初は、これが正常に終了しない原因なのかなーっておもってたけど、ちがうようで、よかった...。
% mono --version
Mono JIT compiler version 4.8.1 (4.8.1.0 Mon May 15 16:34:30 UTC 2017)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notification: kqueue
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen
JOG配布の OpenSim-0.9.0DevからOSG配布の OpenSimバイナリにバージョンアップするスクリプトを公開します。
旧のOpenSimがあるフォルダを例えば /opt/OpenSim/0.9.0Dev-jog とします。
OSG用のフォルダ /opt/opensim.opensim-0.9.1-06-jog を作り、そこで OSGの opensim*.zipを展開します。
次のスクリプトをを実行します。SRCとDESTは環境に合わせてください。
#!/bin/sh
SRC=/opt/opensim/OpenSim-0.9.0Dev-jog
DEST=/opt/opensim/opensim-0.9.1-06-jog
[ -d $DEST/bin ] || exit 1
cp -vf $SRC/bin/*.db $SRC/bin/OpenSim.ini $SRC/bin/OpenSim.exe.config $DEST/bin
cp -vf $SRC/bin/Regions/*.ini $DEST/bin/Regions
cp -vf $SRC/bin/config-include/*Common.ini $DEST/bin/config-include
# JOG stuff
cp -vf $SRC/bin/{Messaging.NSLMuteList.dll,OpenSimProfile.Modules.dll,OpenSimSearch.Modules.dll} $DEST/bin
cp -vf $SRC/bin/config-include/{FlotsamCache.ini,GridCommon.ini,GridHypergrid.ini} $DEST/bin/config-include
echo "Files copied."
スクリプトありがとうございます。
# JOG stuffのところは参考になります。この、JOG stuffのところを自前でコンパイルしてみようとしたりします。設定ファイルも、OpenSim-0.9.0Devから、丸コピーすればいけるんだろうなぁと思ってます。先週からあまり時間がとれずに、まだ、ちゃんと試せてない...www。
# 以下は、ほとんど独り言。
Firestormで、自分のプロフィールを表示してみると、一瞬自分のプロフィール画像が表示されたかとおもうと、すぐに表示されなくなります。ひょっとしたら、OSGridのプロフィールモジュールの設定も残ってて、悪さをしてるのかもしれません。まあ、時間取ってみてみないと...です。
JOG Stuff のところで、ひとつ抜けていました。OpenSim.Modules.Currency.dll です。
このモジュールは本来(JOG独自の)マネーサーバと通信するためのもので、マネーサーバに接続しないならば必要ありません。また opensim-0.8用に作られたものが 0.9系では不都合あったために、外しておりました。しかし JOG配布の 0.9.0Dev に同梱されているものは opensim-0.9系でちゃんと動作します。
マネーサーバに接続しないSIMで、このモジュールがあると無いとでどこが違うかというと、ビューアーの所持金の表示だけです。マネーサーバに接続している Dejimaと、接続しない Shinobar Annexとを往還する場合で説明します。
Dejimaに(JOGアバタでもHGアバタでも同じ)アバタが入ると何がしかの所持金が表示され、これで Dejimaで買い物ができます。マネーサーバに接続しない Shinobar Annexなどに移動すると、所持金は 0 となるはずです。ここで Shinobar Annexに OpenSim.Modules.Currency.dll があると、ビューアーの所持金表示も 0となりますが、このモジュールが無いとビューアーの所持金表示は Dejimaのときの表示から変化しません。ビューアーの表示では何がしかの所持金があることになります。しかしもし Shinobar Annexに JP1 の商品があったとして、それを購入することはできません。JP0 の商品は購入できます。つまりビューアーの表示に所持金があるように見えても、じっさいは所持金0とおなじです。
マネーサーバに接続しないSIMで、このモジュールがあると無いとで、商品の購入に関しては同じです。このモジュールがあっても無くても、実用上問題はありませんが、ビューアーの所持金表示に関してしてはこのモジュールを含めるほうがきれいです。
さきのスクリプトの JOG Stuff に関する部分の修正を以下に示します。すでに以前のスクリプトで移行済みの方は、手動で JOG配布の 0.9.0Devの中から bin/OpenSim.Modules.Currency.dll を見付け、新しい OSGの bin ディレクトリの中にコピーしてください。
# JOG stuff
cp -vf $SRC/bin/{Messaging.NSLMuteList.dll,OpenSimProfile.Modules.dll,OpenSimSearch.Modules.dll,OpenSim.Modules.Currency.dll} $DEST/bin
cp -vf $SRC/bin/config-include/{FlotsamCache.ini,GridCommon.ini,GridHypergrid.ini} $DEST/bin/config-include
いつも参考にさせていただいてありがとうございます。しのさんのスクリプトを使用させていただきJOGバイナリからOSG用のOsgrid Opensimlator 0.9.1.dev 07-23-2017を使用してSIMを立ち上げました。僕の不具合はアバターがアニメーションの無効状態(ダンスやAOが無効)だと足がピクピクと動き続けることです。OSはUbuntu16.04 LTS 32bit SERVERでMonoのヴァージョンは4.4です。5.1.1はエラーでログが真っ赤になり止まってしまうので戻しました。僕のSIM固有のバグなのでしょうかねえ?DBはSQL Liteのまま使っています。
JOGのHG接続をする際に、JOG配布の 0.9.0Devに含まれるOpenSim.Modules.Currency.dllをコピーしてロードさせると途中でハングアップして立ち上がりません。
Messaging.NSLMuteList.dll
OpenSimProfile.Modules.dll
OpenSimSearch.Modules.dll
の3つは読み込み可能です。
なのでOpenSim.Modules.Currency.dllは外しています。
前記事で公開したスクリプトはシェルのバージョンにより動作しないことがあります。修正したものをアップしました。
最近のバージョンの mono でJOG配布の OpenSim-0.9.0Dev バイナリが動かないということです。スクリプトにより opensim本家が公式配布の opensim-0.9.0.1 Release を使ってJOGに接続することができます。