diff --git a/debuggerd/debuggerd_test.cpp b/debuggerd/debuggerd_test.cpp index a5e2413d5..5a9d4f2a6 100644 --- a/debuggerd/debuggerd_test.cpp +++ b/debuggerd/debuggerd_test.cpp @@ -377,6 +377,8 @@ TEST_F(CrasherTest, tagged_fault_addr) { #if !defined(__aarch64__) GTEST_SKIP() << "Requires aarch64"; #endif + // HWASan crashes with SIGABRT on tag mismatch. + SKIP_WITH_HWASAN; int intercept_result; unique_fd output_fd; StartProcess([]() { @@ -408,6 +410,10 @@ TEST_F(CrasherTest, heap_addr_in_register) { #if defined(__i386__) GTEST_SKIP() << "architecture does not pass arguments in registers"; #endif + // The memory dump in HWASan crashes sadly shows the memory near the registers + // in the HWASan dump function, rather the faulting context. This is a known + // issue. + SKIP_WITH_HWASAN; int intercept_result; unique_fd output_fd; StartProcess([]() { @@ -486,6 +492,8 @@ TEST_P(GwpAsanCrasherTest, gwp_asan_uaf) { // instead of GWP-ASan. GTEST_SKIP() << "Skipped on MTE."; } + // Skip this test on HWASan, which will reliably catch test errors as well. + SKIP_WITH_HWASAN; GwpAsanTestParameters params = GetParam(); LogcatCollector logcat_collector; @@ -2021,6 +2029,9 @@ TEST_F(CrasherTest, fault_address_before_first_map) { // Verify that a fault address after the last map is properly handled. TEST_F(CrasherTest, fault_address_after_last_map) { + // This makes assumptions about the memory layout that are not true in HWASan + // processes. + SKIP_WITH_HWASAN; uintptr_t crash_uptr = untag_address(UINTPTR_MAX - 15); StartProcess([crash_uptr]() { ASSERT_EQ(0, crash_call(crash_uptr));