Skip to content

Commit

Permalink
fix: change gin_wrappable to scoped crash key (#30608)
Browse files Browse the repository at this point in the history
Co-authored-by: VerteDinde <khammond@slack-corp.com>
  • Loading branch information
trop[bot] and VerteDinde committed Aug 18, 2021
1 parent f2275ec commit 4a7dd26
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
14 changes: 9 additions & 5 deletions patches/chromium/add_gin_wrappable_crash_key.patch
Expand Up @@ -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<WrappableBase>& data) {
WrappableBase* wrappable = data.GetParameter();
+
+#if !defined(MAS_BUILD)
+ WrapperInfo* info = static_cast<WrapperInfo*>(data.GetInternalField(0));
+ electron::crash_keys::SetCrashKeyForGinWrappable(info);
+ WrapperInfo* wrapperInfo = static_cast<WrapperInfo*>(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;
Expand Down
4 changes: 2 additions & 2 deletions shell/common/crash_keys.cc
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion shell/common/crash_keys.h
Expand Up @@ -24,7 +24,8 @@ void GetCrashKeys(std::map<std::string, std::string>* keys);

void SetCrashKeysFromCommandLine(const base::CommandLine& command_line);
void SetPlatformCrashKey();
void SetCrashKeyForGinWrappable(gin::WrapperInfo* info);

std::string GetCrashValueForGinWrappable(gin::WrapperInfo* info);

} // namespace crash_keys

Expand Down

0 comments on commit 4a7dd26

Please sign in to comment.