当服务器向客户端发送消息时,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本机活页夹崩溃的主要内容,如果未能解决你的问题,请参考以下文章

当用户在Android中使用XMPP离线时向用户发送通知

是否可以在flutter应用程序关闭时通过平台通道从android后台服务向flutter端发送消息

java客户端向单机版kafka发送消息没有接收到

如何通过活页夹将服务发送到 API 级别 14 的片段?

Android GCM 不向设备发送通知消息

Web服务端怎么发送消息给Android客户端了,Android客户端又怎么接收发来的消息了