カードの作成でNo more handlesエラーが発生

Issue #1 resolved
k4nagatsuki repo owner created an issue

一部環境で発生。 メニューカード・キャスト・アイテム……問わずカードの作成で起きる模様。

  • Windows XP
  • 設定が初期状態でも発生する。
  • 画像を選択しなくても出る。
  • 旧バージョンならOK?
  • 背景画像はOK。ダイアログの問題ではない?
  • 発生した後しばらくするとフリーズ。どこかアクセス違反している?

考えうる可能性としては:

# 画像のスムージング拡大縮小アルゴリズムがおかしい。Highcolorの時にバグが出るのをRC2で修正した部分であるため、その時にバグが混入した可能性。 # リソース絡み。カードの台紙を表示しようとして問題が出る。 # フォント絡み。カード名の描画で問題が出る。 # カード名の入力は六文字に限定しているがその辺がおかしい # カードの解説は自動で改行が入ることになっているがその辺がおかしい

原因を絞り込む方法としては:

# カードのスムージングをOffにしてみても発生するか? # 設定でCardWirthPy.exeの場所を空にしてみて、CardWirthとは無関係なフォルダで同じ操作をしても発生するか?(そのようにした場合、カードの台紙は元々表示されない) # 貼り紙のタイトルを編集して表示イメージを見ると同じ問題が出るか? # これについてはすぐに確認する方法が無い。 # 貼り紙の解説を編集して表示イメージを出したりOKを押したりしても同じ問題が出るのか?

その他教えていただきたいのは:

  • XPはSPいくつか
  • 画面の色深度設定はどうなっているか?(画面のプロパティ→設定→画面の色 の所を確認)

Comments (18)

  1. Former user Account Deleted

    TO:k4nagatsuki殿 FM:191

    調べてみました。 使用ソフト(cwxeditor_debug.exe)

    2番のあたりから動作が怪しいです。

    1. カードのスムージングをOffにしてみても発生するか? >>エディタ設定の「カードのサイズ変更時にスムージングを行う」チェックを消して同手順を実行   >同現象が発生(以降の調査はチェック有りで実行)

    2. 設定でCardWirthPy.exeの場所を空にしてみて、CardWirthとは無関係なフォルダで同じ操作をしても発生するか?(そのようにした場合、カードの台紙は元々表示されない) >>cwxeditor_debug.exe単体のみで起動し実施。   >バグ発生せず。カード作成時に、真っ白なカードが作成される    >おまけ この後CardWirthPy.exeを指定すると同現象が発生     参考:指定した際のパス名「C:\CW\CardWirthPy\CardWirthPy.exe」

    3. 貼り紙のタイトルを編集して表示イメージを見ると同じ問題が出るか?    >問題なし。

    4. これについてはすぐに確認する方法が無い。 5. 貼り紙の解説を編集して表示イメージを出したりOKを押したりしても同じ問題が出るのか?    >張り紙の編集に問題なし。カードイメージも普通に表示される。

    その他教えていただきたいのは:

    • XPはSPいくつか    >SP3
    • 画面の色深度設定はどうなっているか?(画面のプロパティ→設定→画面の色 の所を確認)    >最高(32 ビット)

    以上です。よろしくお願いします。

  2. k4nagatsuki reporter

    特定できそうな予感…!

    原因特定するためのバージョンを準備してきますのでしばらくお待ちください。

  3. k4nagatsuki reporter

    お待たせしました。

    https://bitbucket.org/k4nagatsuki/cwxeditor/downloads/cwxeditor_debug2.zip

    たびたびお手数をおかけして本当に申し訳ないのですが、このバージョンで問題発生時にcwxeditor_error.logに出力された内容を教えていただけないでしょうか。(結構大量にログが出ると思いますが、No more handlesから何行か前くらいまでで大丈夫です)

    よろしくお願いします。

  4. Former user Account Deleted

    お待たせして申し訳ありません。ログになります。

    2011-04-02 21:10:10 transparent ok

    2011-04-02 21:10:10 smoothing ok

    2011-04-02 21:10:10 createImageData() ok

    2011-04-02 21:10:10 set _img

    2011-04-02 21:10:11 dialog open

    2011-04-02 21:10:13 create index

    2011-04-02 21:10:13 store undo data

    2011-04-02 21:10:13 get mat

    2011-04-02 21:10:13 get mat ok

    2011-04-02 21:10:13 createCardImageCommon()

    2011-04-02 21:10:13 createCardImageCommon() ok

    2011-04-02 21:10:13 setTitle

    2011-04-02 21:10:13 resize

    2011-04-02 21:10:13 resize() callListeners

    2011-04-02 21:10:13 resize() callListeners ok

    2011-04-02 21:10:13 createImage()

    2011-04-02 21:10:13 createImageData()

    2011-04-02 21:10:13 create GC

    2011-04-02 21:10:13 drawCardImage ok

    2011-04-02 21:10:13 appends ok

    2011-04-02 21:10:13 No more handles, , 0

  5. k4nagatsuki reporter

    ご迷惑をおかけしてるのはこっちの方なので申し訳ないなんてことはないですよ。 ご協力本当にありがたいです。

    で、確認させていただいたんですが、なにやらカード名の描画のところで落ちてますね。フォント絡みの設定が違うんだろうか?

    相当絞り込めてきましたが、核心に至るにはもう一度確認していただく必要がありそうです。

    このバージョンで見ていただけないでしょうか。

    https://bitbucket.org/k4nagatsuki/cwxeditor/downloads/cwxeditor_debug3.zip

    たぶん最後になると思います。最後になるといいな。最後になってくれ たのむ!

  6. k4nagatsuki reporter

    おっと書き忘れ。

    上のバージョンはエラーのダイアログが出ないかもしれないです。

    しかし同じ手順でcwxeditor_error.logにNo more handlesが出るはずなので、 その周辺のログを教えていただけないでしょうか。

    よろしくお願いします。

  7. Former user Account Deleted

    お疲れ様です。 エラーダイアログが出ずにカードが生成されました。 以下周辺ログとなります。

    2011-04-03 05:27:41 createCardImageCommon()

    2011-04-03 05:27:41 createCardImageCommon() ok

    2011-04-03 05:27:41 setTitle

    2011-04-03 05:27:41 resize

    2011-04-03 05:27:41 resize() callListeners

    2011-04-03 05:27:41 resize() callListeners ok

    2011-04-03 05:27:41 createImage()

    2011-04-03 05:27:41 createImageData()

    2011-04-03 05:27:41 create GC

    2011-04-03 05:27:41 drawCardImage ok

    2011-04-03 05:27:41 appends ok

    2011-04-03 05:27:41 create font

    2011-04-03 05:27:41 set font

    2011-04-03 05:27:41 set foreground

    2011-04-03 05:27:41 set text antialias

    2011-04-03 05:27:41 draw text

    2011-04-03 05:27:41 No more handles  ★

    2011-04-03 05:27:41 title ok

    2011-04-03 05:27:41 transparent ok

    2011-04-03 05:27:41 smoothing ok

    2011-04-03 05:27:41 createImageData() ok

    2011-04-03 05:27:41 set _img

    2011-04-03 05:27:41 createImage() ok

    2011-04-03 05:27:41 retoggle() ok

    2011-04-03 05:27:41 createMenuCardImage success

    2011-04-03 05:27:41 append card initialize

    2011-04-03 05:27:41 appendCard() success

  8. k4nagatsuki reporter

    原因箇所特定しました! まさかこんな所で落ちているとは……

    CardWirthのカード名は、基本的にテキストのアンチエイリアス(というかスムージングというか、中間色を使って滑らかに見せる描画方法)を使わずに描画しているのですが、

    1. アンチエイリアスをOFFにする
    2. カード名を描画
    3. アンチエイリアスの設定を元に戻す ← ここで落ちる

    という事になっているようです。

    正直どうしてこういう事になるのか、どういう環境の違いがあるのかさっぱり分からないのですが(Gdipの勉強せんとなぁ)、ともあれ対策は打てそうです。

    実際に打ってみたバージョンがこちら:

    https://bitbucket.org/k4nagatsuki/cwxeditor/downloads/cwxeditor_debug4.zip

    恐らく問題なく動くと思います。試していていただけないでしょうか(特にカード名がちゃんと表示されるかどうか)。問題が出ないようなら、これで一応問題解決としたいと思います。

  9. Former user Account Deleted

    試させていただきました。

    結果は  カードは作成できる。  しかし、カード名がカード上に表示されない。

    となりました。 ただし旧エディタで作成したシナリオを改造する場合は カードにカード名が表示されます。

    あくまで新規作成の場合のみの不具合ぽいですね。

  10. k4nagatsuki reporter

    むむむ……

    カード名を描画する部分はどこで作成されたデータであろうと共通なので、どうもその辺りが解せないのです。

    一度保存して再読込みした場合はどうなるでしょうか。

    あと、cwxeditor_error.logには何か出力されていますか?

  11. k4nagatsuki reporter

    あと、1つ思いついたことですが……

    CardWirthPyに付属しているIPAフォントが現象の原因になっている可能性があります。

    cwxeditorは、クラシックなシナリオを編集する際は、従来のCardWirthに合わせてMSゴシックなどのフォントを使用するようにしていますが、XML形式のシナリオの場合はCardWirthPyについてくるIPAフォントを使うようにしています。

    もしかしたら今まで誤読していたのかもしれないのですが、旧エディタで作成したシナリオを改造する時には大丈夫、というのは、カードの新規作成も含めて大丈夫ということでしょうか。

    逆に、CardWirthPyやcwxeditorでXML形式に変換したシナリオを読込んだ時は、問題が発生するのでしょうか。

    また、CardWirthPyでシナリオをプレイしようとしたとき、カード名などが正しく表示されないなどの現象は発生しないでしょうか。

    上記のようになるのであれば、IPAフォントが原因になっている、最悪ファイルが壊れている、という可能性が考えられます。

    そうでないなら、IPAフォントと環境の兼ね合いで現象が発生している、という可能性もあります。

    もしかすると、IPAフォントをWindowsのFontsフォルダにインストールするだけで解決したりするかもしれません。(cwxeditorとしては根本的解決になりませんが……)

  12. Former user Account Deleted

    お疲れ様です。 当方の検証結果となります。

    あと、cwxeditor_error.logには何か出力されていますか?

    >エリアのカード作成時には以下のような感じで座標らしきログしか残りません。

    2011-04-04 19:08:30 No more handles, org\eclipse\swt\graphics\GC.d, 576

    2011-04-04 19:10:12 No more handles, org\eclipse\swt\graphics\GC.d, 576

    もしかしたら今まで誤読していたのかもしれないのですが、旧エディタで作成したシナリオを改造する時には大丈夫、 というのは、カードの新規作成も含めて大丈夫ということでしょうか。

    >はい。改造時はエリア内や情報カードなどでもカードの新規作成が可能かつカード名が表示されます

    >ただしこれを保存し、作成されたXMLのwsmファイル読み込むと,

    >同現象が再現しカード名が表示されないカード作成しか行えません

    >(それ以上にマズイ動作があることがわかりました下記にて記載)

    逆に、CardWirthPyやcwxeditorでXML形式に変換したシナリオを読込んだ時は、問題が発生するのでしょうか。

    >新規作成したものを保存して再読み込みしてもカード名は表示されません。

    >さらに悪い話なのですが、

    >旧エディタのシナリオを「名前を付けて保存」して、

    >作成されたXMLのwsnファイルを読み込むと

    >カード画像からBGMまで全ての外部素材の関連が外れていて、カードやエリアの画像情報が全て消えています。

    >(デフォルトの画像すら関連ずけられていません)

    >CardWirthPyでプレイするとデフォルト音声以外全てBGMなし、カード画像は一切表示されない状態になります。

    また、CardWirthPyでシナリオをプレイしようとしたとき、カード名などが正しく表示されないなどの現象は発生しないでしょうか。

    >ゴブリンの洞窟をXML変換したシナだとカード名は表示されます。

    >ただし表示されるカード名は元々あったもののみで、

    >こちらからカード名を改ざんしてもちゃんと保存されていないのか、改ざん前のカード名が表示されています

    >またプレイ時は上記通りカード画像や使用されているBGMは表示されません。

    >ただデフォルトの戦闘BGMは鳴りました

    もしかすると、IPAフォントをWindowsのFontsフォルダにインストールするだけで解決したりするかもしれません。(cwxeditorとしては根本的解決になりませんが……)

    >以下のサイトのIPAフォント4種類をインストール、再起動後にエディタ操作を行いましたが、同じくカード名が表示されません

    http://ossipedia.ipa.go.jp/ipafont/index.html

    以上となります。よろしくお願い致します。

  13. k4nagatsuki reporter

    これはひどい……いつの間にかwsn変換がバグってますね。これはフォント以前の問題で、こちらでも一部再現しました。即刻修正します。RC版(笑)

    で、No more handlesのエラーなのですが、やはりフォント絡みのところで発生しているようです。となれば、IPAフォントを使わない設定を用意すればある程度解決するかもしれません。

    試しにIPAフォントを一切使わないバージョンを作ってみました。これでカードを作成するとどうなるか教えていただけないでしょうか。(cwxeditor_no_ipafont.exe)

    また、貼り紙等が問題なく編集できるということは、貼り紙のプレビューでは触っていないフォントのアンチエイリアス設定が最終的な原因になっているかもしれません。これを排除したバージョンも作ってみました。(cwxeditor_no_antialias.exe)

    https://bitbucket.org/k4nagatsuki/cwxeditor/downloads/cwxeditor_debug5.zip

    何度も何度も重いファイルを落とさせて動作検証をさせてしまい、まことに申し訳ありません。

  14. Former user Account Deleted

    お疲れ様です。

    結果ですが、バグは再現されず、カード名が完全に表示されました。

    エリア内のカード及び、キャストカードから情報カードまでOKです。

    二つの実行ファイルで試しましたが、どちらもバグは出ませんね。

    No more handlesのバグは解決したんじゃないでしょうか。ユーザレベルでは問題ないという認識です。

    以上となります。

  15. k4nagatsuki reporter

    IPAフォントとアンチエイリアス設定個別では何も起こらず、組み合わせると一部環境で問題が出るという事ですね。

    グラフィックボードとかが関係あるのかもしれませんが突き詰めても手に負えないのは明白……!

    とりあえずそちらの環境で問題が出なくなったのであれば、これで解決としてRC2.1辺りを出そうと思います。

    ご協力本当にありがとうございました!

  16. Log in to comment