Log stack even if tombstone cannot be created.

Bug: 14498701

(cherry picked from commit c5bb49a138)

Conflicts:
	debuggerd/tombstone.cpp

Change-Id: I888b3d683c3b880357b0b24f9204a9cca3e8f3be
This commit is contained in:
Christopher Ferris 2014-05-05 11:16:47 -07:00
parent a77bef47de
commit 290efd244d

View file

@ -742,26 +742,33 @@ char* engrave_tombstone(
mkdir(TOMBSTONE_DIR, 0755);
chown(TOMBSTONE_DIR, AID_SYSTEM, AID_SYSTEM);
if (selinux_android_restorecon(TOMBSTONE_DIR) == -1) {
*detach_failed = false;
return NULL;
int fd = -1;
char* path = NULL;
if (selinux_android_restorecon(TOMBSTONE_DIR) == 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, 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;
}