2017-05-23 1 views
0

私は現在、いくつかのアプリの安定性テストを行っていますが、次のメソッドを呼び出すときに問題に遭遇しています。この場合fdサーバクラッシュ(Android 6.0.1)後にrecvを呼び出そうとしているSIGBUS

vector<char> buffer(256); 
    received = recv(fd, buffer.data(), buffer.size(), MSG_NOSIGNAL); 

TCPソケットです。上記のコードが呼び出され、同時にソケットのサーバー側が一方向または他の方向に落ちると、私は次のシグナルを得る。

SIGBUS(シグナルSIGBUS:不正なアライメントが)

唯一のAndroid 6.0.1に起こるようですし、私が使用してSIGBUS '無視' に見えることはできません

signal(SIGBUS, SIG_IGN) 

他の誰かがこの問題を抱えていますが、これを解決するにはどうすればよいでしょうか?

答えて

0

おっと、私は問題を発見しました。 recvへの呼び出しとは何の関係もありません。このシグナルは、std::exceptionがAndroid 6.0.1でスローされているときに発生します。たとえそれがrecv呼び出しを責めたとしても。これは、私が使用しているC++ _ STL共有バージョンに起因するようです。解決策はgnustl_staticまたはgnustl_sharedに切り替えることでした。

関連する問題