問題タブ [tao]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
245 参照

multithreading - TAO 例外: TAO (2723|139817071765312) - ServerRequest::tao_send_reply_exception、例外応答を送信できませんでした

Linux で TAO の通知サービスを使用して、パブリッシュ/サブスクライブ サーバー ペアを実装しました。E1 と E2 の 2 つのサーバーがあります。E2 はニュース タイプ 1 をサブスクライブし、E1 は新しいタイプ 2 をサブスクライブしました。E1 はタイプ 1 のニュースを発行し、その後 E2 は何らかの計算を行い、E1 が取得するニュース タイプ 2 の結果を発行します。このサイクルは続きます。イベントは CosNotification::StructuredEvent タイプです。問題は、サーバーの両方の端末で何度か実行した後、システムが大量のエラー メッセージを表示することです。

TAO (2723|139817071765312) - ServerRequest::tao_send_reply_exception、例外応答を送信できませんでした

私は TAO (および CORBA) の初心者なので、この問題がスレッドによるものかどうかはわかりません。E1、E2、または両方の側で次の svc.conf を使用すると、イベント通信が非常に遅くなります。

静的 Server_Strategy_Factory "-ORBConcurrency 接続ごとのスレッド" 静的 Client_Strategy_Factory "-ORBWaitStrategy rw -ORBTransportMuxStrategy 排他的 -ORBConnectStrategy ブロック -ORBConnectionHandlerCleanup 1" 静的 Resource_Factory "-ORBFlushingStrategy ブロック"

上記のオプションをTAOのWebサイトからコピーして、接続ごとに1つのスレッドを作成し、スレッド制限に達したことがエラーの原因である可能性があると考えました。また、E1 と E2 の両方の側でコマンド ライン オプションとして -ORBConcurrency thread-per-connection を使用しようとしました。これにより、一部の CORBA 例外がサーバーの起動に失敗します。以下は、ServerRequest::tao_send_reply_exception を与えるシステムを実行するために使用しているコマンドです。しばらくしてから例外応答メッセージを送信できませんでした。

tao_cosnaming -ORBEndPoint iiop:localhost:12345 -ORBDaemon // ネーム サービスを開始する tao_cosnotification -ORBDebugLevel 10 -ORBInitRef NameService=corbaloc:iiop:localhost:12345/NameService -ORBDaemon // 通知サービスを開始する ./E1 corbaloc:iiop:localhost: 12345/NameService // E1 を開始します。/E2 corbaloc:iiop:localhost:12345/NameService // E2 を開始します

ここで何が起こっているのか、この問題に対処する方法について誰かが提案できますか?

0 投票する
1 に答える
68 参照

memory-management - 静的メモリは別のスレッドによってクリーンアップされていますか?

したがって、私のプロジェクトで起こったことは次のとおりです。

通常の方法で定義されたシングルトンがあります:

コンストラクターで、このシングルトン オブジェクトは CORBA ORB を初期化し、次のように別の (ブースト) スレッド (ラッパー) で実行を開始します。

CorbaController を破棄するときの通常の動作は、デストラクタで ORB の shutdown を呼び出し、run メソッドが orb.run() からジャンプして別のスレッドを終了することです。ただし、これは、CorbaController が明示的に削除されるか、ローカル変数またはクラス変数として定義された場合にのみ機能し、その後、ある時点で範囲を超えて実行されます。ただし、プログラムの最後にシングルトンの静的変数がクリーンアップされることに依存している場合、ACE/TAO lib は ORB シャットダウンで破棄されるオブジェクトのセマフォを取得できないため、orb.shutdown() はデッドロックします。

ここで何が問題なのか誰にも分かりますか? これはスレッドの問題でしょうか。つまり、シングルトンを構築するスレッド (およびアプリケーションのメイン関数も実行するスレッド) は、静的メモリ インスタンスをクリーンアップするスレッドとは異なりますか?

0 投票する
1 に答える
230 参照

corba - TAO イベント チャネルを特定のネーム サービスにバインドする方法

特定の ip:port 構成でリッスンするためにマルチキャストをオフにしてネーム サービスを開始したと仮定すると、どうすればイベント チャネルをこのネーム サービスにバインドできますか? ネットワークに複数のネーム サービスがある場合、イベント チャネルをバインドするネーム サービスをどのように決定できるのでしょうか。

チャネルが独自にネームサービスの場所を見つける場所でマルチキャストをオンにすると、正常に動作します。ただし、起動時にイベント サービスに通知する方法が見つかりませんでした。これはコード内から直接行うこともできますか?

0 投票する
1 に答える
633 参照

c++ - 最初の CORBA サーバーを (ACE/TAO ORB 実装を使用して) コンパイルしようとすると、リンカー エラーが発生するのはなぜですか?

私の最初の CORBA サーバー (ACE/TAO ORB 実装を使用) を実装しようとして、次の makefile を使用します。

コンパイル時に次のエラーが発生します。

コンパイルログ全体: http://pastebin.com/0KpLXixw

CentOS 6.6 でこのリポジトリのACE (6.2.8) と TAO(2.2.8) を使用しています

0 投票する
1 に答える
488 参照

c++ - Solaris プログラムがアイドル時に SIGABRT でクラッシュする

SIGABRT を使用して、solaris のプログラムの 1 つが突然クラッシュし、ログに痕跡が残りません。

以下はコアダンプです

プロセスがアイドル状態のときに突然クラッシュするため、コードに問題はないようです。

次に、syslog を確認したところ、次のメッセージが見つかりました。

なぜこれが起こるのか分かりますか?