荷物袋のページ送りをしていたら入力を受け付けなくなりゲームが続行不可能になる
https://bitbucket.org/k4nagatsuki/cardwirthpy-reboot/issues/1110/-------------------------------
の続きです。
ご案内いただいたとおりcardwirthpy_20240212_x64.zipを5.2に上書きしてプレイしていたら以下のような経緯でエラーが発生しました。
クリックかマウスホイールで荷物袋のページ送りをしていたら、ページを切り替えても表示されているカードの種類が切り替わらない。
その後荷物袋ウィンドウを閉じたところ、ゲームの操作が不能になりゲーム続行不可能になる。
CWを終了するとエラーログが生成された。
生成されたエラーログを添付します。(コメントでファイルを添付できるか分からなかったのと、別カテゴリのエラーかもしれないので一応新しく課題を作成しました)
カードクリックで操作不能になるエラーと同様にPy5.2で以前からこういう現象が起きていた気もしますが、記憶が曖昧なので何とも言えないところです。
制作中の自作シナリオ内で荷物袋を開いているうちに発生したエラーですが、リューンのようなシンプルな店シナリオなのでシナリオ依存のバグではないかもしれません。とりあえずエラーログだけでもお送りします。
Comments (8)
-
reporter -
repo owner - changed status to open
ご確認ありがとうございます。
前回の対応はやはり効果が無かったようです。また、どうも起きている現象が通常起こりえないタイプのようで、CWPyの環境自体が壊れているような印象を受けます。32-bit版と64-bit版のファイルが混ざっていたりするのでしょうか?
次の手順で比較的真っ新な5.2環境に戻した方がいいかもしれません(以下の作業を行ってもシナリオ・宿・設定は削除されませんが、心配ならバックアップを取ってください)。
CardWirthPy\lib
とCardWirthPy\x64
フォルダを削除する- 5.2を再ダウンロードし、フォルダごと上書きする
エラーログはファイルで読んでも課題上に張りつけても読める事は同じなので、都合のよい方を選択していただければと思います。
-
reporter 返信ありがとうございます。
32-bit版と64-bit版を混在させた記憶はないのですが、しばらく前のことなので曖昧です。とにかく指示いただいたとおりの手順で環境を再構築してみました。この状態でしばらくプレイしてみますね。
-
reporter 上記のとおりの環境でプレイしていたところまたエラーが発生したので報告です。
戦闘中に冒険者だったか敵キャストだったかを左クリック(右クリックだったかも)したら、操作を受け付けなくなりゲームが続行不能になりました。
自作シナリオのテスト中に発生したもので、他のシナリオでも発生するかは不明です。
エラーログは以下のとおりです。
Version : 5.2 (64-bit) / 2023-12-10 10:40:46 DateTime: 2024-02-19 21:52:12 Traceback (most recent call last): File ".\cw\frame.py", line 1092, in OnCHARAINFO File ".\cw\dialog\charainfo.py", line 565, in __init__ File ".\cw\dialog\charainfo.py", line 64, in __init__ File "C:\Program Files\Python38\lib\site-packages\wx\lib\agw\aui\auibook.py", line 3051, in __init__ File "C:\Program Files\Python38\lib\site-packages\wx\lib\agw\aui\auibook.py", line 3133, in InitNotebook File "C:\Program Files\Python38\lib\site-packages\wx\lib\agw\aui\tabart.py", line 156, in __init__ File "C:\Program Files\Python38\lib\site-packages\wx\lib\agw\aui\aui_utilities.py", line 159, in BitmapFromBits wx._core.wxAssertionError: C++ assertion ""IsOk()"" failed at ..\..\src\common\image.cpp(1717) in wxImage::Replace(): invalid image DateTime: 2024-02-19 21:52:23 Traceback (most recent call last): File ".\cw\frame.py", line 550, in OnEXECFUNC File ".\cw\frame.py", line 1512, in func File ".\cw\frame.py", line 1543, in _put_dlgscreenshots wx._core.wxAssertionError: C++ assertion ""Assert failure"" failed at ..\..\src\msw\dcmemory.cpp(131) in wxMemoryDCImpl::DoSelect(): Couldn't select a bitmap into wxMemoryDC
また、エラーログが生成されたというダイアログが出た後、普段は見たことのないダイアログが出ました(下記添付ファイルのとおり)。とりあえずはいを押しておきました。
-
repo owner ご報告ありがとうございます。ダイアログが出るなど結果は異なりますが、エラーが起きている箇所と内容は最初のご報告と同じようです。
不思議なのは、これはビットマップイメージが不正な状態にあるというエラーなのですが、当の不正ビットマップは当該処理の直前にメモリ上に生成されたものであり、極度のメモリ不足やOSのリソース不足などの理由が無ければ不正になり得ず、今時のマシンでそのような状況が発生する事はまず考えられないという事です。また発生頻度の割に同様の報告を受けた事が無く、他の環境では起こっていないように思われます。その上エラー発生個所はCWPyより遥かに広く使われるライブラリの内部です。
この手の不可解なエラーで疑い得る、というか過去実際に原因となったのは、Windowsのバージョン違いによるAPIの不具合(Win10の特定バージョンでだけ描画文字列の幅がランダムに変動したという事例あり)、それとアンチウィルスソフトウェアの介入による障害です。もし標準以外のアンチウィルスソフトを使用しているのであれば、試しにCWPy全体を検知対象から除外してみていただけないでしょうか。
-
reporter セキュリティソフトは入れた記憶がなく、設定→更新とセキュリティ→Windowsセキュリティで確認してみましたがサードパーティ製アプリは入っていないようでした。「プログラムと機能」を確認してもセキュリティソフトは見当たらず。
入っているのは「Windows Defender ファイアウォール」のみだと思います。
度々対応していただいておりますが、私の環境でのみ起こる現象であれば仕方なさそうですね。
本家とliteも5.2にした途端頻繁に落ちた、というツイートを1件見かけたことはありますが、複数件は確認していないので環境依存なのかもしれません。それともエラーが多数起きても報告されないだけなのか……自分は他のPyユーザとあまり交流がある方ではないので情報収集できず何とも言えませんが。 -
repo owner Windows Defenderが原因ならもっと多くの環境で問題が起きそうなので、考えづらいですね。Windowsの細かいバージョンを訊ねたところでできる事は無いでしょうし、そうなると申し訳ないのですがちょっと手詰まりです。
他に同じようなエラーが発生している方はいらっしゃらないでしょうか。
-
reporter とりあえずこの環境のまま、経過を見守りつつプレイしていこうと思います。なにか進展があったらまた報告します。
度々対応いただきありがとうございました。
- Log in to comment
その後、新たにプレイを続けているとシナリオ中に冒険者のカードを右クリックしたら操作を受け付けなくなりゲームが続行不可能になりました。
前述した自作シナリオのテスト中でした。
荷物袋のエラーとは微妙に違いますが同根のバグかもしれないので報告しておきます。
エラーごとに課題を分ければいいのか、エラーログは長文になった場合新規に課題を作成して添付ファイルにするべきなのか、同じような不具合でもとりあえずエラーログが出たら報告する意義があるのか、その辺りの作法が分かっていないので無駄に煩雑になっていたらすみません。
これもとりあえずエラーログだけでも貼っておきます。