当服务器向客户端发送消息时,android本机活页夹崩溃
Posted
技术标签:
【中文标题】当服务器向客户端发送消息时,android本机活页夹崩溃【英文标题】:android native binder crash while server send msg to client 【发布时间】:2015-11-12 11:29:47 【问题描述】:我已经被这个错误困扰了好几天了。帮助我,如果你知道任何可能有帮助的事情。
我使用相机框架来完成我的硬件工作。大多数时候,它工作正常。但是,有时活页夹会杀死我服务器的主线程,因为条件“bwr.write_consumed
当客户端调用服务器并且服务器执行某些操作时会发生这种情况,然后返回,因为需要用户输入才能完成任务。然后在所有工作完成后,服务器将向客户端发送一条消息以通知他结果。
Q1:“bwr.write_consumed
Q2:这怎么可能?这是否意味着我的客户宕机了?
任何想法都可能会有所帮助。
谢谢
IPCThreadState.cpp::talkWithDriver()
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)
【问题讨论】:
我也有同样的问题。此行导致崩溃android.googlesource.com/platform/frameworks/native/+/jb-dev/…,因为它调用此android.googlesource.com/platform/frameworks/native/+/jb-dev/… 我终于找到了根本案例。这是因为我使用 fasync 转发消息(将通过活页夹)。如果安排了新任务,fasync 将挂起未完成的任务。问题可能在特定时间出现。 所以问题是待处理的任务?你的意思是AsyncTask
?
不,我在框架层工作。它确实是 fasync,而不是 asynctask !
【参考方案1】:
我终于得到了根本案例。这是因为我使用 fasync 转发消息(将通过活页夹)。如果安排了新任务,fasync 将挂起未完成的任务。问题可能在特定时间出现。
【讨论】:
以上是关于当服务器向客户端发送消息时,android本机活页夹崩溃的主要内容,如果未能解决你的问题,请参考以下文章