バグ: フォルダの削除に失敗して様々な箇所でトラブルになる
このIssueは元「0.12.3リリースへ向けて」です。
報告された問題が大きくなってしまったので、専用のIssueに変更します。以下は変更前の文章です。
0.12.2をリリースしてからまだ二月ですが、すでにいくつか重要な問題が発覚しています。以下のようなものです。
- アイテムカードがリサイクルカードにならない。
- キーコード不保有イベントがキーコード成功・失敗イベントの大半に反応してしまう。
- CardWirthアレンジパックの最新版からスキンを生成した時、タイトル画面の表示が正しくない(Issue
#210のコメント)。 - 逆変換でカード置場と荷物袋内のカード管理情報の解説の改行コード部分が
\n
になる。 - 環境によってSDL_mixerとBASS Audioの内部競合が発生し、まったく音が鳴らなくなる(Issue
#214)。 - 行動不能者の所持するカードを移動した後、操作ができなくなる(Issue
#215)。
そのため、できるだけ早めに「より安定した」バージョンとして0.12.3をリリースした方がよいと考えます。まずは5月始めに最初のβリリースを行い、そこからは大規模な機能追加を避けて不具合を潰していき、早めに0.12.3正式版としてリリースしたいと考えます。
「次のリリースまでにこれはしておいたが方がいい」といったご意見をお持ちの方は、コメントいただければできるだけ対応します(ただマニュアルの整備とかは難しいです……)。
Comments (47)
-
reporter -
こんばんは。具体性に欠ける話で申し訳ないのですが……。
ここ数日、最新テスト版Pyで遊んでいたところ、データセーブ中に突然Pyの操作が出来なくなる(カーソルを合わせてもカードが一切反応しない。BGMは鳴りっぱなし)という現象が何度か発生しました。全く操作を受け付けないため「閉じる」ボタンで強制終了してます。
幸い、セーブ自体は出来ていたので被害は特になかったのですが。複数のシナリオで(一度はシナリオに入る前の宿屋画面でも)同じ現象が起きたため、シナリオバグやエンジンとの相性などではなさそうです。
以前はこうした事は起こりませんでしたから、新しいテスト版で何か不具合が出ているのかも?
必ず発生するわけでもなく他の人の環境で発生するかどうかも不明ですが、一応ご報告を。ではでは。
-
reporter ご迷惑をお掛けして申し訳ありません。それは明らかに問題ですね。
ダイアログを出した時はカードをクリックされると挙動がおかしくなるので一時的に画面をロックするのですが、そのロックの解除が上手くいっていないのかもしれません。その周辺に手を入れた記憶があるのでそのせいかも。調べてみます。
私はセーブ時にダイアログを出さない設定にしているので気づかなかったのかもしれません。セーブ前とセーブ後でそれぞれダイアログを出さない設定ができるのですが、Ganma Shadowさんはどのような設定でプレイしているか教えていただけないでしょうか?
-
ダイアログ設定の項目は全部チェックが入ってますね。特にいじった覚えはないのですが、これが原因でしょうか?
-
reporter いえ、それが初期設定です。
ご確認ありがとうございます。それに合わせて再現できるか試してみます。
-
おはようございます。
セーブ前後のダイアログを表示しないように設定してみましたが、やはり同じ現象が発生しました。 毎回ではないのですが、体感で10~20回に1回はフリーズしてる気がします。
-
reporter ご迷惑をお掛けして申し訳ありません。お手数をお掛けしますが数点確認させてください。
- 他に何もせず宿でセーブを連打するだけで現象が発生するか?
- ゲーム画面が操作できなくなるだけでウィンドウを閉じる等の操作はできるのか、それとも完全にハングアップ(win7等だと画面が白くなって何も操作できなくなる状態)するのか?
- CWPyを置いたドライブでチェックディスク等を行った結果は正常か?
- エラーログ(CardWirthPy.exe.log)が出ていないか?
今のところこちらでは再現できておりません。どうもダイアログが原因ではないような感じがしてきました。
-
こんにちは、続報です。
- 5.05bで上書き後に連続セーブ(各100回)を試したところ、警告ダイアログをONOFFどちらにしてもフリーズしなくなりました。
- ゲーム画面の表示はそのままで、カーソルに一切反応しなくなる状態でした(カーソルを重ねた時のネガ反転もなし)。最小化も出来ないようでしたが、閉じるボタンは使えたためPyだけを強制終了出来ました。
- これに関してはまだです。
- 強制終了後に毎回「エラーログをご覧ください」という内容の英文が出ておりました。表示の名前と違ったのか今まで見つけられなかったのですが、CardWirthPy.exe.logのファイルはありました。添付した方が良いでしょうか?
何だか、有耶無耶のうちに直ってしまったような(苦笑)。お騒がせして申し訳ありません。
-
reporter あ、あれれ、出なくなってしまいましたか。最近(というか昨日)音周りの修正を行ったのですが、もしかしたら音声関係で問題が出ていたのでしょうか?
エラーログは、正常に出ているのであれば、
CardWirthPy.exe
と同じフォルダにあります。ファイル名はCardWirthPy.exe.log
ですが、拡張子を隠す設定になっている場合は.log
の部分が見えないかもしれません。最小化ができなくなっていたということは、全体が止まってしまったような感じもしますね(今のWindowsは止まったソフトも強制終了だけはできる)。
-
- attached CardWirthPy.exe.log
ファイルはこちらになります。
どうも、英文を見てそのまま「errorlog」的な名前のファイルを探したため見つからなかったのだと思います。
-
reporter ありがとうございます。
確認したところ、どうもセーブが完了することで不要になったファイルを削除する処理が失敗しているようです。何かがこれらのファイルを使用中の状態になっているかどうかして、Windowsによって削除を拒否されているような感じです。
実は以前にも2つほどの環境で似たような問題が発生したことがあって、原因が不明なまま対処したことがあります。それとは発生箇所が違うようですが同質の問題でしょう。
問題を回避する方向で処理を変えてみます。
-
reporter そのような問題が発生していた方と、Norton AntiVirusが原因じゃないかなどという話をした覚えがあります。関係ないかもしれませんが、ウィルス対策ソフトなど、何か入れておられるでしょうか。
-
NortonじゃなくウイルスセキュリティZEROを入れてます。と言うか、セキュリティないと怖いし…。
-
reporter それはもちろん、入れないといけないです(警告も出ますしね)。
ただ、セキュリティソフトはシステムに深く食い込む事が普通で、その上行儀の悪いソフトだと色々トラブルの原因になる事があります。これはただの一般論なので、今回の不具合には関係ない可能性の方が高いとは思います。
今対策中です。今しばらくお待ちください。
-
reporter - pull request
#834 - 上の変更をマージしたテスト版
お試しください。保存の処理に手を入れたため、念のため、Yadoフォルダをバックアップする事をおすすめします。
宿で連続でセーブした時に問題が出なかった理由ですが、その状態では削除するファイルが発生しなかったため、問題の処理を通る事がなかったためではないかと思います。カードを捨てたりした場合が問題です。
- pull request
-
言われてみれば……フリーズしたシナリオは、いずれも技能カードやアイテムカード入れ替え必須のギミックがありました。捨てたりはしなかったのですが、カードを載せ替えたり外したりした後にセーブしたような記憶があります。
ひとまずプレイ中のシナリオで最後まで試してみます。ではでは。
-
- attached CardWirthPy.exe.log
しばらく遊んだ結果、セーブ後のフリーズはしなかったのですが、操作中によく分からないフリーズが2回ほど発生しました。ログファイルを添付します。
ではでは。
-
reporter 宿のロード時に
Data/Temp
の下のフォルダを消そうとして失敗していますね。正直言って意味が分からない……。なんらかのソフト(エクスプローラを含む)で
Data/Temp
の下の何かのフォルダやフォルダを開いている、ということはないでしょうか(状況的に考えづらいですが)。後は本当に記憶装置に不良セクタがあるか、セキュリティソフトが更新でフォルダの使用権を一時的に奪うなどのおかしな事をしているか。うーん、とりあえず問題を回避する方向で手入れしてみます。
-
reporter フォルダは残しておいてもとりあえず無害なので、せめてエラーが起きた時は中身のファイルだけでも削除を試みるようにしました。お手数をおかけして申し訳ありませんが、お試しください。
しかし、このあたりのコードはもう数ヶ月は変わっていないはずなので、急にエラーが出るようになったことは不可解です……。
-
- attached CardWirthPy.exe.log
おはようございます、更新お疲れ様です。
テスト版を遊んでいたところ、あれからセーブ中のフリーズは起こらなかったのですが、プレイ中に謎のフリーズが数回発生しました。一度などは宿画面でアイテム移動中にフリーズし、強制終了→再起動後に荷物袋を見ると移動させようとしたアイテムが消滅している始末。
幸いバックアップは自動で毎晩取っているから問題なかったのですが、ここまで続くと自分のPC環境が何かおかしいのかと思えてきました。
以前から(カードワース関係なく)特定のファイルやフォルダを削除しようとして「このファイルは他のプログラムが使用しているためアクセスできません」(うろ覚えですがこんな文章だったと思います)というメッセージはしょっちゅうあったのですが、もしかして他の人たちのマシンではあまりないのでしょうか? 私のPCだと2代続けてよくあったので普通の現象だと思っていました。
一応ログファイルも載せておきますね。ではでは。
-
reporter 以前から(カードワース関係なく)特定のファイルやフォルダを削除しようとして「このファイルは他のプログラムが使用しているためアクセスできません」(うろ覚えですがこんな文章だったと思います)というメッセージはしょっちゅうあったのですが、もしかして他の人たちのマシンではあまりないのでしょうか? 私のPCだと2代続けてよくあったので普通の現象だと思っていました。
あ、まさにその現象ですね。削除する事が必要なファイルが削除できていないというエラーが発生しています。アイテムカードの消滅はその影響と思われます(アイテムカードのファイルの処理で失敗し、結果がおかしくなる)。削除できるはずのものが削除できない環境というのは、実際にはあまりないと思われます。また、ファイルやフォルダが削除できないと、どうしてもデータに不整合が発生してしまうため、回避策を講じていってはいますが限界があります。
5月に入ってからくらいの時期から発生し始めた、というのが気になります。その時点で何らかの環境の変化がなかったでしょうか。エンジンを更新したことでセキュリティソフトや検索用の索引サービスの対象に入ったという事も考えられます。フォルダの削除に失敗したときに「誰がそのフォルダを使用しているか?」を調べてみると犯人が分かるかもしれません。
検索して出てきた参考になりそうなページを挙げておきます。
- http://answers.microsoft.com/ja-jp/windows/forum/windows_7-files/%E5%88%A5%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0/f9bb3118-d2e0-4c9c-b056-05bb44ee154c
- http://raven.air-nifty.com/night/2008/05/post_633f.html
- http://www.se-support.com/helpdesk/folderrename.html
ども3.によるとエクスプローラのプレビュー機能が悪さをすることもあるような……? 試しにこちらでも表示設定を変えてテストしてみます。
根本的な解決にならない上、不整合の原因にもなったようなので、保存時の削除エラー発生時に無理やり処理を継続する処理は削除して、エラー発生時は一度エンジンを落としてしまった方がいいのではないかと考え始めています。今のCWPyには保存中の強制終了などの対策としてデータを復元する機能が入っているので、そちらの方が却って不整合が起きにくいはずです。
-
こんばんは、いつも更新お疲れ様です。
環境の変化は…セキュリティ更新はほぼ毎日だし、索引サービスの方は心当たりがないですね。
教えて頂いたページを読んでみましたが、1と2は具体的な対処法がよく分からず、3はプレビューも詳細表示機能も使ってないので、正直お手上げでした(苦笑)。暫くテスト版で様子見してみます。
ところで、最新テスト版になってからだと思うのですが、通常画面で荷物袋から直接道具を使う機能がなくなっているようです。操作設定のチェックは入っていますが、キャラのアイテム画面に荷物袋へのショートカットが表示されなくなっていました。
-
reporter 索引サービスはVista以降のWindowsなら必ず入っていて、コンピュータの空いた時間に検索用の索引を作っているものです。とはいえこいつはフォルダを掴みっぱなしにするようなヘマはしないはずです。
ディスクのエラーチェックはしてみましたか? CWPyが入っているドライブで右クリックしてプロパティを出すと、ツールのところにエラーチェックのメニューがあるはずです。これで問題が出ていないか確認してみてください。エラー無しなら原因は常駐している別のソフトにありそうです。
ところで、最新テスト版になってからだと思うのですが、通常画面で荷物袋から直接道具を使う機能がなくなっているようです。操作設定のチェックは入っていますが、キャラのアイテム画面に荷物袋へのショートカットが表示されなくなっていました。
あれには表示される条件が2つあって、使用可能なアイテムが荷物袋にあること、手札欄に空きがある(空きがないと荷物袋からカードを取り出せない)ことです。これらのいずれかの条件が満たされていないか確認していただけないでしょうか。
-
今エラーチェックをしましたが、ディスクには問題ありませんでした。
荷物袋の件ですが……よくよく見れば、スキルカードばかりで使えるアイテムが一つもありませんでした。と言うか、以前のフリーズで複数のアイテムが荷物袋から消えていた模様です(涙)。それか気付かなかっただけでフリーズ1回ごとにアイテム一つずつ消えていたのか…。
最近使っていなかった別のパーティで再開したところ、ちゃんと機能が働いているのを確認しました。
お騒がせして申し訳ありませんでした(よろりら
-
reporter やっぱり保存時に不整合が起きちゃってる感じがしますね……。本当に申し訳ありません。
最新のテスト版では、もう保存時にエラーが出たらそのままゲームが止まるように戻してしまいました。どちらかというとこの方が安全です。更新すると、カードが消える不具合は解消されるかも知れません(その代わりフリーズが増えるはず)。
一体誰がフォルダを専有しているのか分かれば問題そのものを解消できるのですが。タスクバーの通知領域を見ると見覚えのないソフトが動いていたりしないでしょうか。
-
バックアップフォルダを確認したところ、フリーズ時に使っていたパーティのItemCardフォルダが丸ごと消滅してることが判明しました(泣笑)。まだ復元できるもので良かった…。
タスクバーの通知領域には、特に覚えのないソフトは見当たりませんでした。と言うか、以前私はよく知らないソフト(OmniPass)を不要なものと勘違いして止めたばかりにWindowsが起動しなくなって、バックアップから復元する羽目になった事があるもので……機能を理解しないまま迂闊に触るのは怖いのです(--;)
-
reporter 復旧できてよかったです。保存絡みのトラブルは本当に怖い……。
しかしもうだいぶ試せる手段が限られてしまっていますね。CWPyのフォルダを移動してみるなどするとどうでしょう?(もっとパスの短いところなどに) 場所を変えればトラブルの対象外になるかもしれないという程度の安易な考えなのですが。
-
reporter - pull request
#844 - 上の変更をマージしたテスト版
問題を回避するため、いくつか思いついた手を打ってみました。上の方で打った手よりもシンプルなので、不整合は起きにくいと思います(しかし宿のバックアップをお勧めします)。内容は次の通りです。
Data/Temp
以下のフォルダは、中身のファイルさえ消えていれば残っていても無害のはずなので、そのフォルダのみ特別扱いしてフォルダの削除失敗を無視する- Python処理系の問題でフォルダが解放されないなどという事が万が一あるかもしれないので、ファイルIOで余計なクローズ処理を入れる(たぶん無関係だが……)
- pull request
-
reporter - changed title to バグ: フォルダの削除に失敗して様々な箇所でトラブルになる
- marked as bug
- edited description
ほとんどフォルダ削除問題専用状態なので、それに合わせてIssueの内容を変更します。
-
reporter その後どうでしょうか。
Data/Temp
以下のフォルダの削除に失敗すると1秒おきに5回リトライしてから中身だけを削除するようにしているので、おそらく度々数秒固まりながら動くような状態になっているのではないかと推測しています(固まるとエラーログも出ます)。 -
- attached CardWirthPy.exe.log
こんばんは。
セキュリティソフトの処理対象からPyのフォルダを外したりもしてみましたが、新しいアイテムカード入手後にセーブすると固まるみたいですね。表面的な症状は前と同じで、一度固まるとウィンドウを閉じて起動し直すしかなさそうです(数分間待っても変わらなかったので)
しかし幸いな事に、前の更新からItemCardフォルダ自体が消滅するような事態は起きていません。
どうも私のPC環境自体が結構レアな状況のようですし、他に類似の報告がないならこのまま安定版としてリリースしても構わないのではないかな、と思います。
報告が遅れて済みませんでした、ではでは。
-
reporter ご確認ありがとうございます。
アイテムカード限定ですか……ログを見ていて気づいたのですが、どうもフォルダをファイルとして扱ってしまっている箇所があるようです。「フォルダの一覧とファイルの一覧を取得する」という機能がPythonにあるのですが、それのファイル一覧の中にフォルダが混ざってしまっている感じです。
試しにそこで「それは本当にフォルダか?」というチェックを入れるようにしてみます。
-
reporter 上に書いた改造です。お手数をお掛けして申し訳ありませんがお試しください。
環境要因の不具合とはいいますが、実際には同じような環境は世の中にはごまんとあるはずでして、一人が出遭った問題には、実際には何十人もが出遭う可能性があるはずです。
そうした問題にもできる限り対処したいと私は考えていますので、どうぞ遠慮なく対応を求めてください。
-
- attached CardWirthPy.exe.log
こんばんは。
あれから幾つかシナリオを試してみたところ、フリーズしたりデータが誤って消されることもなく(時折、セーブ時に数秒間固まったりはしますが)順調に遊べています。
おそらく度々数秒固まりながら動くような状態になっているのではないかと推測しています(固まるとエラーログも出ます)。
症状(?)としては↑のような感じで、特に不自由ありません。ただ、エラーログに日付が現れなくなったのが少し気になるので確認用にログを添付しておきます。
一応ご報告までに。ではでは。
-
reporter ご確認ありがとうございます。ようやく有効な対策が見つかった感じですね。
やり方が有効ということがわかったので、数秒固まらない&エラーログが出ないようにしてみました。よろしければお試し下さい。
ただ、エラーログに日付が現れなくなったのが少し気になるので確認用にログを添付しておきます。
これはいわゆる普通のエラーログと出ている状況が違うためですね。通常、エラーログは出てはいけないもので、万一出た場合はできるだけその時の情報を書くようにしてあります。今回のエラーログはそれとは別に、とりあえず出る事を前提としてログに書くようにしたもので、前者より簡略です。
-
reporter せっつくようで申し訳ないのですが、その後どうなっていますでしょうか。
エラーログやフリーズもなく動いているようであれば、とりあえず問題の回避成功ということで解決と言えるのではないかと考えております。依然問題が出るようであれば、改めて対応を考えさせていただきたいです。
-
- attached CardWirthPy.exe.log
こんばんは。
報告が遅れて申し訳ありません。暫く順調だったのですが、今日プレイ中によく分からないトラブルが起きて、宿データがおかしくなったため復旧に手間取っていました。
どうも以前のフリーズとは違うような気がしますが、何が違うのか上手く説明できません。ログを添付します。ではでは。
-
reporter ありがとうございます。いつもご迷惑をお掛けして申し訳ありません。
たしかにこれは以前のエラーとは違うものですね。2種類の異なるエラーが出ています。片方はメモリ不足と出ていますが……。メモリ容量が問題になるような環境でしたでしょうか?
もう片方はさらに奇妙です、どうも荷物袋かカード置場「が」カードを使用しようとした結果エラーになったように見えます(荷物袋からカードを取り出して使用、ではなく荷物袋「が」使用」)。実際にはそのような操作はできないはずです。宿データがおかしくなったというのはこのことでしょうか?
-
おはようございます。
前者のエラーは「狼の親子」を途中から再開した際、カードをクリックしたら突然フリーズして、強制終了後に再起動するとパーティメンバーが消えたまま表示されずF9などの操作も一切受け付けなくなっていました(故に他のパーティから再開することもできず、バックアップも数日前のデータだったため、そのまま上書きしたら移動させていたカードが複数に増えたり絵柄が古い同名カードと入れ替わったり等ややこしいことに…)
後者のエラーは「魔導士ホッレウムの奇妙な部屋」というシナリオをプレイ中に発生したものです。アイテム所持上限3つのうち2つ埋まった状態から、荷物袋のアイテム使用中にシナリオギミックでアイテム欄へカード配布されたことに気づかず更に別のアイテムを使おうとしたためエラーを起こした模様です。こちらでは特にデータが壊れた様子はありませんでした。
メモリ容量は8Gあるし、タスクマネージャを見ても容量オーバーするようなソフトは動いていなかったと思います。後者はともかく、前者は訳が分かりませんね…。
(追記。後者のようなエラーを回避するには、荷物袋のアイテムを使った後はメニューウインドウを閉じる仕様にすればいいのかなと思いました)
-
reporter ありがとうございます。後者は今から調べてみます。
前者は、これはまずい。保存時に発生しているのでもないのにデータが壊れてしまったのは奇妙です。画像の特性などでエラーになって、再開後も表示しようとしたらおかしくなるというような事ならあり得るかもしれません。とりあえず当該シナリオをプレイしてみます。
-
reporter 前者について。
これはおそらく最初のエラーでデータが壊れたわけではなく、再開の時に「シナリオ側の要因で再開に失敗した」という感じがします。
以前のバージョンには「シナリオを開始しようとしてシナリオのロードがエラーになるとそのまま止まる」という問題があって、これは読み込みエラーダイアログを出して正常に進行するように修正したのですが、その時に冒険の再開の時の読み込みエラーは考慮しなかったはずです(今まで気づいていませんでした)。
再開時に発生した読み込みエラーを受け止めて宿に戻るような処理を行えば、少なくとも宿データの無事は確保できるはずです。まずはそこから対応してみます。
-
reporter 前者の問題は、やはり画像の読み込みエラーでした。「狼の親子」の「ドア1.bmp」がエラーになるようです。
困ったことにライブラリ(ソフトウェアを作るための部品)内部でメモリ破壊エラー(要するに何が起こるか分からない致命的不具合)が発生しており、今現在完全に対処する時間が無いため、当面の対策として該当するイメージのみ読み込みを拒否してエラーメッセージに置き換えるようにしてあります。これで少なくとも当該画像が原因でランダムなタイミングで落ちたりする事は無くなったはずです(当該画像を正しく表示したい場合、MSペイントか何かで「ドア1.bmp」を開いて上書き保存するだけで改善すると思います)。
また、シナリオの再開失敗時にも正しく宿に戻るようになりました。
後者の問題は、荷物袋内のカードを使った後、イベントによるカード入手などで持札が一杯になり、その状態では荷物袋からカードを取り出す事ができなくなっているはずなのにダイアログ再オープンで荷物袋内のカードを選べるようになってしまっていた事が原因です(その結果、荷物袋からカードを取り出そうとする→失敗して荷物袋に戻る→そのまま使おうとする→エラーとなっていました)。
そのような状況では荷物袋が再オープンされないようにしたので、もうこの問題は起こらないはずです。
-
reporter 問題の画像が読み込みできるようになりました。
ドア1.bmp
はRLE4という方式で圧縮されたビットマップ画像なのですが、どうもライブラリのバグはRLE4の展開ルーチン内にあるようなので、自前で展開ルーチンを用意して展開済みの画像データをライブラリに渡すようにしたところ、問題なくなったようです。お手数をおかけして申し訳ありませんが、よろしければこれで問題なくプレイできるかご確認下さい。
-
reporter フォルダの削除に関する問題は対処できて、その後の2種類の問題については明白な原因に対する処置ができたので、他に問題がなければ近いうちにβ版をリリースしたいと考えています。
何かありましたらお知らせください。
-
こんばんは、更新お疲れ様です。
最新テスト版にて「狼の親子」クリア、他幾つかのシナリオを遊んでいますが今のところ新たなバグも再発もなく快適です。
暇を見て未プレイのシナリオ(たぶんまだ100以上ある)をゆっくりこなしてますので、また何かあれば報告に来ると思います。
色々と対応していただきありがとうございました。ではでは。
-
reporter いえ、こちらこそありがとうございました。一応の解決までご協力いただき本当にありがたいです。
削除の問題に関しては完璧な解決とはいえないのですが、とりあえず新たな問題が出たら仕切りなおすことにして、このIssueは一旦クローズさせていただきます。
何か出ましたら、また対応させていただきます。
-
reporter - changed status to resolved
- Log in to comment
特に問題なければ明日にでも0.12.3β1をリリースします。