-ログ分析

sugaさんからいただいたログを見て考えました。

  • リファクタリング: パッケージのリネームで発生(1
    • java.lang.NullPointerException
    • at org.seasar.kijimuna.core.dicon.model.ContainerElement.findDefinition(ContainerElement.java:210)
    • 「element = childContainer.findDefinition(componentKey);」
  • リファクタリング: パッケージのリネームで発生(2
    • java.lang.NullPointerException
    • at org.seasar.kijimuna.core.util.MarkerUtils.deleteMarker(MarkerUtils.java:104)
    • 「resource.deleteMarkers(type, true, IResource.DEPTH_INFINITE);」
  • Java コードを書き換え、保存したときに発生。Eclipse が強制終了された。
    • org.eclipse.swt.SWTError: No more handles
    • at org.seasar.kijimuna.ui.KijimunaUI.getImage(KijimunaUI.java:83)
    • 「return descriptor.createImage();」

リファクタリング時の件は、二つともヌルポですから、コードの「childContainer」および「resource」がnullなのでしょう。関連する場所を調べて、nullチェックをすればよいのか、はたまたnullが来る状況が良くないのかを調べます。
保存時のものは原因がわかります。これはOutlineのアイコン表示のところなのですが、イメージのハンドラを払い出してしまっていて回収できていないところにあります。現在、イメージハンドラの管理はプラグインで行っているのですが、Outlineはイメージが多いのでおそらくハンドラの管理も独立して行わないといけないということなのだと推察されます。
早期に対応した0.6.12を出せるようにしたいと思います。
追記
対策を三つともしましたが、こちらで障害が再現できていないので、対策バージョンで同じ現象が出るまで待つ感じになってしまいます。理論的にはOKだと思うのですが、裏が取れてないのでコンプリートとはいえない。