我正在尝试调试一个名为铁撬的DOM抓取包。不管怎样,当我跑的时候我会:
错误:[例外.“组件返回的失败代码: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) nsIServerSocket.asyncListen”ns结果:"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)“位置:"JS框架::chrome://crowbar/content/micbar.js ::onLoad :第375行”数据: no] 源文件:chrome://众包/内容/cibar.js 线: 375
基本上,asyncListen()
是在扔NS_ERROR_NOT_INITIALIZED
。这很奇怪,因为前面的代码行是对init()
的调用!我试着补充说:
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
就在呼叫asyncListen()
之前,它没有任何效果。这是安全问题吗?(顺便说一句,如果有关系,这是在Fedora盒上,作为root运行,并禁用selinux ).我也试过几个不同的端口号..。
发布于 2009-10-26 13:06:20
下面是源代码:http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsServerSocket.cpp#369
您确定init()
没有失败(这就是初始化mFD
的原因)吗?也许在你打电话之前有什么事是close
?
我会用构建调试XULRunner来构建调试版本和/或尝试从应用程序获得日志输出。不幸的是,我不知道代码中的LOG()
宏解析为什么,通常是NSPR测井,但是您必须猜测模块名,才能为这个模块启用日志记录。
Boris (一个mozilla核心开发人员) 他说
由于您正在调用init(),我看到从NS_ERROR_NOT_INITIALIZED中获取asyncListen的唯一其他方法是您正在运行的线程不再接受事件.所以有些奇怪的事情发生了。实际上是否涉及多个线程?
发布于 2009-12-08 12:43:44
我正面临着这个问题。我从CrowBar中派生出我的代码,并在Win 7上通过xulrunner 1.9.1运行它。
当我被网下绞尽脑汁时,我就会遇到这个问题。如果我在一个网络上,它是有效的。我确实有多个线程、多个xul元素。但是我相信我是在主线程上运行它(我不知道如何找到当前的线程),所以线程不应该是问题所在。
我还注意到,在nsSocketTransportService2.cpp线程中为空,因此Boris可能是对的。
NS_IMETHODIMP
nsSocketTransportService::Dispatch (nsIRunnable *event, PRUint32 flags)
{
LOG(("STS dispatch [%p]\n", event));
nsCOMPtr<nsIThread> thread = GetThreadSafely();
NS_ENSURE_TRUE(thread, NS_ERROR_NOT_INITIALIZED);
nsresult rv = thread->Dispatch(event, flags);
if (rv == NS_ERROR_UNEXPECTED) {
// Thread is no longer accepting events. We must have just shut it
// down on the main thread. Pretend we never saw it.
rv = NS_ERROR_NOT_INITIALIZED;
}
return rv;
}
希望这有助于解决这个问题。
谢谢哈文德
https://stackoverflow.com/questions/917298
复制相似问题