0

crowbarと呼ばれるパッケージ化されたDOMスクレイピングをデバッグしようとしています。とにかく、私が実行すると、次のようになります。

エラー:[例外... "コンポーネントが失敗コードを返しました:0xc1f30001(NS_ERROR_NOT_INITIALIZED)[nsIServerSocket.asyncListen]" nsresult: "0xc1f30001(NS_ERROR_NOT_INITIALIZED)"場所:"JSフレーム::chrome://crowbar/content/crowbar.js: :onLoad ::行375"データ:いいえ]
ソースファイル:chrome://crowbar/content/crowbar.js
行:375

基本的に、asyncListen()投げてNS_ERROR_NOT_INITIALIZEDいます。これの直前のコード行はinit()!の呼び出しであるため、これは奇妙です。追加してみました:

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

呼び出しの直前で、asyncListen()効果はありませんでした。これはセキュリティの問題ですか?(ところで、問題になる場合は、これはルートとして実行され、selinuxが無効になっているFedoraボックス上にあります)...私はいくつかの異なるポート番号も試しました...

4

2 に答える 2

1

ソースコードは次のとおりです:http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsServerSocket.cpp#369

init()失敗しませんか(それが初期化されます)mFD?多分closeあなたの電話の前に何かがそれですか?

デバッグXULRunnerをビルドして、デバッグバージョンをビルドしたり、アプリからログ出力を取得したりします。残念ながら、LOG()そのコードのマクロが何に解決されるかはわかりません。通常はNSPRロギングですが、このモジュールのロギングを有効にするには、モジュール名を推測する必要があります。

Boris Zbarsky(1人のMozillaコア開発者)は言います

init()を呼び出しているので、asyncListenからNS_ERROR_NOT_INITIALIZEDを取得する他の唯一の方法は、実行中のスレッドがイベントを受け入れないようにすることです...したがって、何か奇妙なことが起こっています。実際、複数のスレッドが関係していますか?
于 2009-10-26T13:06:20.127 に答える
0

私もこの問題に直面しています。コードをCrowBarから派生させ、Win7でxulrunner1.9.1を介して実行しました。

ネットから切断すると問題が発生します。私がネットワーク上にいる場合、それは機能します。私は複数のスレッド[複数のxul要素]を持っています。しかし、私はそれをメインスレッドで実行していると信じています(ただし、現在のスレッドを見つける方法はわかりません)。したがって、スレッドがリッスンしていないことは問題ではありません。

また、nsSocketTransportService2.cppではスレッドがnullになるため、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;
}

これが問題の特定に役立つことを願っています。

ありがとうharvinder

于 2009-12-08T12:43:44.430 に答える