Curl Global Community
NullDereferenceExceptionとpcurl - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: NullDereferenceExceptionとpcurl (/showthread.php?tid=647)



NullDereferenceExceptionとpcurl - okm - 10-31-2012

こんにちは。

ここのところ連投で申し訳ありません。

本日NullDereferenceExceptionが発生しました。
--------------------------------

NullDereferenceException: 非 null 値が要求されている箇所 (0x01FE8C04) に、null を使用しようとしています。

#0 in-compiler-process (0x0155ef97-943)
#1 import-package-in-compiler (0x015893df-281)
#2 import-package-with-loaded-packages-locked (0x01588f61-489)
#3 import-pkg-and-maybe-initialize-with-loaded-packages-locked (0x01588d0e-110)
#4 import-package-and-maybe-initialize (0x01587bf7-735)
#5 system-import-package (0x01e85165-333)
#6 new-instance-from-string (0x089a9120-276) at http://xxxx.xx.co.jp/SMAPCurl/layout/menu/load.pcurl:??
#7 [{proc} inside menuController.make-menu] (0x089768e7-219) at http://xxxx.xx.co.jp/SMAPCurl/layout/menu/load.pcurl:??
#8 closure_raw_handler (0x0155f423-27)
#9 EventTarget.handle-event (0x0315fb9e-174)
#10 GuiEventTarget.handle-event (0x0315fe2f-63)
-----------(省略)-----------

どうやらload.pcurlをインポート、コンパイルしている際に発生しているようなので、昨日変更したload.pcurlを前日までのものに戻しました。
例外は発生しなくなったように思われるのですが、pcurlで例外が発生した方いらっしゃいますか?

というのも、変更したpcurlに含まれる内容は
EmbeddedBrowserGraphicを利用してhtmlを表示させる処理を追加しただけで、
インポート処理部分は変更していないからです。
※変更したmenuパッケージは、メニュー画面の表示でして、メニュー画面から各画面が開くように(つまり各パッケージのload.pcurlをダイナミックロードで読み込むように)なっています。

pcurlの生成に失敗していたのでしょうか?
関係のありそうなものってなにかありますでしょうか?

よろしくお願いいたします。



RE: NullDereferenceExceptionとpcurl - kim - 10-31-2012

(10-31-2012, 11:44 AM)okm Wrote: ※変更したmenuパッケージは、メニュー画面の表示でして、メニュー画面から各画面が開くように(つまり各パッケージのload.pcurlをダイナミックロードで読み込むように)なっています。


この部分が怪しそうですね。


RE: NullDereferenceExceptionとpcurl - nmyzk - 10-31-2012

6行目と7行目の箇所を見ると、Curlのコンパイル云々というよりは
okmさんの利用されているフレームワークが原因に思われます。
「new-instance-from-string」という名前からも、ダイナミックインポートの箇所だと思うのですが

エラーの起点が「menuController.make-menu」ですので恐らくこういう現象ではないかと。

標準APIではなく、誰かが作成したプログラムに起因するようですので、下記をご一読戴いた後で、
エラーの原因がプログラム(load.pcurl内のソース)と予測されるのであればそのプログラムの作成者、
メニュー呼び出しの設定であればフレームワークの作成者に問い合わせてみてはいかがでしょうか?



1.menuController.make-menuでは設定ファイルかプログラムの設定値などを読んで
  メニュー項目を作成する。
2.メニューの作成は「new-instance-from-string」というプロシージャを利用しており、
  そのプロシージャは名前から、恐らくダイナミックインポートをしていると思われる。
3.ダイナミックインポートを行った際に、解析されるプログラム(load.pcurl)に何らかの不備があり、
  NullDereferenceExceptionを起こしている。
3’.あるいは、解析されるプログラムに不備はないものの、make-menuに渡されている値に不備があり、
  その結果としてload.pcurlの部分でNullDereferenceExceptionを起こしている。
4.しかし、そのエラーが何処でもキャッチされていないため、アプリケーション例外として発生している。

プログラムの中身が判りませんので大雑把な事しかかけませんが、ご容赦ください。


RE: NullDereferenceExceptionとpcurl - okm - 10-31-2012

kimさん、nmyzkさん
ありがとうございます。

わたしもmenuController.make-menuを疑っていたのですが、
実は変更したのはmenuUIというクラスの方で(EmbeddedBrowserGraphic追加)、
昨日以前のソースに戻してpcurl再生成、差し替えると問題の報告はなくなりました。
※menuパッケージ内は、menuUI.scurl menuController.scurl の2クラス。


ということで、pcurlがうまくいかなかったのかな、と怪しんでおります。


RE: NullDereferenceExceptionとpcurl - kim - 10-31-2012

pcurlファイルはバイナリなので中身が壊れているかわかりませんが、バイナリエディタを使ってpcurlを比較してみると 疑問解消に近づけるかもしれませんね。





RE: NullDereferenceExceptionとpcurl - heavybugtracker - 11-01-2012

同じコードのscurl版で発生しませんか?
pcurlファイルのキャッシュと関係ありませんか?
また、pcurlを作成時に、デバグ情報を含むようにデプロイしたら、エラーの個所が特定できると思います。


RE: NullDereferenceExceptionとpcurl - okm - 11-09-2012

kimさん、heavybugtrackerさん

ありがとうございます。

pcurlのキャッシュと関係がありそうな気がします・・。
もう少し調べてみます。