аварийное завершение работы связующего устройства Android при отправке сообщения MSG клиенту

Я страдал от этой ошибки в течение нескольких дней. Помоги мне, если знаешь что-нибудь, что может помочь.

Я использую камеру, чтобы получить аппаратную работу. В большинстве случаев это работает правильно. Однако иногда связыватель уничтожает основной поток моего сервера, потому что это условие «bwr.write_consumed < mOut.dataSize () «встречается, как показано ниже.

Это происходит, когда клиент вызывает сервер и сервер что-то делает, а затем возвращает, потому что для завершения задачи требуется ввод пользователя. Затем, после того, как вся работа завершена, сервер отправит сообщение клиенту, чтобы сообщить ему о результате.

Q1: «bwr.write_consumed» < mOut.dataSize () «означает, что связыватель не получает все данные, которые я ему отправляю?

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)

0

Решение

Я наконец-то получил рут кейс. Это потому, что я использую fasync для пересылки сообщений (которые будут проходить через связыватель). Fasync будет ожидать незавершенной задачи, если запланирована новая задача. Проблема может возникнуть в определенные сроки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector