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
This commit is contained in:
Tom Cherry 2020-12-15 06:38:55 -08:00
parent 5a611cb834
commit 94b1c57d93
2 changed files with 4 additions and 0 deletions

View file

@ -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;
}

View file

@ -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> {