クリック等の入力を受け付けなくなりゲームが続行不可能になるバグ

Issue #1110 open
1122 ct created an issue
Py5.2のバグ報告です。  
バグ報告用テンプレートを使って以下のとおり報告します。  

##【不具合の内容】 
クリック等の入力を受け付けなくなりゲームが続行不可能になる

##【不具合の再現方法】 
宿でカード置き場などのメニューカードをクリックしたり、宿で冒険者をクリックすると稀に発生する。
(特定のメニューカードで発生するかどうかが分かれるかは未確認。もしかしたらカード置き場クリックでは発生しなかったかもしれない)
宿内だけでなくシナリオ内でも冒険者をクリックなどで発生することがあったかもしれないがあまり覚えていない。

##【エラーログ】 ログがある場合は必須
宿でたしか冒険者をクリックしたら入力を受け付けなくなり、ゲームの続行が不可能になったのでCW本体のウィンドウを閉じてゲームを終了
その後CardWirthPy.exe.logが生成されたというダイアログが表示される
そのとき生成されたログを以下に貼る。

Version : 5.2 (64-bit) / 2023-12-10 10:40:46
DateTime: 2024-02-12 15:46:29
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 3048, in __init__
  File "C:\Program Files\Python38\lib\site-packages\wx\lib\agw\aui\framemanager.py", line 4190, in __init__
  File "C:\Program Files\Python38\lib\site-packages\wx\lib\agw\aui\tabart.py", line 144, 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

##【再現環境】 できるだけ

 * OS
 Windows 10 Home

 * メモリ
 16.0 GB

 * HDDかSSDか / 空き容量
 CドライブはSSD/空き容量20.4GB
 DドライブはHDD/空き容量36.2GB
 カードワースフォルダは確か全てDドライブ内

 * CardWirthPyのビルド情報
 CardWirthPy 5.2 (64-bit)
Build: 2023-12-10 10:40:46

 * その他環境について必要そうな事があれば

###【再現率】 余裕があれば

確実な再現方法は発見できず。カードクリックで稀に発生する。
稀なのだが、カードクリックする機会は非常に多いため結果としてはそれなりに頻発することになる。

###【調査のチェックリスト】 余裕があれば

####(1)シナリオのバグではないか?  

宿で発生した現象であり、なおかつ今までに何度も起きている現象なので、特定のシナリオプレイ後にのみ発生するということはないと思う。

 1. 1.50エンジンで同じ問題が発生しないか
確認していない。
 2. 問題の箇所をテストシナリオとして作成し、問題のシナリオ以外でも再現するか
確認していない。

####(2)初期状態のCardWirthPyで再現するか

未実施

####(3)最新のテスト版での再現するか?

最新のテスト版で発生している不具合。

####(4)数日前のテスト版での再現するか?

未実施

####(5)テストシナリオの添付

なし

####(6)テスト宿を作っても再現するか?

確認していない。

補足
Py5.2でのプレイではこういった症状は数時間のプレイに一度ぐらいの頻度で以前からたびたび発生しているのですが
頻発するので報告してみます(本当は毎回報告したほうがいいと思うのですが、すみません)。
以前自分が使っていたのはPy2.3で、そこから飛んでPy5.2に移行しました。
それまでの間のバージョンで同様の現象が発生するかは不明です。
Py2.3でこのような現象が発生していたかは覚えていません(発生していたとしても気になるほどの高頻度ではなかったはず)。

Enlightenmentスキンを使っていますがCathedralスキンでも発生した気がします。あまり覚えていません。
スキンで追加された機能以外のメニューカードをクリックしても発生した気がします。
スキン無しでのプレイはほとんどしていないのでスキン無しで不具合が再現するかはわかりません。

Comments (4)

  1. k4nagatsuki repo owner

    pull request #349

    ご報告ありがとうございます。エラーログを見る限り、ウィンドウを表示するのに使用しているwxPythonというライブラリの中でエラーが発生しているようです。しかし発生がランダムな事、コードを見る限り起こりえない箇所でエラーが起きている事、環境によっては起こらないらしき事から、どこかでメモリを破壊するような厄介な不具合が発生している可能性があります。

    wxPythonを更新すればよくなるかもしれないのですが、依存関係を考えると難しい所があり、根本的に対処するのは困難です。そこで、このエラーが発生した時に1秒置いてエラーの発生した処理をリトライするという処置を入れてみました。

    これで対症療法になるかは分からないのですが(いくらリトライしてもエラーが発生する状況が変わらない可能性がある)、テスト版をお試しください(Downloadsにあるcardwirthpy_20240212_x64.zipを5.2に上書き)。

  2. 1122 ct reporter

    ありがとうございます。しばらくプレイして挙動を見守ってみたいと思います。

  3. Log in to comment