Check and dump the signal info for killed updater.
WEXITSTATUS only gives meaningful value if WIFEXITED is true. So we may see a slightly confusing message of "E:Error in /path/to/package (Status 0)" for a killed updater process (e.g. updater calling abort(3)). This CL dumps the signal number for such a case. Test: abort() in child process. Check the output. Change-Id: I72e6654a6499d65155085de658062efb9f1e36ac
This commit is contained in:
+9
-2
@@ -497,9 +497,16 @@ static int try_update_binary(const std::string& package, ZipArchiveHandle zip, b
|
||||
if (retry_update) {
|
||||
return INSTALL_RETRY;
|
||||
}
|
||||
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
|
||||
LOG(ERROR) << "Error in " << package << " (Status " << WEXITSTATUS(status) << ")";
|
||||
if (WIFEXITED(status)) {
|
||||
if (WEXITSTATUS(status) != EXIT_SUCCESS) {
|
||||
LOG(ERROR) << "Error in " << package << " (status " << WEXITSTATUS(status) << ")";
|
||||
return INSTALL_ERROR;
|
||||
}
|
||||
} else if (WIFSIGNALED(status)) {
|
||||
LOG(ERROR) << "Error in " << package << " (killed by signal " << WTERMSIG(status) << ")";
|
||||
return INSTALL_ERROR;
|
||||
} else {
|
||||
LOG(FATAL) << "Invalid status code " << status;
|
||||
}
|
||||
|
||||
return INSTALL_SUCCESS;
|
||||
|
||||
Reference in New Issue
Block a user