Хелп, плз!

сделал так:
[scriptable, uuid()]
interface ICallBack : nsISupports
{
  void OnFinish(in long res);
  void OnProcess(in long res);
};


interface ISpecialThing : nsISupports
{
  attribute ICallBack cb;
};

class CSpecialThing : public ISpecialThing{
   void DoJavaProcess(PRInt32 p);
   ICallBack *cb;
}

CSpecialThing::DoJavaProcess(PRInt32 p){
   if(p==1)
      cb->OnFinish(1);
   else cb->OnProcess(1);
}

var listener = {
  OnProcess : function(res) {
      alert(res);
  },
  OnFinish : function(res) {
      alert(res);
  }
}
doc = window.document;
try {
   netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
   const cid = "@starkravingfinkle.org/specialthing;1";
   obj = Components.classes[cid].createInstance();
   obj = obj.QueryInterface(Components.interfaces.ISpecialThing);
   obj.cb = listener;
}
catch (err) {
   alert(err);
   exit();
}   

и внутри XPCOM пытаюсь вызвать DoJavaProcess
DoJavaProcess(1);

когда дохожу до строчки       cb->OnFinish(1);
падает ФФ

Как послать событие из XPCOM в яву??

А какое сообщение, и в какую яву ? Если уведомление в javascript, тогда с помощью http://www.xulplanet.com/references/xpc … rvice.html.
Каждый подписавшийся скрипт получит управление после notifyObservers.