簡體   English   中英

服務器崩潰后嘗試在套接字上調用recv時,SIGBUS(Android 6.0.1)

[英]SIGBUS when trying to call recv on socket after server crash (Android 6.0.1)

我目前正在進行一些應用程序穩定性測試,並且在調用以下方法時遇到問題;

    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)

還有其他人遇到過這個問題嗎?解決這個問題的最佳方法是什么?

好的,我發現了問題所在。 它與recv的調用無關。 該信號在Android 6.0.1上引發and std::exception時發生。 即使它歸咎於recv電話。 這似乎是由我使用的c ++ _ shared STL版本引起的。 解決方案是切換到gnustl_staticgnustl_shared

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM