Thread Rating:
  • 331 Vote(s) - 2.9 Average
  • 1
  • 2
  • 3
  • 4
  • 5
NullDereferenceExceptionとpcurl
10-31-2012, 11:44 AM, (This post was last modified: 10-31-2012, 11:53 AM by okm.)
#1
NullDereferenceExceptionとpcurl
こんにちは。

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

本日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の生成に失敗していたのでしょうか?
関係のありそうなものってなにかありますでしょうか?

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


この部分が怪しそうですね。
10-31-2012, 12:59 PM,
#3
RE: NullDereferenceExceptionとpcurl
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.しかし、そのエラーが何処でもキャッチされていないため、アプリケーション例外として発生している。

プログラムの中身が判りませんので大雑把な事しかかけませんが、ご容赦ください。
10-31-2012, 01:55 PM,
#4
RE: NullDereferenceExceptionとpcurl
kimさん、nmyzkさん
ありがとうございます。

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


ということで、pcurlがうまくいかなかったのかな、と怪しんでおります。
10-31-2012, 03:59 PM,
#5
RE: NullDereferenceExceptionとpcurl
pcurlファイルはバイナリなので中身が壊れているかわかりませんが、バイナリエディタを使ってpcurlを比較してみると 疑問解消に近づけるかもしれませんね。


11-01-2012, 10:05 AM,
#6
RE: NullDereferenceExceptionとpcurl
同じコードのscurl版で発生しませんか?
pcurlファイルのキャッシュと関係ありませんか?
また、pcurlを作成時に、デバグ情報を含むようにデプロイしたら、エラーの個所が特定できると思います。
11-09-2012, 01:44 PM,
#7
RE: NullDereferenceExceptionとpcurl
kimさん、heavybugtrackerさん

ありがとうございます。

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

Forum Jump:


Users browsing this thread:

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('647')