ckerr

#51420: fix: try clearing InspectableWebContents delegate earlier

Merged
Created: Apr 30, 2026, 4:34:03 PM
Merged: May 4, 2026, 1:38:43 PM
4 comments
Target: main

Description of Change

Fix a crash that appears to be a DevTools callback to DevToolsOpened() while the WebContents teardown is underway.

This PR re-applies 5bd2938 / #49406: the first thing the WebContents destructor does is to clear the IWCV's delegate. That approach was accidentaly weakened by 9f9a5b8 / #50032 which added new code to the beginning of the destructor before clearing the delgate.

Sample crash trace seen today here:

Received signal 11 SEGV_MAPERR 0000000001b8
 0 0x55b70ad996b2 base::debug::CollectStackTrace() [../../base/debug/stack_trace_posix.cc:1048:7]
 1 0x55b70ad81021 base::debug::StackTrace::StackTrace() [../../base/debug/stack_trace.cc:280:20]
 2 0x55b70ad9906f base::debug::(anonymous namespace)::StackDumpSignalHandler() [../../base/debug/stack_trace_posix.cc:483:3]
 3 0x7fe851b19520 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x4251f)
 4 0x55b70ac8c60d base::internal::WeakReference::IsValid() [../../base/memory/weak_ptr.cc:74:0]
 5 0x55b7041101e8 electron::api::WebContents::DevToolsOpened() [../../base/memory/weak_ptr.h:238:32]
 6 0x55b7041f5141 electron::InspectableWebContents::LoadCompleted() [../../electron/shell/browser/ui/inspectable_web_contents.cc:632:27]
 7 0x55b704033be3 base::RepeatingCallback<>::Run() [../../base/functional/callback.h:343:12]
 8 0x55b712272d9a (anonymous namespace)::ParseAndHandle<>() [../../chrome/browser/devtools/devtools_embedder_message_dispatcher.cc:320:13]
 9 0x55b712272ec2 base::internal::Invoker<>::Run() [../../base/functional/bind_internal.h:673:12]
10 0x55b712272cf3 base::RepeatingCallback<>::Run() [../../base/functional/callback.h:343:12] 11 0x55b712272c36 DispatcherImpl::Dispatch() [../../chrome/browser/devtools/devtools_embedder_message_dispatcher.cc:389:48] 12 0x55b7041f89c6 electron::InspectableWebContents::HandleMessageFromDevToolsFrontend() [../../electron/shell/browser/ui/inspectable_web_contents.cc:962:33]

Checklist

Release Notes

Notes: Fixed a potential race condition crash when closing DevTools.

Backports

41-x-y
Merged
PR Number
#51474
Merged At
May 4, 2026, 4:06:00 PM
Released In
v41.5.1
Release Date
May 8, 2026, 11:00:22 AM
42-x-y
Merged
PR Number
#51473
Merged At
May 5, 2026, 3:43:57 PM
Released In
v42.0.1
Release Date
May 8, 2026, 11:00:23 AM

Semver Impact

Major
Breaking changes
Minor
New features
Patch
Bug fixes
None
Docs, tests, etc.

Semantic Versioning helps users understand the impact of updates:

  • Major (X.y.z): Breaking changes that may require code modifications
  • Minor (x.Y.z): New features that maintain backward compatibility
  • Patch (x.y.Z): Bug fixes that don't change the API
  • None: Changes that don't affect using facing parts of Electron