• ベストアンサー

基本的な質問です。

基本的な質問です。 あるLinux上で動作するアプリが数十時間放置すると、ハングアップしてしまう問題に直面してます。 複雑な構成なので、詳細は割愛させて下さい。 気になる点は、ある関数内でrecvfrom()を1秒に1回コールし、その受信バッファを共有メモリに コピーする処理です。 1点、確認したいのはシステムコールrecvfrom()のパラメータの受信バッファに対して、auto変数で も構わないかです。 サンプルプロなどを見る限り大丈夫かと思いますが、もしかしてグローバルな領域でないと駄目と言うケースはありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • HackerX
  • ベストアンサー率40% (2/5)
回答No.2

Linuxで自然死する多くの問題は、リソースの解放のし忘れです。 この様な問題は、すぐには死なないけど、何時も決まったタイミングで死にます。 例えば、ソケットやファイルのディスクリプタ―やスレッドのハンドルを作りっぱなしで解放しないとか? もし、pthreadを使っているならば、joinしないで、放置していないかを確認してください。1024回で生成しなくなります。初めから、detatch状態にするとかが良いかもしれません。 > 1点、確認したいのはシステムコールrecvfrom()のパラメータの受信バッファに対して、auto変数でも構わないかです。 かまわないと思いますが。 問題があるとすれば、放置しなくてもすぐに死ぬはずですから。 だから、定期的にディスクリプタ―を生成するところを疑ってみては如何でしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • 6yemon
  • ベストアンサー率69% (25/36)
回答No.1

受信バッファがauto変数ではいけないということはありません。 問題の原因は別のところにある可能性が高いと思います。

marugosi
質問者

お礼

ですよね。 年越してから考えます。 ありがとう、ございました。

すると、全ての回答が全文表示されます。

関連するQ&A