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

Commit 1d928ca8 authored by Shrinidhi Hegde's avatar Shrinidhi Hegde
Browse files

Update native watchdog to be triggered after 20 restarts instead of 4.

The native watchdog performs a complete reboot on 5 system server
restarts even before packageWatchdog/RescueParty can perform any of the
mitigations. Increasing the thrsehold at which native watchdog kicks in
to 20 instad of 4.

Test: manual
Bug: 291137901
Change-Id: I9166f6555020e8bf26cc86994b13c53745a9934b
parent ea88c191
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -352,14 +352,19 @@ void Service::Reap(const siginfo_t& siginfo) {
    }
#endif

    // If we crash > 4 times in 'fatal_crash_window_' minutes or before boot_completed,
    // If we crash > 20 times in 'fatal_crash_window_' minutes or before boot_completed,
    // reboot into bootloader or set crashing property
    // Wait for 20 crashes so RescueParty has a chance to perform the
    // mitigations. RescueParty finishes all its mitigations at 15 system_server
    // restarts. If it is still crashing after all rescue party mitigations,
    // reboot into bootloader.
    constexpr int crash_count_threshold = 20;
    boot_clock::time_point now = boot_clock::now();
    if (((flags_ & SVC_CRITICAL) || is_process_updatable) && !(flags_ & SVC_RESTART) &&
        !was_last_exit_ok_) {
        bool boot_completed = GetBoolProperty("sys.boot_completed", false);
        if (now < time_crashed_ + fatal_crash_window_ || !boot_completed) {
            if (++crash_count_ > 4) {
            if (++crash_count_ > crash_count_threshold) {
                auto exit_reason = boot_completed ?
                    "in " + std::to_string(fatal_crash_window_.count()) + " minutes" :
                    "before boot completed";