diff options
author | Roman Kiryanov <rkir@google.com> | 2023-09-19 13:44:33 -0700 |
---|---|---|
committer | Roman Kiryanov <rkir@google.com> | 2023-09-19 13:44:33 -0700 |
commit | b549ed40bb83bb03bf2d34c2b786c1befec2e402 (patch) | |
tree | 19695cdeb681a8091f90939d6fe8f0f37440f05e | |
parent | a980f84324f9eacc5980c0352703ff998275aeaa (diff) | |
download | goldfish-b549ed40bb83bb03bf2d34c2b786c1befec2e402.tar.gz |
Replace `abort()` with `LOG_ALWAYS_FATAL()` in the sensors HAL
for better crashes in logcat
Bug: 285191212
Test: atest CtsSensorTestCases
Change-Id: Ib9e39625b0c350b64d2c6b1debeebb5f4981fc73
Signed-off-by: Roman Kiryanov <rkir@google.com>
-rw-r--r-- | sensors/multihal_sensors.cpp | 50 | ||||
-rw-r--r-- | sensors/multihal_sensors_epoll.cpp | 22 |
2 files changed, 29 insertions, 43 deletions
diff --git a/sensors/multihal_sensors.cpp b/sensors/multihal_sensors.cpp index 1ce574a1..b4faceef 100644 --- a/sensors/multihal_sensors.cpp +++ b/sensors/multihal_sensors.cpp @@ -35,39 +35,32 @@ constexpr int64_t kMaxSamplingPeriodNs = 1000000000; MultihalSensors::MultihalSensors(std::unique_ptr<SensorsTransport> transport) : m_sensorsTransport(std::move(transport)) , m_batchInfo(getSensorNumber()) { - if (!m_sensorsTransport->Ok()) { - ALOGE("%s:%d: sensors transport is not opened", __func__, __LINE__); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(!m_sensorsTransport->Ok(), + "%s:%d: sensors transport is not opened", __func__, __LINE__); char buffer[64]; int len = snprintf(buffer, sizeof(buffer), "time:%" PRId64, ::android::elapsedRealtimeNano()); - if (m_sensorsTransport->Send(buffer, len) < 0) { - ALOGE("%s:%d: send for %s failed", __func__, __LINE__, m_sensorsTransport->Name()); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(m_sensorsTransport->Send(buffer, len) < 0, + "%s:%d: send for %s failed", __func__, __LINE__, + m_sensorsTransport->Name()); using namespace std::literals; const std::string_view kListSensorsCmd = "list-sensors"sv; - if (m_sensorsTransport->Send(kListSensorsCmd.data(), - kListSensorsCmd.size()) < 0) { - ALOGE("%s:%d: send for %s failed", __func__, __LINE__, m_sensorsTransport->Name()); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(m_sensorsTransport->Send(kListSensorsCmd.data(), + kListSensorsCmd.size()) < 0, + "%s:%d: send for %s failed", __func__, __LINE__, + m_sensorsTransport->Name()); len = m_sensorsTransport->Receive(buffer, sizeof(buffer) - 1); - if (len < 0) { - ALOGE("%s:%d: receive for %s failed", __func__, __LINE__, m_sensorsTransport->Name()); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(len < 0, "%s:%d: receive for %s failed", __func__, __LINE__, + m_sensorsTransport->Name()); + buffer[len] = 0; uint32_t hostSensorsMask = 0; - if (sscanf(buffer, "%u", &hostSensorsMask) != 1) { - ALOGE("%s:%d: Can't parse qemud response", __func__, __LINE__); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(sscanf(buffer, "%u", &hostSensorsMask) != 1, + "%s:%d: Can't parse qemud response", __func__, __LINE__); m_availableSensorsMask = hostSensorsMask & ((1u << getSensorNumber()) - 1); @@ -75,11 +68,9 @@ MultihalSensors::MultihalSensors(std::unique_ptr<SensorsTransport> transport) ALOGI("%s:%d: host sensors mask=%x, available sensors mask=%x", __func__, __LINE__, hostSensorsMask, m_availableSensorsMask); - if (!::android::base::Socketpair(AF_LOCAL, SOCK_STREAM, 0, - &m_callersFd, &m_sensorThreadFd)) { - ALOGE("%s:%d: Socketpair failed", __func__, __LINE__); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(!::android::base::Socketpair(AF_LOCAL, SOCK_STREAM, 0, + &m_callersFd, &m_sensorThreadFd), + "%s:%d: Socketpair failed", __func__, __LINE__); setAdditionalInfoFrames(); @@ -271,10 +262,9 @@ Return<Result> MultihalSensors::batch(const int32_t sensorHandle, char buffer[64]; const int len = snprintf(buffer, sizeof(buffer), "set-delay:%d", delayMs); - if (m_sensorsTransport->Send(buffer, len) < 0) { - ALOGE("%s:%d: send for %s failed", __func__, __LINE__, m_sensorsTransport->Name()); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(m_sensorsTransport->Send(buffer, len) < 0, + "%s:%d: send for %s failed", __func__, __LINE__, + m_sensorsTransport->Name()); } return Result::OK; diff --git a/sensors/multihal_sensors_epoll.cpp b/sensors/multihal_sensors_epoll.cpp index c8b5fd08..b896c6b6 100644 --- a/sensors/multihal_sensors_epoll.cpp +++ b/sensors/multihal_sensors_epoll.cpp @@ -41,10 +41,8 @@ int qemuSensortThreadRcvCommand(const int fd) { void MultihalSensors::qemuSensorListenerThread() { const int transportFd = m_sensorsTransport->Fd(); const unique_fd epollFd(epoll_create1(0)); - if (!epollFd.ok()) { - ALOGE("%s:%d: epoll_create1 failed", __func__, __LINE__); - ::abort(); - } + LOG_ALWAYS_FATAL_IF(!epollFd.ok(), "%s:%d: epoll_create1 failed", + __func__, __LINE__); epollCtlAdd(epollFd.get(), transportFd); epollCtlAdd(epollFd.get(), m_sensorThreadFd.get()); @@ -68,26 +66,24 @@ void MultihalSensors::qemuSensorListenerThread() { if (fd == transportFd) { if (ev_events & (EPOLLERR | EPOLLHUP)) { - ALOGE("%s:%d: epoll_wait: devFd has an error, ev_events=%x", - __func__, __LINE__, ev_events); - ::abort(); + LOG_ALWAYS_FATAL("%s:%d: epoll_wait: transportFd has an error, " + "ev_events=%x", __func__, __LINE__, ev_events); } else if (ev_events & EPOLLIN) { std::unique_lock<std::mutex> lock(m_mtx); parseQemuSensorEventLocked(&m_protocolState); } } else if (fd == m_sensorThreadFd.get()) { if (ev_events & (EPOLLERR | EPOLLHUP)) { - ALOGE("%s:%d: epoll_wait: threadsFd has an error, ev_events=%x", - __func__, __LINE__, ev_events); - ::abort(); + LOG_ALWAYS_FATAL("%s:%d: epoll_wait: threadFd has an error, " + "ev_events=%x", __func__, __LINE__, ev_events); } else if (ev_events & EPOLLIN) { const int cmd = qemuSensortThreadRcvCommand(fd); if (cmd == kCMD_QUIT) { return; } else { - ALOGE("%s:%d: qemuSensortThreadRcvCommand returned unexpected command, cmd=%d", - __func__, __LINE__, cmd); - ::abort(); + LOG_ALWAYS_FATAL("%s:%d: qemuSensortThreadRcvCommand " + "returned unexpected command, cmd=%d", + __func__, __LINE__, cmd); } } } else { |