Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dfb5a2c8 authored by Myles Watson's avatar Myles Watson
Browse files

Bluetooth: Sleep before crashing when the HAL dies

The HAL crashing is an unrecoverable failure. Sometimes, the system
kills the HAL as part of a system shutdown, in which case Bluetooth
will also be killed. Sleeping for one second after being notified that
the HAL died is a way to make sure we don't report deaths that are a
result of the system killing the HAL out from under the Bluetooth
stack.

Bug: 284909883
Original bug: 277019596
Test: mma -j32
Test: Kill the hal, then Bluetooth with different timings
Change-Id: Ie5b3c2c9f47a11896812b1f07a7da664cc84f3db
parent 04eaaf4c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -417,9 +417,11 @@ class HciHalHidl : public HciHal {
      LOG_INFO("Using the AIDL interface");
      aidl_death_recipient_ =
          ::ndk::ScopedAIBinder_DeathRecipient(AIBinder_DeathRecipient_new([](void* cookie) {
            LOG_ERROR("Bluetooth HAL service died. Calling exit(0);");
            LOG_ERROR("The Bluetooth HAL service died. Dumping logs and crashing in 1 second.");
            common::StopWatch::DumpStopWatchLog();
            exit(0);
            // At shutdown, sometimes the HAL service gets killed before Bluetooth.
            std::this_thread::sleep_for(std::chrono::seconds(1));
            LOG_ALWAYS_FATAL("The Bluetooth HAL died.");
          }));

      auto death_link =