提案;不正なスキンがあっても起動できるようにする

Issue #319 resolved
暗黒 騎士 created an issue

<Coefficient>を試している時に気づいたのですが、閉じタグが無いなど、「登録されているPyディレクトリに不正なXMLのスキンが一つでも存在する」とXEditorはエラーダイアログなど一切無しで起動できなくなるようです。
不正なスキンは暗黙的にスルーするとか、try文的な構造にすることはパフォーマンス的に厳しいでしょうか?

Comments (7)

  1. k4nagatsuki repo owner

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

    手許で試してみたのですが、特に起動できなくなる事は無く、壊れたスキンは正常に除外されました。

    となると考えられる事は、XMLのパースを行うライブラリのコードにXMLのパース中にアクセス違反が発生するバグがあり、現在の64-bitビルド版のランタイムではアクセス違反を検知できずに黙って落ちるという問題と複合して仰られるような問題が起きているという事です。

    この推測が正しければ、32-bit版なら正常に動くはずです。

    放置するのはよくない問題なのですが、問題がライブラリと処理系にあるのであればcwxeditorのコードではどうにもできません。

    Dのstd.xmlは将来的に置換される予定になっているので(随分長くかかっていますが)、それが実行された時に副次的に解決できるかもしれません。


    ついでにエンジン側で起動できなくなるケースを見つけたのでそちらは目に見える形でエラーを出すように修正しておきます。

  2. 暗黒 騎士 reporter

    32bit版でも起動は出来ないのですが、確かに無言落ちはせず、オブジェクトエラーが出るようです。
    ただ、タスクマネージャーに実行中のまま残る(64bit版は残らない)のでこちらの方が後始末は大変かもしれません。
    自分の環境ではJUDGMENTのSkin.xml114行目(1.8だと24行目)の愚者の</Ability>を消した場合で再現しています。


    object.Error
    object.Error@(0): Access Violation
    

    0x014602A8
    0x00938F82
    0x00939133
    0x0146025C
    0x00938F82
    0x00939133
    0x0146025C
    0x0143ABC4
    0x00938F4E
    0x00938F82
    0x00938E3F
    0x0146025C
    0x0143ABC4
    0x00938C5A
    0x00938C8E
    0x014559D6
    0x009364BD
    0x01031EF1
    0x010255CF
    0x01022C7C
    0x004ADC49
    0x004AD51C
    0x00FA8271
    0x00619168
    0x01449BDB
    0x01449B55
    0x014499F0
    0x00619278
    0x01616B1D
    0x778E6359 in BaseThreadInitThunk
    0x77E87A94 in RtlGetAppContainerNamedObjectPath
    0x77E87A64 in RtlGetAppContainerNamedObjectPath

    cwxeditor_error.log
    2019-08-16 00:20:06 [Build: 2019-08-15 16:55:36 Debug (32-bit)] cwx\editor\gui\dwt\cwxeditor.d:111 46 - 48 - 52 - 54 - 56 - 58 - 60 - 102
    2019-08-16 00:20:06 [Build: 2019-08-15 16:55:36 Debug (32-bit)] cwx\editor\gui\dwt\cwxeditor.d:112 [Access Violation] , 0:

    (内容は上記と同じ?)

  3. k4nagatsuki repo owner

    pull request #565

    ありがとうございます。アクセス違反をキャッチできるようにしました。

  4. 暗黒 騎士 reporter

    32bit版では起動できるようになってました。対処ありがとうございます。

    除外された場合の扱いはどうなるのかと思ってシナリオのスキン選択のチョイスボックスをみたところ、空白で「()」と表示されており、選択できましたが、軽く見た限りでは特に問題はなさそうでした。(xmlが読めないだけで素材は認識+スキンが無い状態と同じ?)

  5. k4nagatsuki repo owner

    pull request #566

    おっと、リストに出現するのはバグです。

    どうもちゃんと対応できているというのは錯覚だったようです。

  6. 暗黒 騎士 reporter

    こちらの方でも上記のケース、64bit版で正常に立ち上がるのを確認しました。 8.0は軽くなったような気がしていましたが、XMLを取り使うライブラリを変えたということだったんですね。10倍はすごい…

  7. Log in to comment