am 0fd6750e: am fdadb420: am b52a48af: Merge "Log stack even if tombstone cannot be created."

* commit '0fd6750ed3116d29cc49cc721fbbd38b3033aa0f':
  Log stack even if tombstone cannot be created.
This commit is contained in:
Christopher Ferris 2014-05-05 23:37:12 +00:00 committed by Android Git Automerger
commit 8a1469083d
1 changed files with 17 additions and 10 deletions

View File

@ -730,33 +730,40 @@ char* engrave_tombstone(pid_t pid, pid_t tid, int signal, int original_si_code,
uintptr_t abort_msg_address, bool dump_sibling_threads, bool quiet,
bool* detach_failed, int* total_sleep_time_usec) {
if ((mkdir(TOMBSTONE_DIR, 0755) == -1) && (errno != EEXIST)) {
LOG("failed to create %s: %s\n", TOMBSTONE_DIR, strerror(errno));
LOG("failed to create %s: %s\n", TOMBSTONE_DIR, strerror(errno));
}
if (chown(TOMBSTONE_DIR, AID_SYSTEM, AID_SYSTEM) == -1) {
LOG("failed to change ownership of %s: %s\n", TOMBSTONE_DIR, strerror(errno));
LOG("failed to change ownership of %s: %s\n", TOMBSTONE_DIR, strerror(errno));
}
if (selinux_android_restorecon(TOMBSTONE_DIR, 0) == -1) {
*detach_failed = false;
return NULL;
int fd = -1;
char* path = NULL;
if (selinux_android_restorecon(TOMBSTONE_DIR, 0) == 0) {
path = find_and_open_tombstone(&fd);
} else {
LOG("Failed to restore security context, not writing tombstone.\n");
}
int fd;
char* path = find_and_open_tombstone(&fd);
if (!path) {
if (fd < 0 && quiet) {
LOG("Skipping tombstone write, nothing to do.\n");
*detach_failed = false;
return NULL;
}
log_t log;
log.tfd = fd;
log.amfd = activity_manager_connect();
// Preserve amfd since it can be modified through the calls below without
// being closed.
int amfd = activity_manager_connect();
log.amfd = amfd;
log.quiet = quiet;
*detach_failed = dump_crash(&log, pid, tid, signal, original_si_code, abort_msg_address,
dump_sibling_threads, total_sleep_time_usec);
close(log.amfd);
// Either of these file descriptors can be -1, any error is ignored.
close(amfd);
close(fd);
return path;
}