WhiteBrowser on Windows 8 Release Preview

■ 現象の確認

 某所にWindows8上でWhiteBrowserを動作させると、かなり酷い事になるという書き込みがあったので試してみる。結果として、以下の問題を確認できた。

(1) C++ Runtime Error が多発
 大量のファイルを一気に登録すると発生しやすい。少量でも発生する事がある。

(2) ファイルの読み仮名が正常にセットされない
 これはかなり後で気づいた事だが、読み仮名が正常にセットされない。文字化けの類ではなく、ランダムなバイナリのように見える。

■ 対策として試したこと

 まず(1)の現象について、仕様しているライブラリ(SQLite等)を更新したり、シングルCPUで動作させたりしてみた。前者は本体の更新ができないので苦肉の策として、後者はスレッドセーフではない関数を同時にアクセスしている可能性を疑ったためである。調査の結果として、以下の事が判明した。

(a) sqlite3.dll,bregexp.dllを更新し、シングルCPU動作をさせると安定する
 完全に発生しなくなる訳ではなく、頻度が下った感じを受ける。問題が解決したのではなく、運良くエラーにならなくなっただけとも思える。

(b) sinku.exe を削除すると(1)の問題は発生しない
 ただし、メディア情報は書き込まれない。何の解決にもならないが、原因箇所のヒントにはなった。そして同時に(2)の問題に気づいた。

■ 原因の推測

 上記(a)(b)より、サムネイル作成・登録ではなく、ファイル・メディア情報の登録で問題が発生している事が想像できる。また、(2)の読み仮名取得に失敗している事から、(2)の結果メモリ・ポインタの破壊が発生している可能性が高い。要するに(2)を解決できれば、(1)の問題も解決できるのではないかと推測する。

■ 推測に対する検証

 最終的な検証が完了していないが、どうやら推測は正しかったようだ。Windows7からMSIME関連モジュールを移植してみたところ、(2)の問題が解決し、(1)の現象も発生しなくたった。ただし、検証途中で色々と場当たり的に種々の事をしているので、Windowsの再セットアップ後に再検証が必要だろう。また、これでは回避方法としても不十分なので、もう少し詳細を調べてみなければならないと思う。

この記事へのコメント

この記事へのトラックバック