NaterGator

#52598: fix: use WeakPtr for MenuDelegate cancellation

Merged
Created: Aug 2, 2026, 3:36:53 PM
Merged: Aug 5, 2026, 4:42:15 PM
6 comments
Target: main

Description of Change

Resolves #52579

MenuDelegate cancellation used base::Unretained and didn't guarantee the callee lifecycle. This change adds WeakPtrFactory to MenuDelegate so cancel-on-destroy semantics protect the cancellation callback if the MenuDelegate is destroyed before the event loop runs the callback.

This issue was actually originally reported by Microsoft 8 years ago in #14213

Checklist

Release Notes

Notes: Fixed a crash when quickly switching menus while the app is under heavy load.

Backports

42-x-y
Merged
PR Number
#52671
Merged At
Aug 5, 2026, 7:29:03 PM
Released In
Not yet
Release Date
Not yet
43-x-y
Merged
PR Number
#52673
Merged At
Aug 5, 2026, 7:29:24 PM
Released In
Not yet
Release Date
Not yet
44-x-y
In-flight
PR Number
#52672
Waiting to be merged

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