シナリオに入る瞬間にエラーが出たり出なかったりする(CardWirthPy_4.3)

Issue #1035 new
firce created an issue

曖昧な表題で申し訳ないのですが、そのままの現象が起こります。
(CardWirthPy_4.3_with_CWXEditor_7.3_x64)
最新のテスト版では再現しないのでバージョン固有かもしれませんが、テスト版を使用していないプレイヤーが居ないとも限りませんので、ご報告です。

##【不具合の内容】 記載必須
シナリオを選択した瞬間、エラーが出る。
表示されるメッセージは
『シナリオの読み込みに失敗しました』
『処理中に内部エラーが発生したため、ゲームを停止しました。~内容を開発者までお知らせください。』

同時に、閉じてもプロセスが残り続けます(宿画面の音楽が流れ続ける。タスクキルで消える)。

##【不具合の再現方法】 分かっている場合は必須
起動直後の選択でも発生します。
シナリオに入る→出る→入る…を繰り返すといつか起こります。必ずではありません。
出る、はF9でもシナリオに備え付けた帰還ボタンでも差異は感じませんでした(どちらでも起こった)

##【エラーログ】 ログがある場合は必須
同じエラーばかりに見えるので、直近二件だけ載せます。ログは添付しています。


Version : 4.3 (64-bit) / 2020-04-12 13:36:33
DateTime: 2021-04-19 20:21:18
Traceback (most recent call last):
File ".\cw\thread.py", line 863, in run
File ".\cw\thread.py", line 915, in _run
File ".\cw\thread.py", line 926, in main_loop
File ".\cw\eventhandler.py", line 129, in run
File ".\cw\eventhandler.py", line 832, in executing_event
File ".\cw\thread.py", line 2426, in load_failure
File ".\cw\thread.py", line 2348, in set_yado
AttributeError: 'ScenarioData' object has no attribute 'backlog'


Version : 4.3 (64-bit) / 2020-04-12 13:36:33
DateTime: 2021-04-19 20:24:38
Traceback (most recent call last):
File ".\cw\thread.py", line 863, in run
File ".\cw\thread.py", line 915, in _run
File ".\cw\thread.py", line 926, in main_loop
File ".\cw\eventhandler.py", line 129, in run
File ".\cw\eventhandler.py", line 832, in executing_event
File ".\cw\thread.py", line 2426, in load_failure
File ".\cw\thread.py", line 2348, in set_yado
AttributeError: 'ScenarioData' object has no attribute 'backlog'

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

  • OS Win10 64bit Home
  • メモリ 16G
  • HDDか、SSDか / 空き容量 HDD/3.63TB
  • CardWirthPyのビルド情報
     CardWirthPy_4.3_with_CWXEditor_7.3_x64
  • その他環境について必要そうな事があれば
    XEditorで該当シナリオを開いているか否かは関係ない。

###【再現率】 余裕があれば
5回やれば1回は発生する(体感。連続のこともある)

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

  1. 1.50エンジンで同じ問題が発生しないか
    →再現しない。(試行回数20回)
  2. 問題の箇所をテストシナリオとして作成し、問題のシナリオ以外でも再現するか
    →何が問題か不明なのでやっていない

※交易都市リューンでも発生。
リューンではエラーメッセージもなく落ちる現象も確認。

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

未実施

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

実施/再現しない。(試行回数20回)
(CardWirthPy_5.0a3_x64 + cardwirthpy_20210417_x64 の状態)

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

未実施

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

なし
交易都市リューンでも発生。

####(6)テスト宿を作っても再現するか?
あり/4回目で発生。再DL、ブラウザを変えてのDLも試したが再現する。
(CardWirthPy_4.3_with_CWXEditor_7.3_x64)

Comments (9)

  1. k4nagatsuki repo owner

    ご報告ありがとうございます。

    エラーログから処理の経路をたどると、どうも圧縮されたシナリオの展開か、シナリオ内のファイルの読み込み辺りでエラーが起きているように見えます。

    その後、エラーが起きたのでシナリオを強制終了して宿へ戻ろうとしているのですが、エラーログはその時に発生したもののようです。ただ、このAttributeError: 'ScenarioData' object has no attribute 'backlog'というエラーはシナリオを表すオブジェクトが完全に構築されている場合は発生せず、そしてオブジェクトが完全に構築されていない場合はこの箇所でのエラーは発生しないというような矛盾した状態が見て取れます。どうも不可解です。

    こういう意味不明な現象が起こる原因として思い当たるのが、ウィルス対策ソフトの誤検知による異常です。avast!で一回、ウイルスバスターで数回報告を受けたことがあります。その辺りに心当たりはないでしょうか。

  2. firce reporter

    ご確認ありがとうございます。

    avast!を使用していますが、フォルダごと例外として登録しています(下記URLが例外登録のスクリーンショットです)。
    https://gyazo.com/a16b628ab84286c492ba8671e7d07156

    もしやと思い最下部のpy本体を先程指定してみましたが、再度発生しました(試行回数20回以内)。
    この中に登録されていない最新テスト版(※別フォルダ)では発生していないのが謎です(試行回数不足は否定できません)。

    心当たりといえばPCを買い替えたついでに4.3にしたこと程度です(以前は3だったと思います)。
    シナリオ作成中に気づきましたが、前述の通りリューンでも起こるためCardWirth関連で特定できそうな心当たりはありません。
    一応、シナリオは解凍した状態のものです(zip状態ではない。1.50対応のためwsn形式でもない)。

    なんとも情報が少なく申し訳ありません。

    ※追記※
    関係があるかはわかりませんが、XEditorで張り紙の文字がにじみます(入力欄、プレビュー表示ともに。メッセージコンテントは正常に見える)
    因果関係は不明ですが、一応追記しておきます(下記URLはスクリーンショットです)

    入力欄
    https://gyazo.com/0dd76394c744e641e855a3f5b164f0d6

    プレビュー
    (横のタイトル、作者名の入力欄は比較用に映してあります)
    https://gyazo.com/bac91e2d454cb9c2ba9c6d3290ae4158

  3. k4nagatsuki repo owner

    ありがとうございます。例外に登録していれば普通は大丈夫のはずですね。

    一時的にavast!を無効にしてみて動きを見るようなことも試したくなりますが、それには危険が伴うのでお願いするわけにはいきません。

    あと思いつくのはネットワーク上にCWPy本体やシナリオがあるというケースですが(一度だけ挙動がおかしいという報告を受けたことがあります)、Dドライブはローカルドライブでしょうか。

    そもそも最新のテスト版で再現しないというのがよくわかりません。上に書いたような事が原因なら、最新版でも発生しそうなものです。

    追記の事柄に関しては、最近のWin10で表示がおかしくなったので調節した記憶があります。cwxeditorの最新版をお試しください。

  4. firce reporter

    >Dドライブ
    PC備え付けのHDDなので、ローカルだと思います。

    >文字のにじみ
    cwxeditorの最新版で開いた所、問題なく表示されました。
    ありがとうございます。

    >avastを切る
    ご助言に従って最新のcwxeditorを開こうとしたら警告が出た(例外登録し忘れ)ので区別できている気がしますが、わかりません…。

    一応、現在でもエラーは再現中です。
    エラーが出るのは良いのですが(撲滅は不可能だと思うので)、プロセスが残る(×で閉じても音楽が流れ続けてしまう)方だけでもどうにかできたら嬉しいな、と思っています。

  5. k4nagatsuki repo owner

    ありがとうございます。ディスク読み込みの問題の線もなしと思ってよさそうですね。

    想定外のエラーが出る場合はすでにアプリケーションが制御不能に陥っているので、プロセスを正常に終了するというのが難しいケースもあるのですが、減らしていきたいところではあります。

  6. firce reporter

    現状、原因の特定も対処も難しいようですし、、今のところシナリオや宿に破損といったものは見られませんので、もし何か解決できそうであれば(或いは原因が特定できそうであれば)対応をお願します。といった心です。
    目下のところ一番の不便は『タスクキルする必要がある』ことなので。

    問題が起こることを認知して頂くことが一番大事だと思って立てたスレッドなので、後の処理はお任せします。
    お手数をお掛けしますが、よろしくお願い致します。

  7. tachi gigas

    お疲れ様です。かき乱すような事を申し上げるようで大変恐れ入ります。

    こちらでも調べましたが、有り体に言えば分からない事が分かりました(こんな書き込みで本当にすみません)。

    エラーログをひっくり返したところ、同様のエラーログが4.1と4.2の時に見つかり、多分この時は気づかなかったか、再現性があったら調べるつもりだったのが同様のエラーが起きなかったためか忘れて放置してしまったのだと思います。申し訳ありません。

    いずれも仰る通りシナリオ解凍部分で発生したエラーログが随伴して記録されていました。

    Version : 4.2 (64-bit) / 2020-03-21 23:42:01
    DateTime: 2020-04-11 21:31:28
    Traceback (most recent call last):
    File ".\cw\data.py", line 1288, in run_decompress
    File ".\cw\util.py", line 2629, in decompress_zip
    UnboundLocalError: local variable 'dstdir' referenced before assignment

    バージョン日付は私家版を自環境でビルドした時の時刻のため、あまりあてにされないようお願いします。いずれにせよ、4.0と4.2の間に発生した事になります。それ以降は発生してません。

    エラー発生行は現cw\util.pyの2761行目となりますが、UnboundLocalErrorが発生している理由は力不足ながら理解できません。他にdstdir変数が使われているのは他関数の内部なので、変数のスコープに誤りはないはずです。

    問題とされる4.3を引っ張り出して環境を再現しましたが、困った事に何度試しても当方では現象を確認できませんでした。

  8. firce reporter

    関係があるのか不明ですが、一つ不思議なことが起きていました。

    起動→宿を選ぶ→テスト用シナリオ(到着した瞬間に済印をつけずに終了するだけのもの)をブックマーク登録→セーブ→ひたすら入ってエラー落ち

    としたときに、次に開くと
    『最後にセーブした宿ではなく、エラー落ちする前に正常に終了した(セーブはしていない)宿が最初に選択されている』
    のです。
    正常に終了できていないのだから当然のような、セーブ(ブックマーク登録)はできているから不思議のような、処理の違いのような。

    詳しくないので見当違いのことを言っている可能性は高いと思いますが、一応書き添えておきます。

  9. k4nagatsuki repo owner

    それは最後に選択されていた宿の情報が書き込まれる先が設定ファイルだからと思われます。設定ファイルはCWPyが終了する時に書かれるので、強制終了した場合は更新されません。

  10. Log in to comment