From 86692bf177fa9b0b4ae7df7397ef443608a5773c Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 25 Aug 2023 03:56:06 +0800 Subject: [PATCH] v4l_encoder: fix error handling for poll (#29166) * fix error handling for poll * revert --------- Co-authored-by: Adeeb Shihadeh old-commit-hash: d54fa5c7f198af93474a73643b9363fc2a2043ba --- system/loggerd/encoder/v4l_encoder.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/system/loggerd/encoder/v4l_encoder.cc b/system/loggerd/encoder/v4l_encoder.cc index b5329bb8f..c6ee79226 100644 --- a/system/loggerd/encoder/v4l_encoder.cc +++ b/system/loggerd/encoder/v4l_encoder.cc @@ -86,7 +86,17 @@ void V4LEncoder::dequeue_handler(V4LEncoder *e) { while (!exit) { int rc = poll(&pfd, 1, 1000); - if (!rc) { LOGE("encoder dequeue poll timeout"); continue; } + if (rc < 0) { + if (errno != EINTR) { + // TODO: exit encoder? + // ignore the error and keep going + LOGE("poll failed (%d - %d)", rc, errno); + } + continue; + } else if (rc == 0) { + LOGE("encoder dequeue poll timeout"); + continue; + } if (env_debug_encoder >= 2) { printf("%20s poll %x at %.2f ms\n", e->encoder_info.filename, pfd.revents, millis_since_boot());