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

Commit 94b1c57d authored by Tom Cherry's avatar Tom Cherry
Browse files

init: don't generate tombstones for expected test failures

The firmware_handler.HandleAbort and subcontext.RecoverAfterAbort
tests intentionally abort in the child process to ensure that
ueventd/init can recover if their child processes die.  This generates
a tombstone which causes confusion.  This change resets SIGABRT to
SIG_DFL right before the abort(), so that the child processes will
exit normally without generating a tombstone or writing a crash to
logcat.

Bug: 169771958
Bug: 175383788
Test: run the above tests and verify no stack traces are printed to
      logcat and no tombstones are generated.
Change-Id: Ica09548d1c7a766bf5d9ff2e26c9fd558e85c7c1
parent 5a611cb8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -79,6 +79,8 @@ TEST(firmware_handler, HandleAbort) {
}

int HandleAbort(int argc, char** argv) {
    // Since this is an expected failure, disable debuggerd to not generate a tombstone.
    signal(SIGABRT, SIG_DFL);
    abort();
    return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -202,6 +202,8 @@ BuiltinFunctionMap BuildTestFunctionMap() {

    // For RecoverAfterAbort
    auto do_cause_log_fatal = [](const BuiltinArguments& args) -> Result<void> {
        // Since this is an expected failure, disable debuggerd to not generate a tombstone.
        signal(SIGABRT, SIG_DFL);
        return Error() << std::string(4097, 'f');
    };
    auto do_generate_sane_error = [](const BuiltinArguments& args) -> Result<void> {