フリーズ調査 (2010/09/28)

見出し

NiciousMUGENBGM使用時にフリーズする不具合について調査してみた。 重いキャラを使うとよりフリーズを起こしやすいとのことであったので、メモリ不足を疑ってみた。 MUGENでは同じキャラを再度使う際、何度もハードディスクからガリガリ読まなくて良いように、 何人分かのデータを保持しておく設定がある。それがMUGEN.cfgのPlayerCacheである。 (ちなみにPreCacheを1にしておかないといけないが、これらの設定は最初から有効になっている筈だ)

で、えー……そのPlayerCacheの存在によって、キャラの読み込みを繰り返すうちに システムのメモリを圧迫したのではないかと思ったニシャスは、とりあえず メモリの少ない条件でMUGENを動かしてみることにした。

メモリを食うプログラム

無駄にメモリを食うプログラムを自作し、MUGENを起動する。 さてどうなるか……

メモリ確保してる図

とりあえずWatchモードで何回か対戦を繰り返すと、こんなエラーが出てきて終了した。

メモリが足りません

うーん、要するにメモリ不足でsffが読めませんでしたよ、と。 まあ考えてみれば他のプラグインでもメモリ不足の場合はどう足掻いてもエラー出ますよねえ……(汗) というわけで単純なメモリ不足の線はなさそうであります。 メモリ占有量をMUGENでエラーが出ない程度に抑えて、アーケードモードで遊んでみたものの、特に不具合は起きず。 次にキャラ数が200かそれ以上くらいある方で(普段は使ってません)似たようなことをして遊んでみた。 結果は、起動から終了まで問題なしだった。

DirectShowフィルタの問題以外に考えられるのはどこかのコードでメモリのオーバーフローを起こしているか、MUGENのウィンドウを頑張って取得している部分に問題があるか。 そのうちテスト専用のプラグインでも作ってみますかねえ……

以下、一応こちらの環境を提示してみる。 ニシャスはハードにはあんまり詳しくないので、お許しを。

PC : NEC PC-VL500
OS : Microsoft Windows XP SP1
CPU : AMD Duron 1.10GHz
HDD : 80GB
メモリ : 1GB(PC-133 512MB x 2)
グラフィックボード:購入当時のもの(チップセット内蔵?)
サウンドカード:不使用?(購入当時から変更無し)
※ネット接続無し、セキュリティソフト不使用

mp3使用時のDirectShowフィルタ:
MPEG-1 Stream Splitter

MPEG Layer-3 Decoder(またはffdshow Audio Decoder)

Default DirectSound Device

■主に使用する方のMUGEN環境■
MUGEN : No limit WinMUGEN Patch(MUGEN-Plusではない)
音楽 : 現在はmp3とogx(ogg vorbis)との混合
mp3 : 殆ど128kbps ステレオ ID3v1タグ
ogx : 未調査
キャラ数:10で固定

■サブ環境■
MUGEN : MUGEN-Plus
音楽 : mp3, mid
キャラ数 : 200~300程度