Fix art-asan test mprotect errors

* Add -fsanitize-address-use-after-return=never
  in test/runtime cc defaults.
* Increase stack frame size limit.
* Avoid LOG(FATAL) in thread.cc.

Bug: 249586057
Test: presubmit; art-asan
Change-Id: I5728ea721e1699b9266dbb7265c9f4198de1e841
diff --git a/build/art.go b/build/art.go
index 383517b..7b06353 100644
--- a/build/art.go
+++ b/build/art.go
@@ -93,7 +93,7 @@
 	//       the debug version. So make the gap consistent (and adjust for the worst).
 	if len(ctx.Config().SanitizeDevice()) > 0 || len(ctx.Config().SanitizeHost()) > 0 {
 		cflags = append(cflags,
-			"-DART_STACK_OVERFLOW_GAP_arm=8192",
+			"-DART_STACK_OVERFLOW_GAP_arm=16384",
 			"-DART_STACK_OVERFLOW_GAP_arm64=16384",
 			"-DART_STACK_OVERFLOW_GAP_x86=16384",
 			"-DART_STACK_OVERFLOW_GAP_x86_64=20480")
@@ -153,7 +153,11 @@
 	if len(ctx.Config().SanitizeHost()) > 0 {
 		// art/test/137-cfi/cfi.cc
 		// error: stack frame size of 1944 bytes in function 'Java_Main_unwindInProcess'
-		hostFrameSizeLimit = 6400
+		// b/249586057, need larger stack frame for newer clang compilers
+		hostFrameSizeLimit = 10000
+		// cannot add "-fsanitize-address-use-after-return=never" everywhere,
+		// or some file like compiler_driver.o can have stack frame of 30072 bytes.
+		// cflags = append(cflags, "-fsanitize-address-use-after-return=never")
 	}
 	cflags = append(cflags,
 		fmt.Sprintf("-Wframe-larger-than=%d", hostFrameSizeLimit),
diff --git a/runtime/Android.bp b/runtime/Android.bp
index c473250..7bc685d 100644
--- a/runtime/Android.bp
+++ b/runtime/Android.bp
@@ -37,6 +37,12 @@
 libart_cc_defaults {
     name: "libart_nativeunwind_defaults",
     target: {
+        host: {
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
+        },
         android_arm: {
             // Arm 32 bit does not produce complete exidx unwind information
             // so keep the .debug_frame which is relatively small and does
@@ -441,6 +447,10 @@
                 "runtime_linux.cc",
                 "thread_linux.cc",
             ],
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
             shared_libs: [
                 "libz", // For adler32.
             ],
@@ -513,6 +523,12 @@
         "libz",
     ],
     target: {
+        host: {
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
+        },
         bionic: {
             whole_static_libs: [
                 "libasync_safe", // libunwindstack dependency on Bionic.
@@ -675,6 +691,14 @@
 
 art_cc_defaults {
     name: "libart-runtime-gtest-defaults",
+    target: {
+        host: {
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
+        },
+    },
     tidy_timeout_srcs: [
         "common_runtime_test.cc",
     ],
@@ -720,6 +744,14 @@
 
 art_cc_defaults {
     name: "art_runtime_tests_defaults",
+    target: {
+        host: {
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
+        },
+    },
     data: [
         ":art-gtest-jars-AllFields",
         ":art-gtest-jars-ErroneousA",
diff --git a/runtime/thread.cc b/runtime/thread.cc
index 547d638..c9a0a15 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -4640,9 +4640,11 @@
   VLOG(threads) << "Protecting stack at " << pregion;
   if (mprotect(pregion, kStackOverflowProtectedSize, PROT_NONE) == -1) {
     if (fatal_on_error) {
-      LOG(FATAL) << "Unable to create protected region in stack for implicit overflow check. "
+      // b/249586057, LOG(FATAL) times out
+      LOG(ERROR) << "Unable to create protected region in stack for implicit overflow check. "
           "Reason: "
           << strerror(errno) << " size:  " << kStackOverflowProtectedSize;
+      exit(1);
     }
     return false;
   }
diff --git a/test/Android.bp b/test/Android.bp
index f68a498..3830f9a 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -58,7 +58,11 @@
             cflags: ["-Wno-frame-larger-than="],
         },
         host: {
-            cflags: ["-Wno-frame-larger-than="],
+            cflags: [
+                "-Wno-frame-larger-than=",
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
         },
     },
 }
@@ -220,6 +224,10 @@
             shared_libs: [
                 "libziparchive",
             ],
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
         },
     },
 }
@@ -343,6 +351,12 @@
         "libgtest_isolated",
     ],
     target: {
+        host: {
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
+        },
         android32: {
             cflags: ["-DART_TARGET_NATIVETEST_DIR=/data/nativetest/art"],
         },
@@ -417,6 +431,12 @@
         "liblog",
     ],
     target: {
+        host: {
+            cflags: [
+                "-fsanitize-address-use-after-return=never",
+                "-Wno-unused-command-line-argument",
+            ],
+        },
         darwin: {
             enabled: false,
         },