From d6e861da8bdbfccba6f3cb08084a8bd78d249132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Bostr=C3=B6m?= Date: Fri, 29 Jul 2022 13:44:21 -0700 Subject: [PATCH] Use WriteFatalLog with overrides under Chromium MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This replaces the former WriteFatalLogAndAbort function with the two new WriteFatalLog functions that're already submitted as overrides in Chromium. The default implementations of these are not defined under WEBRTC_CHROMIUM_BUILD. Bug: chromium:1216177 Change-Id: I207e1f96f14094d742a51849f4fa6b4f1022333e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/269780 Reviewed-by: Mirko Bonadei Commit-Queue: Peter Boström Cr-Commit-Position: refs/heads/main@{#37652} --- rtc_base/BUILD.gn | 4 ++++ rtc_base/checks.cc | 47 +++++++++++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index e74b85fcbf..17e7a0fd3a 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -464,6 +464,10 @@ rtc_library("checks") { "system:inline", "system:rtc_export", ] + if (build_with_chromium) { + sources += [ "../../webrtc_overrides/rtc_base/checks_overrides.cc" ] + deps += [ "//base" ] + } absl_deps = [ "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/strings", diff --git a/rtc_base/checks.cc b/rtc_base/checks.cc index b22dbd45d6..e732a2659d 100644 --- a/rtc_base/checks.cc +++ b/rtc_base/checks.cc @@ -39,21 +39,6 @@ namespace { -RTC_NORETURN void WriteFatalLogAndAbort(absl::string_view output) { -#if defined(WEBRTC_ANDROID) - std::string output_str(output); - __android_log_print(ANDROID_LOG_ERROR, RTC_LOG_TAG_ANDROID, "%s\n", - output_str.c_str()); -#endif - fflush(stdout); - fwrite(output.data(), output.size(), 1, stderr); - fflush(stderr); -#if defined(WEBRTC_WIN) - DebugBreak(); -#endif - abort(); -} - #if defined(__GNUC__) __attribute__((__format__(__printf__, 2, 3))) #endif @@ -77,6 +62,30 @@ void AppendFormat(std::string* s, const char* fmt, ...) { namespace rtc { namespace webrtc_checks_impl { +#if !defined(WEBRTC_CHROMIUM_BUILD) +RTC_NORETURN void WriteFatalLog(absl::string_view output) { +#if defined(WEBRTC_ANDROID) + std::string output_str(output); + __android_log_print(ANDROID_LOG_ERROR, RTC_LOG_TAG_ANDROID, "%s\n", + output_str.c_str()); +#endif + fflush(stdout); + fwrite(output.data(), output.size(), 1, stderr); + fflush(stderr); +#if defined(WEBRTC_WIN) + DebugBreak(); +#endif + abort(); +} + +RTC_NORETURN void WriteFatalLog(const char* file, + int line, + absl::string_view output) { + WriteFatalLog(output); +} + +#endif // !defined(WEBRTC_CHROMIUM_BUILD) + #if RTC_CHECK_MSG_ENABLED // Reads one argument from args, appends it to s and advances fmt. // Returns true iff an argument was sucessfully parsed. @@ -167,7 +176,7 @@ RTC_NORETURN void FatalLog(const char* file, va_end(args); - WriteFatalLogAndAbort(s); + WriteFatalLog(file, line, s); } #else // RTC_CHECK_MSG_ENABLED RTC_NORETURN void FatalLog(const char* file, int line) { @@ -180,7 +189,7 @@ RTC_NORETURN void FatalLog(const char* file, int line) { "# Check failed.\n" "# ", file, line, LAST_SYSTEM_ERROR); - WriteFatalLogAndAbort(s); + WriteFatalLog(file, line, s); } #endif // RTC_CHECK_MSG_ENABLED @@ -195,7 +204,7 @@ RTC_NORETURN void UnreachableCodeReached(const char* file, int line) { "# last system error: %u\n" "# ", file, line, LAST_SYSTEM_ERROR); - WriteFatalLogAndAbort(s); + WriteFatalLog(file, line, s); } #else // !RTC_DCHECK_IS_ON @@ -209,7 +218,7 @@ RTC_NORETURN void UnreachableCodeReached() { "# last system error: %u\n" "# ", LAST_SYSTEM_ERROR); - WriteFatalLogAndAbort(s); + WriteFatalLog(s); } #endif // !RTC_DCHECK_IS_ON