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

Commit 7285c0d1 authored by Peter Collingbourne's avatar Peter Collingbourne
Browse files

tombstoned: Rename proto tombstone before text tombstone.

Because the log message "Tombstone written to: $NAME" is written
before renaming the proto tombstone, it is possible that a tool that
automatically downloads new proto tombstones by watching for this
log message will fail to download the tombstone. For the tool that
I am developing, this occurs < 0.1% of the time. Fix the issue by
renaming the proto tombstone first.

Bug: 328531087
Change-Id: I5b751585f2fce897ca7eb76c0466a0c33a93d851
parent d49456a1
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -456,6 +456,14 @@ static void crash_completed(borrowed_fd sockfd, std::unique_ptr<Crash> crash) {

  CrashArtifactPaths paths = queue->get_next_artifact_paths();

  if (crash->output.proto && crash->output.proto->fd != -1) {
    if (!paths.proto) {
      LOG(ERROR) << "missing path for proto tombstone";
    } else {
      rename_tombstone_fd(crash->output.proto->fd, queue->dir_fd(), *paths.proto);
    }
  }

  if (rename_tombstone_fd(crash->output.text.fd, queue->dir_fd(), paths.text)) {
    if (crash->crash_type == kDebuggerdJavaBacktrace) {
      LOG(ERROR) << "Traces for pid " << crash->crash_pid << " written to: " << paths.text;
@@ -466,14 +474,6 @@ static void crash_completed(borrowed_fd sockfd, std::unique_ptr<Crash> crash) {
      LOG(ERROR) << "Tombstone written to: " << paths.text;
    }
  }

  if (crash->output.proto && crash->output.proto->fd != -1) {
    if (!paths.proto) {
      LOG(ERROR) << "missing path for proto tombstone";
    } else {
      rename_tombstone_fd(crash->output.proto->fd, queue->dir_fd(), *paths.proto);
    }
  }
}

static void crash_completed_cb(evutil_socket_t sockfd, short ev, void* arg) {