2013年8月29日木曜日

Mono 3.2.1で、OpenSimを再構築

FreeBSDのPortsでMono 3.2.1にアップデイトできました。
% mono --version
Mono JIT compiler version 3.2.1 (tarball Thu Aug 29 14:09:52 JST 2013)
Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notification:  kqueue
        Architecture:  x86
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            sgen

この新しいMonoでOpenSimを再構築してみることにします。 ビルドする前に、以前作成しているバイナリーをクリーンにしておきます。
% xbuild /target:clean
...

% xbuild
...

ビルドできたOpenSimを実行してみましたが、特に問題なくうごいているようです。しばらく様子を見ることにします。

2013年8月26日月曜日

Mono 3.2.1 がでてた

FreeBSDの lang/mono のPortsが 3.2.1にバージョンが上がってました。Subversionのログ見たら、わりとこまめにバグフィックスされてたみたいだけど、バージョンアップするのをサボってましたw。

しかし、ちゃんとMonoのPortsがメンテナンスされているのは嬉しいですね。 「Too many root sets」というエラーがでなくなればいいな。FreeBSDも8.4にあげてる事だし、Portsもぼちぼち最新に更新しないとなぁ...。

ちなみに、今は Mono 3.0.3 と opensim-c358d5d で、25日間落ちないで安定して動いています。これだけ長く動かし続けてるのは、過去あまりなかったかもしれません (まあ、連続運転するよりOpenSimのバージョンが上るスピードの方が早いからかもしれませんが w)。

2013年3月13日水曜日

"Too many root sets" というエラーが出た

今日、運用しているOpenSimをみたら、「Too many root sets」というエラーを出して、コア吐いて死んでました。
...
Region (root) # Too many root sets

Stacktrace:

Abort trap (core dumped)
検索してみると、どうやら、Monoのバグのような雰囲気です。
Monoのバージョンと動かしている環境は次の通り。

・ Mono  3.0.3 (FreeBSDのportsによるインストール)。
・ FreeBSD 8.3-RELEASE-p5

Mono 3.0.3になってからなのか、OpenSimのバージョンをあげてからなのかはわかりませんが、最近、たまーに発生します。

なんか、対処法あるのかな?

2013年3月4日月曜日

今度はOSgrid OpenSimulator 0.7.6.dev.e70c71aがでた

昨日、アップデイトしたと思ったら、もう次の新しいバージョンがでてました(X_X;)。

Update – Release changes for OSgrid opensimulator.0.7.6.dev.e70c71a

まあ、開発が停滞するよりはいいことだとは思いますが...。

こんどのバージョンは、OpenSim.ini と GridCommon.ini に変更があります。詳しくは上記URLの記事を見てください。

2013年3月3日日曜日

OSgrid OpenSimulator v0.7.6.2642129 にアップデイト

OSgrid OpenSimulator v0.7.6.2642129 にアップデイトしました。2/6に v0.7.6.3646361 にバージョンが上がったばかりだったのに、2/18には、このバージョンに上がりました。時間がとれなかったので放置してましたが、本日アップデイト掛けました。最近、 頻繁にバージョンが上がります。

バージョンあげる時、データベースにSQLiteを使ってる場合は、以前のバージョンで使っていた OpenSim.db をコピーしてくるだけでOKです。OSGridに(Hyperグリッドとかではなく)リージョンサーバーとして接続しているのならば、OpenSim.dbのみが必要なDBファイルになります。
データベースにMySQL をつかっているのならば、GridCommon.ini の設定を以前と同じようするだけでいいでしょう。
まあ、念のため、「save oar コマンド」 でバックアップを取っていたほうがいいとは思います。

あと、今回、bin/assetcache にあるアセットキャッシュデータ も以前のバージョンの物からコピーするようにしました。
% cp -Rp 以前のバージョン/bin/assetcache .
私ところだと、4つのリージョンで256MBのサイズになってましたので、ここが空っぽだと、OSGridのアセットサーバーにアクセスが集中するので、立ち上がりも遅いし、決して潤沢とはいえないOSGridのサーバー郡に無用な負荷を掛けてしまうことにもなるんではないかと思います。


正常にアップデイトし、OpenSim.exeが立ち上がったら、OpenSimのコンソールコマンドで、「fcache assets」 を実行しとくと、リージョン上にあるオブジェクトがキャッシュ存在するか確認が行われるんじゃないかと思います。効果あるのかどうかはわからないけど、まあ、気休め(^_^;)。


2013年2月3日日曜日

monoのバージョンを 3.0.3に上げました。

FreeBSDを8.2 --> 8.3へあげたついでに、monoのバージョンを3.0.3にあげてみました。Portsで正式に、3.0.3がサポートされています。これで少しはLinuxと同じレベルに近づけたかな?

リリースノート
http://www.mono-project.com/Release_Notes_Mono_3.0.3
 
OSGridのOpenSimのバージョンもあげちゃったし、 メモリリークの量が減ったかどうかは、よくわかりません。まあ、特に問題なく、それなりに安定して動いてるようにも見えます。

nantのPortsは、BROKENなままなんで、OpenSimのコンパイルには、xbuildを使いました。

FreeBSDの方も、CVSが廃止されてSubVersionに移行するとか、いろいろと状況がかわってるので、いろいろとまとめをしたほうがいいかもしれないなぁ...。

2012年12月4日火曜日

CTRL-CでOpenSimが落ちないようにする

OpenSimを端末ウィンドウでうごかしてる場合、CTRL-Cを押すと中断されて落ちてしまいます。これはWindowsでもUNIXでも同じです。UNIXの場合は、端末でCTRL-Cを押すとSIGINTというシグナルが発生し、その端末上で動いているプログラムを中断させます(デフォルトの動作の場合)。

私は、WindowsマシンでViewerを動かしながら、OpenSimが動いているサーバーにTeraTermで接続してOpenSimのコンソールを操作しています。CTRL-CはWindowsでは、Copy&PasteのCopyのショートカットキーになってますので、Windowsのノリで、sshの端末画面の上で間違えてCTRL-Cを押してしまうことがよくあります。また、UNIXのShellのコマンドラインでは入力途中のコマンドをCTRL-Cを押して中断・破棄するということもよくやります。

そういう手クセがついていると、OpenSimのコンソールでついついCTRL-Cを押して、誤ってOpenSimを落としてしまうことがあります。こないだも、OSGridの私のリージョンに人が来ていたにもかかわらず、CTRL-Cを押してしまったようです(手クセなんで、あんまり自覚がない。ごめんなさいwww)。

これを防ぐために、次のような「opensim_start.sh」というスクリプトでOpenSimを起動するようにすると、CTRL-Cを押しても大丈夫になります。
#!/bin/sh
stty intr undef
mono --debug OpenSim.exe
stty intr ^C
キモは、「stty intr undef」 というコマンドで、intr (SIGINT)を発生させる文字コードを未定義にしてからOpenSimを起動してます。これで、OpenSim起動中はCTRL-Cを押してもなにも起こりません。そして終了前にCTRL-Cに戻しています。sttyの詳細についてはオンラインマニュアルを見てください。

まあ、これで不用意にOpenSimを落としてしまうことが少なくなると思います(^_^;)。