バグ:メッセージの選択肢を高速送りしていると内部エラーになることがある

Issue #1109 open
暗黒 騎士 created an issue

Xでのやり取りで「5.1以降5.2で多発するようになったから5.0に戻して使っているが5.0でもたまに起こる」「特に店シナリオ「星暦堂」の「次へ」を高速連打していると起こる」ということだったんですが、その間に入った修正で影響しそうなのはissue #1081#1083しかないように思われます。

参考までに、こちらのフォークで頂いた別の方の報告で、シナリオの最後の方でエラーが出た(メッセージ送りで?)というものがあり、その方のエラーログでは、

File "cw\sprite\message.pyo", line 901, in update

File "cw\sprite\message.pyo", line 924, in update_click

File "pygame\sprite.pyo", line 1215, in change_layer

File "pygame\sprite.pyo", line 834, in change_layer

ValueError: list.remove(x): x not in list

渡したレイヤーがPygameのリストにないっていうエラーだったので、試しにcw/sprite/message.pyのdef updatecw.cwpy.index = cw.cwpy.list.index(self)def update_clickself.group.change_layer2箇所をtry文で実行するようにしたバージョンを試してもらったところ、再現しなくなったということでした。自分の方の環境では再現しないのでよくわからないのですが、多分、特定の環境下では「pygameに投げられるレイヤのリストがどこかのタイミングで壊れる場合がある」ということだと思われたので、こちらにも報告しておきます。

Comments (1)

  1. k4nagatsuki repo owner
    • changed status to open

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

    選択肢を押下する事で若干下に移動する、その際他の選択肢に被らないよう一番手前のレイヤに持ってくる、という処理で手前にするか背後に戻すかのどちらかのレイヤ変更処理で不具合が起きているようです。押下アニメーション中に何か起きているとしか思えないのですが、しかしアニメーションの表示中はそもそも他の操作ができないはずです。

    押下表示は6フレームあるのですが、手許でこれをもっと長時間にし、色々操作を試してみても実際なにも起こりませんでした。そうなるとパフォーマンスの問題ではなさそうです。

    どういう操作をしているかにもよると思います。高速連打といってもマウスでするかキーボードでするか、マウスポインタを特定の位置におきながらEnterを押すか、と色々な操作が考えられます。あるいは何か設定が影響しているのでしょうか。

    挙げていただいた二つのIssueは症状からするとあまり関係が無さそうに思えます(もちろん断言はできないのですが)。

  2. Log in to comment