チケット #33037

Voice Popper などが Windows 8/8.1 環境でクラッシュする

登録: 2014-01-27 09:55 最終更新: 2014-12-23 18:45

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
直さない
ファイル:
なし

詳細

Windows 8.1 64ビット環境で NVDA 2013.3jp を実行中に、公開されているボイスポッパーの最新版であるバージョン Voice Popper 3.12 を起動して、メニューで上下矢印キーを押して項目移動していると、ボイスポッパーがクラッシュする現象を確認できました。

NVDA を実行していない場合はこの現象はおこりません。

また Windows 32ビット、Windows 7 以前のバージョンでも起こらないようです。

開発版をソースから実行すると NVDA のプロセス通信関連のモジュールがデバッガに引っかかるようなので、詳細を調査中です。

http://www.geocities.jp/katsuragi_nori/VoicePopper/

チケットの履歴 (18 件中 3 件表示)

2014-01-27 09:55 更新者: nishimoto
  • 新しいチケット "Voice Popper 3.12 が Windwows 8.1 64ビット環境でクラッシュする" が作成されました
2014-01-27 09:56 更新者: nishimoto
  • 詳細が更新されました
  • 概要が更新されました
2014-01-27 16:07 更新者: nishimoto
コメント

NVDA のデバッグビルド・リモートデバッグ環境で作業をしているのですが、 どうやら最近の NVDA のソースそのものが Windows 8.1 でデバッガと相性が悪く、 デバッガから実行すると高負荷のまま止まってしまい NVDA の初期化が終わりません。

いろいろ確認していて気付いたのですが、 Windows 8.1 64ビット+ Microsoft Windows ナレーターが動いている場合にも、 VoicePopper 3.12 が頻繁にクラッシュするようです。

引き続き調べてみます。

2014-01-28 11:41 更新者: nishimoto
  • コンポーネント(未割り当て) から 外部ツール に更新されました
  • チケットの種類バグ から サポートリクエスト に更新されました
コメント

NVDA の隠し設定オプション UIA セクションで UIA を無効にするとこのクラッシュは回避できること、NVDA やナレーターが起動していなくても Windows SDK の Inspect で UI Automation の情報を調べようとするだけでクラッシュすること、などの状況から、本件はアプリケーション側の UI Automation 対応に起因する問題と思われます。

badUIAWindowClassNames による work around を試みましたが、有効な対策が見つかっていません。

Window よりも手前の段階で UIA を無効化する必要がありそうです。

チケットの種類を「サポートリクエスト」に、コンポーネントを「外部ツール」に変更します。

2014-02-08 15:17 更新者: nishimoto
コメント

どうやら本家の最近の next ブランチでこの問題が解決しているようです。

環境:Voice Popper 3.12 + Windows 8.1 64ビット

  • nvda_snapshot_master-9895,73ad075 : クラッシュする
  • nvda_snapshot_next-10322,14f576f : クラッシュしない

ただ、本家版はその他の不具合があり実用的でないため、jpbranch に本家の next ブランチをマージしたテスト版を作りました。

日本語テスト版(アルファ系) jpalpha140208

https://dl.dropboxusercontent.com/u/62564469/nvda_jpalpha140208.exe

本家 next ブランチは開発中の作業が多いので、jpbeta 系(本家 master からのマージ)と比べると不安定です。

このスナップショットで VoicePopper の不具合がなさそうであれば、日本語チームとしては本件について独自の作業をせず、本家 master が安定するのを待つことにします。

もし本家 2014.1 で解決しなかったら、必要な変更を本家からチェリーピックして 2014.1jp で対応することも検討します。

なお、具体的に本家のどのブランチ作業が関係しているのか、まだ絞り込めていません。

3831 の効果を期待していたのですが、t3831 だけをマージしたバージョンでは解決しませんでした。

Don't handle most events from background processes by default http://community.nvda-project.org/ticket/3831

2014-02-18 23:40 更新者: nishimoto
コメント

テスト版 jpalpha140218

https://dl.dropboxusercontent.com/u/62564469/nvda_jpalpha140218.exe

jpalpha140208 から jpbranch だけをマージしており、本家 next の更新はマージしていません。 この jpalpha 系では更新後も VoicePopper はクラッシュしません。

あいかわらず jpbeta系では本チケットの現象が解決していませんが、そろそろ差分が絞り込めてきました。

git diff jpbeta140218..jpalpha140218

本家のチケットで関係がありそうなものを挙げておきます:

http://community.nvda-project.org/ticket/3800

http://community.nvda-project.org/ticket/3801

http://community.nvda-project.org/ticket/3825

http://community.nvda-project.org/ticket/3831

2014-02-23 13:47 更新者: nishimoto
コメント

jp2014.1 から ti33037v2 ブランチを作りました。

下記で 3800 をマージすると VoicePopper がフリーズしないようです。

git pull --no-commit origin t3800

この状態で改めてコミットして、下記のとおり push しました:

To ssh://git@bitbucket.org/nvdajp/nvdajp.git
 * [new branch]      ti33037v2 -> ti33037v2

引き続き検証します。

2014-02-23 14:08 更新者: nishimoto
コメント

日本語テスト版 jpbeta140223 https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140223.exe

本家のチケット 3800 によると、この本家の作業はいくつか副作用が懸念されており、2014.1 には間に合わなさそうな感じです。

日本語版が独自にこの t3800 をマージしてよいか、判断が難しいところです。

また、このテスト版は Voice Popper 3.12 で使うと、Windows 8.1 64ビット環境でクラッシュはしませんが、メニュー項目を読み上げたり読み上げなかったりしています。

2014-02-26 12:15 更新者: nishimoto
コメント

以下の理由から、このチケットのマイルストーンを 2014.1jp からはずすことを検討しています。

  • 本家版 2014.1 にはこの修正は間に合わない見込みであり、本家で未完成の作業をマージすることの副作用が懸念される
  • 本件以外にも #31358 #33260 などの課題が指摘されている
  • 本質的には NVDA のバグではない(ナレーター環境でも同様にクラッシュする)
  • 暫定的には Windows 8/8.1 の 64 ビット版を使わないという回避方法がある

一方で、本家 t3800 以外の対策ももうすこし模索したいと思います。

2014-03-05 14:23 更新者: nishimoto
  • チケット完了時刻2014-03-05 14:23 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました
コメント

本件の対策を含むブランチ jpnext を jp2014.1 にマージします。

ただし jpbranch (本家 master に対応)にはマージせず、2014.2jp に向けて本家の t3800 関連作業を見守ることにします。

本家のチケット 3800 によると、現状の実装はすぐには不具合はないが、将来新しい作業(IE の UIA 対応)をするとき支障が出る可能性がある、とのことです。

2014-03-10 18:57 更新者: nishimoto
コメント

本家チケット 3800 に関する追加作業が公開されたので、 git://git.nvaccess.org/nvda から abandoned-t3800 ブランチをマージしました。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git
   75e727b..4a3ddca  ti33037v2 -> ti33037v2

ti33037v2 を 2014.1jp に採用するかどうか、もう少し検討します。

本家のコミットの詳細:

http://community.nvda-project.org/changeset/9961733cb3a89df53674e13fdeca6fb11837f12b

2014-03-10 19:04 更新者: nishimoto
コメント

本家 abandoned-t3800 をマージすると VoicePopper 3.12 が Windows 8.1 x64 でクラッシュする現象が再発しました。

2014-03-13 11:18 更新者: nishimoto
  • マイルストーン2014.1jp (完了済み) から 2014.2jp (完了済み) に更新されました
  • 状況完了 から オープン に更新されました
  • 解決法修正済み から 受領 に更新されました
コメント

テスト用電子署名(selfcert)をして動作確認をしたところ、Windows 8.1 のスタート画面の読み上げで不具合が見つかりました。

日本語版 2013.3jp および本家版 2014.1 では問題がありません。

本家 t3800 の変更を取り除いたテスト版を作ったところ、以前のように矢印キーでスタート画面のタイルを読み上げるようになりました。

本件に関して t3800 をマージする手法での修正はリスクが高いようなので、いったん取り消します。

本件は 2014.2jp 以降に向けた検討課題とさせてください。

[jp2014.1 3d1ebac] reverted t3800 regarding ti33037
 1 file changed, 66 deletions(-)
2014-04-01 22:17 更新者: nishimoto
  • 概要が更新されました
コメント

概要を「Voice Popper 3.12 が Windows 8.1 64ビット環境でクラッシュする」から「Voice Popper などが Windows 8/8.1 環境でクラッシュする」に変更します。

Windows 8 の 32bit版でもクラッシュすることがあるそうです。

2014-04-04 00:02 更新者: nishimoto
コメント

本家が t3800 対応を再実装して 2014.2 に向けた next ブランチにマージしました。

本件への影響を再評価したいと思います。

http://community.nvda-project.org/ticket/3800#comment:9

2014-04-18 19:30 更新者: nishimoto
コメント

本家が t3800 の新しい実装を破棄してチケット3800を wontfix にしました。

http://community.nvda-project.org/ticket/3800#comment:11

このチケットは本家の t3800 に期待していたので、いったんマイルストーン設定を解除します。

なお、当該ソフトウェアの最新版は NVDA の UI Automation を無効にすれば Windows 8 に対応するとしてリリースされました。

2014-04-30 12:47 更新者: nishimoto
2014-12-23 18:45 更新者: nishimoto
  • チケット完了時刻2014-12-23 18:45 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法受領 から 直さない に更新されました
コメント

当該ソフトウェアは NVDA の UI Automation を無効にすれば Windows 8 に対応するとしてリリースされたので、 このチケットは「状態:直さない」としてクローズします。

おそらくは VB6 ランタイムと UIA の相性の問題で、 アプリケーション開発者が新しい開発環境に移行することが根本的な解決と思われます。

添付ファイルリスト

添付ファイルはありません

編集

このチケットにコメントを追加するには、ログインが必要です » ログインする