バグ:履歴から特定のシナリオを開くと強制終了

Issue #118 resolved
暗黒 騎士 created an issue

α2リリースお疲れ様です。

α2・64bit 左上ファイルの履歴から「私版・狼の親子」というシナリオを選んだ時に確認。

α1では再現しませんでした。

ログが出力されなかったため201デイリー版を落とし直すと意図しないエラーが出ました。

2017-02-01 23:51:57 [Build: 2017-02-01 21:07:45 Debug / Console (64-bit)]   cwx\utils.d:135 Stack Trace --------
cwx\editor\gui\dwt\mainwindow.d-mixin-4334, 4334
cwx\editor\gui\dwt\mainwindow.d-mixin-4337, 4337
cwx\editor\gui\dwt\cardpane.d-mixin-2190, 2190
cwx\editor\gui\dwt\cardpane.d-mixin-2191, 2191
cwx\editor\gui\dwt\cardpane.d-mixin-2199, 2199
cwx\editor\gui\dwt\cardlist.d-mixin-613, 613
--------
2017-02-01 23:51:57 [Build: 2017-02-01 21:07:45 Debug / Console (64-bit)]   cwx\editor\gui\dwt\mainwindow.d:4435 [Range violation] cwx\editor\gui\dwt\cardlist.d, 614: 0x00007FF6BE0CD488
0x00007FF6BD99DF3C
0x00007FF6BC7116A7
0x00007FF6BD31E2D7
0x00007FF6BDEE1EB5
0x00007FF6BDF9C529
0x00007FF6BDDA6789
0x00007FF6BDEAD233
0x00007FF6BDEAACAD
0x00007FF6BCDCC873
0x00007FF6BD9BDF6F
0x00007FF6BE0EC4B2
0x00007FF6BE0EC36F
0x00007FF6BE0EC42C
0x00007FF6BE0EC36F
0x00007FF6BE0EC189
0x00007FF6BD9BE634
0x00007FF6BE1A9DA9
0x00007FFE563E8364 in BaseThreadInitThunk
0x00007FFE572D5E91 in RtlUserThreadStart

ところでデイリー版が圧縮時42.3 MB、64bit版80MB×2もあるのは理由があるんでしょうか?(ビルドが早いが容量が増えるとか?

このサイトが速度あんまり出ないのもあって XEditor側のテストプレイヤーが少ない原因のひとつのような気もします。

コンソール表示はデバッグには有用ですが、普通に使う分には邪魔だから両方というのはわかるのですが…

「最新の機能使わせてあげるから人柱になってよ」と書いてあるのですから、コンソール版に絞るか、XEditorのオプション(にできれば)していただけるとありがたいかなぁと思います(個人の感想です)

Comments (7)

  1. k4nagatsuki repo owner

    ありがとうございます。

    手許で再現せず、コードを見てみたのですが、どうもありえない箇所でありえないエラーが起きています。配列の範囲外エラーなのですが、その前にインデックスのチェックを行っているので不正なアクセスはしていないはずです。インデックスの検索で妙な値が入っているのかと思ってチェックを増やしてみたのですが、これで直るか不明です。最新のテスト版で試していただけないでしょうか。

    ところでデイリー版が圧縮時42.3 MB、64bit版80MB×2もあるのは理由があるんでしょうか?(ビルドが早いが容量が増えるとか?

    理由はあります。困った事に問題の内容は「ビルドが遅くて容量も増える」です。D言語のコンパイラdmd 2.068以降、64bit(というかMS-COFF形式)のオブジェクト生成部にバグが入ったらしく、cwxeditorのコードをまとめてビルドしようとするとコンパイラが落ちるようになってしまいました。これを回避する方法は、コードをまとめず個別にビルドする事ですが、その結果としてコードの重複が増えてサイズが激増しました。しかもデバッグ情報を含めると個別ビルドすら落ちるので、それも諦めなければならなくなりました。

    そのうち他の誰かが同じ問題に引っかかって報告し、直されるだろうと思って待っているのですが、まだ直っていません。dmdのバグトラッカへ英語で報告する必要がありますが、私は英語が壊滅的に苦手です。いずれ腹をくくる必要がありそうだと思いつつ、まだビルドできないでもないのでぐずぐずしている、というのが現状です。

    とはいえ、デイリービルドが大きすぎるのは仰る通り問題です(なぜかそこには気づかなかった)。なので、今回から32bit版と64bit版のビルドを個別に出すようにしました。少しはましになるといいのですが。

  2. 暗黒 騎士 reporter

    32bit版/64bit版ともに再現しなくなっていることを確認しました。 が、なぜかエラーログは出力されているっぽいので一応載せておきます。(そういうものであればスルーで)

    なので、今回から32bit版と64bit版のビルドを個別に出すようにしました。

    そういうことでしたら、二つに分けるのはそれはそれで長月さんサイドが手間でしょうし、天秤に掛けると現状のままで良いかと思います。差し出口でした。 容量を鑑みるとcwxeditor_fnine_win.exeとcwxeditor_fnine.exeはどちらか一方でもいいのでは?と単純に思っただけですので…(以前数十分かかる的なことを仰っていましたし)

    2017-02-02 20:11:31 [Build: 2017-02-02 19:52:40 Debug (64-bit)] cwx\utils.d:133 Stack Trace --------
    cwx\editor\gui\dwt\mainwindow.d-mixin-4334, 4334
    cwx\editor\gui\dwt\mainwindow.d-mixin-4337, 4337
    cwx\editor\gui\dwt\loader.d-mixin-130, 130
    cwx\editor\gui\dwt\loader.d-mixin-131, 131
    cwx\editor\gui\dwt\loader.d-mixin-132, 132
    cwx\editor\gui\dwt\loader.d-mixin-139, 139
    cwx\editor\gui\dwt\mainwindow.d-mixin-1174, 1174
    cwx\editor\gui\dwt\mainwindow.d-mixin-1175, 1175
    cwx\editor\gui\dwt\mainwindow.d-mixin-990, 990
    2017-02-02 20:11:31 [Build: 2017-02-02 19:52:40 Debug (64-bit)] cwx\editor\gui\dwt\loader.d:162 [null this] org\eclipse\swt\graphics\GC.d, 3998: 0x00007FF6DF095813
    0x00007FF6DED8E6AE
    0x00007FF6DD6E61B3
    0x00007FF6DD6E6B85
    0x00007FF6DD6DF699
    0x00007FF6DE2CCD71
    0x00007FF6DE2F14DE
    0x00007FF6DE2FA7E2
    0x00007FF6DEBA31FD
    0x00007FF6DEBA2EB0
    0x00007FF6DDD3DEBC
    0x00007FF6DDD417C0
    0x00007FF6DE68557A
    0x00007FF6DEFE19E8
    0x00007FF6DEF54E84
    0x00007FF6DED78526
    0x00007FF6DED761BB
    0x00007FF6DDD82B8B
    0x00007FF6DE97FEE3
    0x00007FF6DF0ADB12
    0x00007FF6DF0AD9CF
    0x00007FF6DF0ADA8C
    0x00007FF6DF0AD9CF
    0x00007FF6DF0AD7E9
    0x00007FF6DE980584
    0x00007FF6DF16B119
    0x00007FFE563E8364 in BaseThreadInitThunk
    0x00007FFE572D5E91 in RtlUserThreadStart
    
  3. k4nagatsuki repo owner

    どうもエラーの内容がおかしいですね。org\eclipse\swt\graphics\GC.dは、DWTのグラフィックスコンテキストです。つまり描画を司る部分なのですが、どうしてシナリオのロードのタイミングでそこでエラーが起きているんでしょう? エラーの内容もどうもよく分からないです。3998行目はメソッド定義でエラーが起きるような箇所ではありませんし、null thisなるメッセージも見つかりません。

    これは当該シナリオだけで起きる問題なのでしょうか? また、スキン側のリソースの扱いで問題が起きているという可能性もあるのですが、どのようなスキンを使用しているでしょうか?

    私の試したシナリオは「狼の親子」ver.2.00で、タイトルには「私版」がついていないです(履歴にはある)。もしかして別のシナリオなのでしょうか?

  4. 暗黒 騎士 reporter

    α2で試した限りでは狼の親子(自分のもVer2.00です)以外のシナリオでも強制終了が起こる(100%ではない)ようです。 ゴブリンの洞窟でも確認しました。

    リソースについては1.50エンジン(カスタマイズ済み)が読み込まれているようです。

    すいません、どうも他の状況だとしなかったりでよくわからなくなってきたので、とりあえず高頻度で再現する状況を書いておきます…

    • クラシック形式の交易都市リューンでID75に「コカの葉1111111」という名前のアイテムを作っている(文字数制限をチェックしていた)
    • アイテムタブを開いている状態
    • 私板・狼の親子を履歴から選択
    • 読み込みが終わり、アイテムビュー部分の空白を左クリックで強制終了(起こらない場合は別シナリオ→リューン→狼の親子を数回繰り返す)
  5. 暗黒 騎士 reporter

    0202ビルドのものについては以降再現しなくなってしまいました。

    キャッシュが残っていただけかもしれません。(だとしたら失礼しました…)

    リリース版で試している時にエラーログが出たようなので貼っておきます。

    2017-02-02 21:52:45 [Build: 2017-02-01 19:52:12 Release (64-bit)]   cwx\utils.d:133 Stack Trace --------
    cwx\editor\gui\dwt\mainwindow.d-mixin-4334, 4334
    cwx\editor\gui\dwt\mainwindow.d-mixin-4337, 4337
    cwx\editor\gui\dwt\loader.d-mixin-130, 130
    cwx\editor\gui\dwt\loader.d-mixin-131, 131
    cwx\editor\gui\dwt\loader.d-mixin-132, 132
    cwx\editor\gui\dwt\loader.d-mixin-139, 139
    cwx\editor\gui\dwt\mainwindow.d-mixin-1174, 1174
    cwx\editor\gui\dwt\mainwindow.d-mixin-1175, 1175
    cwx\editor\gui\dwt\mainwindow.d-mixin-990, 990
    cwx\editor\gui\dwt\mainwindow.d-mixin-992, 992
    cwx\editor\gui\dwt\cardwindow.d-mixin-756, 756
    cwx\editor\gui\dwt\cardwindow.d-mixin-768, 768
    cwx\editor\gui\dwt\cardwindow.d-mixin-771, 771
    cwx\editor\gui\dwt\cardpane.d-mixin-3425, 3425
    cwx\editor\gui\dwt\cardpane.d-mixin-2985, 2985
    cwx\editor\gui\dwt\cardpane.d-mixin-2987, 2987
    cwx\editor\gui\dwt\cardpane.d-mixin-1273, 1273
    cwx\editor\gui\dwt\cardpane.d-mixin-1293, 1293
    cwx\editor\gui\dwt\cardlist.d-mixin-525, 525
    cwx\editor\gui\dwt\cardlist.d-mixin-962, 962
    cwx\editor\gui\dwt\cardlist.d-mixin-862, 862
    cwx\editor\gui\dwt\cardlist.d-mixin-939, 939
    2017-02-02 21:52:45 [Build: 2017-02-01 19:52:12 Release (64-bit)]   cwx\editor\gui\dwt\mainwindow.d:1162 991 - 994 - 997 - 1004 - 1006 - 1008 - 1010 - 1016 - 1019 - 1024 - 1031 - 1033 - 1035 - 1037 - 1039 - 1041 - 1043 - 1045
    2017-02-02 21:52:45 [Build: 2017-02-01 19:52:12 Release (64-bit)]   cwx\editor\gui\dwt\mainwindow.d:1163 [null this] org\eclipse\swt\graphics\GC.d, 3998: 0x00007FF6F1190BC3
    0x00007FF6F0F44F2E
    0x00007FF6F08394B9
    0x00007FF6F08399C5
    0x00007FF6F08347D6
    0x00007FF6F08047F1
    0x00007FF6F081F99D
    0x00007FF6F08263EE
    0x00007FF6F0E1B2BD
    0x00007FF6F0E1B0A3
    0x00007FF6F04819F5
    0x00007FF6F04842F0
    0x00007FF6F0A68367
    0x00007FF6F1101C38
    0x00007FF6F10D87F4
    0x00007FF6F0FC1DB6
    0x00007FF6F0FC016B
    0x00007FF6F04B5EB5
    0x00007FF6F0C128E6
    0x00007FF6F118F242
    0x00007FF6F118F14F
    0x00007FF6F118F1DC
    0x00007FF6F118F14F
    0x00007FF6F118F089
    0x00007FF6F0C12A14
    0x00007FF6F11F0551
    0x00007FFE563E8364 in BaseThreadInitThunk
    0x00007FFE572D5E91 in RtlUserThreadStart
    2017-02-02 21:52:45 [Build: 2017-02-01 19:52:12 Release (64-bit)]   cwx\utils.d:133 Stack Trace --------
    cwx\editor\gui\dwt\mainwindow.d-mixin-4334, 4334
    cwx\editor\gui\dwt\mainwindow.d-mixin-4337, 4337
    cwx\editor\gui\dwt\loader.d-mixin-130, 130
    cwx\editor\gui\dwt\loader.d-mixin-131, 131
    cwx\editor\gui\dwt\loader.d-mixin-132, 132
    cwx\editor\gui\dwt\loader.d-mixin-139, 139
    cwx\editor\gui\dwt\mainwindow.d-mixin-1174, 1174
    cwx\editor\gui\dwt\mainwindow.d-mixin-1175, 1175
    cwx\editor\gui\dwt\mainwindow.d-mixin-990, 990
    
  6. k4nagatsuki repo owner

    最新版で同じ事をしても出なくなったようであれば、一応問題はなくなったと言えるでしょうか?

    謎のnull this問題が残っていそうで非常に恐いというか、たぶんGCがどこかでメモリアクセス違反を起こしていそうな気がします。以前にもXP環境でGCの挙動がおかしかった事がありますが、ライブラリ内にバグがありそうですね。

    XPの問題を回避するためにGCのインスタンスを作り直したりしていましたが、今回も問題箇所に差し掛かる前に似たような対策を打ってみました(641df6f)。これでより確実に回避できるとよいのですが。

  7. 暗黒 騎士 reporter

    しばらく様子を見てみましたが、再現しなくなっているようなので解決ボタンを押させて頂きます。

    攻略wikiのコメントに4?~5α2で特定のカードを削除すると強制終了するというご報告があったのですが、最新テスト版では再現しないとのことで、おそらくこのGCの作り直しで改善した模様です。

    対応ありがとうございました。

  8. Log in to comment