codec2: fix rare native crash in buffer queue thread
Bug: 131800183
Test: atest CtsMediaTestCases -- --module-arg CtsMediaTestCases:size:small
Change-Id: I46a90751ff45577897bdcffbe912db12993a7467
diff --git a/media/codec2/sfplugin/C2OMXNode.cpp b/media/codec2/sfplugin/C2OMXNode.cpp
index d27fe32..78d221e 100644
--- a/media/codec2/sfplugin/C2OMXNode.cpp
+++ b/media/codec2/sfplugin/C2OMXNode.cpp
@@ -76,10 +76,11 @@
Mutexed<Jobs>::Locked jobs(mJobs);
nsecs_t nowNs = systemTime();
bool queued = false;
- for (auto it = jobs->queues.begin(); it != jobs->queues.end(); ++it) {
+ for (auto it = jobs->queues.begin(); it != jobs->queues.end(); ) {
Queue &queue = it->second;
if (queue.workList.empty()
|| nowNs - queue.lastQueuedTimestampNs < kIntervalNs) {
+ ++it;
continue;
}
std::shared_ptr<Codec2Client::Component> comp = queue.component.lock();
@@ -109,6 +110,7 @@
}
jobs.lock();
+ it = jobs->queues.upper_bound(comp);
queued = true;
}
if (queued) {