Merge "Set system property if 'updatable' process crashes too frequently"

This commit is contained in:
Treehugger Robot 2019-01-07 23:55:25 +00:00 committed by Gerrit Code Review
commit 97212d36da

View file

@ -367,12 +367,19 @@ void Service::Reap(const siginfo_t& siginfo) {
return;
}
// If we crash > 4 times in 4 minutes, reboot into bootloader.
// If we crash > 4 times in 4 minutes, reboot into bootloader or set crashing property
boot_clock::time_point now = boot_clock::now();
if ((flags_ & SVC_CRITICAL) && !(flags_ & SVC_RESTART)) {
if (((flags_ & SVC_CRITICAL) || classnames_.count("updatable")) && !(flags_ & SVC_RESTART)) {
if (now < time_crashed_ + 4min) {
if (++crash_count_ > 4) {
LOG(FATAL) << "critical process '" << name_ << "' exited 4 times in 4 minutes";
if (flags_ & SVC_CRITICAL) {
// Aborts into bootloader
LOG(FATAL) << "critical process '" << name_ << "' exited 4 times in 4 minutes";
} else {
LOG(ERROR) << "updatable process '" << name_ << "' exited 4 times in 4 minutes";
// Notifies update_verifier and apexd
property_set("ro.init.updatable_crashing", "1");
}
}
} else {
time_crashed_ = now;