diff --git a/patches/chromium/add_gin_wrappable_crash_key.patch b/patches/chromium/add_gin_wrappable_crash_key.patch index 397a6063c807..eddd55499af0 100644 --- a/patches/chromium/add_gin_wrappable_crash_key.patch +++ b/patches/chromium/add_gin_wrappable_crash_key.patch @@ -15,28 +15,32 @@ This patch should not be upstreamed, and can be removed in Electron 15 and beyond once we identify the cause of the crash. diff --git a/gin/wrappable.cc b/gin/wrappable.cc -index fe07eb94a8e679859bba6d76ff0d6ee86bd0c67e..d0066fca501eae5be4177440b44dbecc8e34c897 100644 +index fe07eb94a8e679859bba6d76ff0d6ee86bd0c67e..ecb0aa2c4ec57e1814f4c94194e775440f4e35ee 100644 --- a/gin/wrappable.cc +++ b/gin/wrappable.cc -@@ -8,6 +8,10 @@ +@@ -8,6 +8,11 @@ #include "gin/object_template_builder.h" #include "gin/per_isolate_data.h" +#if !defined(MAS_BUILD) ++#include "components/crash/core/common/crash_key.h" +#include "electron/shell/common/crash_keys.h" +#endif + namespace gin { WrappableBase::WrappableBase() = default; -@@ -36,6 +40,12 @@ void WrappableBase::FirstWeakCallback( +@@ -36,6 +41,15 @@ void WrappableBase::FirstWeakCallback( void WrappableBase::SecondWeakCallback( const v8::WeakCallbackInfo& data) { WrappableBase* wrappable = data.GetParameter(); + +#if !defined(MAS_BUILD) -+ WrapperInfo* info = static_cast(data.GetInternalField(0)); -+ electron::crash_keys::SetCrashKeyForGinWrappable(info); ++ WrapperInfo* wrapperInfo = static_cast(data.GetInternalField(0)); ++ std::string location = electron::crash_keys::GetCrashValueForGinWrappable(wrapperInfo); ++ ++ static crash_reporter::CrashKeyString<32> crash_key("gin-wrappable-fatal.location"); ++ crash_reporter::ScopedCrashKeyString auto_clear(&crash_key, location); +#endif + delete wrappable; diff --git a/shell/common/crash_keys.cc b/shell/common/crash_keys.cc index 3595050be6c5..8dfaee22939e 100644 --- a/shell/common/crash_keys.cc +++ b/shell/common/crash_keys.cc @@ -185,7 +185,7 @@ void SetPlatformCrashKey() { #endif } -void SetCrashKeyForGinWrappable(gin::WrapperInfo* info) { +std::string GetCrashValueForGinWrappable(gin::WrapperInfo* info) { std::string crash_location; // Adds a breadcrumb for crashes within gin::WrappableBase::SecondWeakCallback @@ -254,7 +254,7 @@ void SetCrashKeyForGinWrappable(gin::WrapperInfo* info) { "Deleted kWrapperInfo does not match listed component. Please review " "listed crash keys."; - SetCrashKey("gin-wrappable-fatal.location", crash_location); + return crash_location; } } // namespace crash_keys diff --git a/shell/common/crash_keys.h b/shell/common/crash_keys.h index 164878ada7c5..e748984d5169 100644 --- a/shell/common/crash_keys.h +++ b/shell/common/crash_keys.h @@ -24,7 +24,8 @@ void GetCrashKeys(std::map* keys); void SetCrashKeysFromCommandLine(const base::CommandLine& command_line); void SetPlatformCrashKey(); -void SetCrashKeyForGinWrappable(gin::WrapperInfo* info); + +std::string GetCrashValueForGinWrappable(gin::WrapperInfo* info); } // namespace crash_keys