2つのシステムで同じテストコード(サーバー-クライアント)をテストしました。1つはSIGPIPEを取得していますが、もう1つはSIGPIPEを取得していません。
テストシナリオは次のようなものです。
クライアント
- サーバーに接続する
- サーバーからデータを受信する
- データを送る
- ソケットを閉じます
サーバ
- サーバーからの接続を受け入れる
- クライアントにデータを送信する
- データを受信する
- データを送る
- ソケットを閉じます
1つのシステム(同じシステムで実行されているクライアントとサーバー)では、SIGPIPEはクライアント側またはサーバー側でランダムに発生しています。
ただし、別のシステムでは、この問題は同じテストコードでは発生していません。
壊れたパイプはTCP設定と関係があるのだろうか。