[英]android native binder crash while server send msg to client
我已经遭受这个错误好几天了。 帮助我,如果你知道任何可能有帮助的东西。
我使用相机框架来让我的硬件工作。 大多数情况下,它都能正常工作。 但是,有时活页夹会杀死我服务器的主线程,因为“bwr.write_consumed < mOut.dataSize()”满足如下条件。
当客户端调用服务器并且服务器执行某些操作时会发生这种情况,然后由于需要用户输入来完成任务而返回。 然后在所有工作完成后,服务器将向客户端发送一条 msg 以通知他结果。
Q1:“bwr.write_consumed < mOut.dataSize()”是不是表示绑定器没有得到我发送给它的所有数据?
Q2:这怎么可能? 这是否意味着我的客户宕机了?
任何想法都可能有所帮助。
谢谢
if (err >= NO_ERROR) {
if (bwr.write_consumed > 0) {
if (bwr.write_consumed < mOut.dataSize())
mOut.remove(0, bwr.write_consumed);
else
mOut.setDataSize(0);
}
signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x3e80000082e
Stack frame #00 pc 000000000000d270 /system/lib64/libcutils.so (__android_log_assert+236)
Stack frame #01 pc 000000000002de34 /system/lib64/libbinder.so (android::Parcel::remove(unsigned long, unsigned long)+28)
Stack frame #02 pc 0000000000029a34 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+412)
Stack frame #03 pc 000000000002a394 /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+116)
Stack frame #04 pc 000000000002a628 /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+216)
Stack frame #05 pc 0000000000022348 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+64)
我终于得到了根本案例。 这是因为我使用 fasync 转发消息(这将通过活页夹)。 如果安排了新任务,fasync 将挂起未完成的任务。 问题可能发生在特定的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.