0

我目前正在做一些应用程序稳定性测试,并且在调用以下方法时遇到了问题;

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

在这种情况下fd是一个 TCP 套接字。当调用上面的代码并且同时套接字的服务器端以一种或另一种方式关闭时,我得到以下信号;

SIGBUS(信号SIGBUS:非法对齐)

它似乎只发生在 Android 6.0.1 上,我似乎无法“忽略”使用 SIGBUS

signal(SIGBUS, SIG_IGN)

有没有其他人遇到过这个问题,解决这个问题的最佳方法是什么?

4

1 回答 1

1

好的,我发现了这个问题。它与对recv. 该信号在 Android 6.0.1 上发生并且std::exception正在被抛出。即使它归咎于recv调用。这似乎是由我使用的 c++_shared STL 版本引起的。解决方案是切换到gnustl_staticgnustl_shared

于 2017-05-24T14:21:45.167 回答