diff options
Diffstat (limited to 'debuggerd/debuggerd_test.cpp')
-rw-r--r-- | debuggerd/debuggerd_test.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/debuggerd/debuggerd_test.cpp b/debuggerd/debuggerd_test.cpp index dfb7a6a7c..e2ea480e5 100644 --- a/debuggerd/debuggerd_test.cpp +++ b/debuggerd/debuggerd_test.cpp @@ -29,6 +29,7 @@ #include <regex> #include <thread> +#include <android/fdsan.h> #include <android/set_abort_message.h> #include <android-base/file.h> @@ -801,6 +802,31 @@ TEST_F(CrasherTest, competing_tracer) { AssertDeath(SIGABRT); } +TEST_F(CrasherTest, fdsan_warning_abort_message) { + int intercept_result; + unique_fd output_fd; + + StartProcess([]() { + android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_WARN_ONCE); + unique_fd fd(open("/dev/null", O_RDONLY | O_CLOEXEC)); + if (fd == -1) { + abort(); + } + close(fd.get()); + _exit(0); + }); + + StartIntercept(&output_fd); + FinishCrasher(); + AssertDeath(0); + FinishIntercept(&intercept_result); + ASSERT_EQ(1, intercept_result) << "tombstoned reported failure"; + + std::string result; + ConsumeFd(std::move(output_fd), &result); + ASSERT_MATCH(result, "Abort message: 'attempted to close"); +} + TEST(crash_dump, zombie) { pid_t forkpid = fork(); |