Bufferpool: Check hidl call return value.
Hidl will crash if hidl call failed and return value was not checked.
Check hidl call return values.
Bug: 132182836
Change-Id: I910025a7b3c508b3c8f289a5286abbcc77e2d9b8
diff --git a/media/bufferpool/1.0/BufferPoolClient.cpp b/media/bufferpool/1.0/BufferPoolClient.cpp
index 41520ca..d712398 100644
--- a/media/bufferpool/1.0/BufferPoolClient.cpp
+++ b/media/bufferpool/1.0/BufferPoolClient.cpp
@@ -528,6 +528,10 @@
(void) outStatus;
(void) outBuffer;
});
+ if(!transResult.isOk()) {
+ ALOGD("sync from client %lld failed: bufferpool process died.",
+ (long long)mConnectionId);
+ }
}
mRemoteSyncLock.unlock();
}
diff --git a/media/bufferpool/2.0/AccessorImpl.cpp b/media/bufferpool/2.0/AccessorImpl.cpp
index 5260909..94cf006 100644
--- a/media/bufferpool/2.0/AccessorImpl.cpp
+++ b/media/bufferpool/2.0/AccessorImpl.cpp
@@ -261,13 +261,19 @@
mBufferPool.mInvalidation.onHandleAck(&observers, &invalidationId);
}
// Do not hold lock for send invalidations
+ size_t deadClients = 0;
for (auto it = observers.begin(); it != observers.end(); ++it) {
const sp<IObserver> observer = it->second;
if (observer) {
Return<void> transResult = observer->onMessage(it->first, invalidationId);
- (void) transResult;
+ if (!transResult.isOk()) {
+ ++deadClients;
+ }
}
}
+ if (deadClients > 0) {
+ ALOGD("During invalidation found %zu dead clients", deadClients);
+ }
}
bool Accessor::Impl::isValid() {
diff --git a/media/bufferpool/2.0/BufferPoolClient.cpp b/media/bufferpool/2.0/BufferPoolClient.cpp
index f907de5..342fef6 100644
--- a/media/bufferpool/2.0/BufferPoolClient.cpp
+++ b/media/bufferpool/2.0/BufferPoolClient.cpp
@@ -582,6 +582,10 @@
(void) outStatus;
(void) outBuffer;
});
+ if (!transResult.isOk()) {
+ ALOGD("sync from client %lld failed: bufferpool process died.",
+ (long long)mConnectionId);
+ }
}
mRemoteSyncLock.unlock();
}