Skip to content

[video_player] Fix crash regression with async calls on iOS/macOS - #13383

Merged
auto-submit[bot] merged 3 commits into
flutter:mainfrom
stuartmorgan:video-player-swift-api-bridge-crash
Oct 23, 2026
Merged

auto-submit[bot] merged 3 commits into
flutter:mainfrom
stuartmorgan:video-player-swift-api-bridge-crash

Conversation

@stuartmorgan

@stuartmorgan stuartmorgan commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Because Pigeon closures have references to the bridge object that serves as the API handler, it's not safe for it to have an unowned reference to the player instance that it delegates to. This changes it to a weak reference, and uses dummy return values as necessary for cases where the player has already been destroyed by the time the async call reaches the bridge.

Also includes a unit test simulating that situation, which crashes without the fix.

Fixes flutter/flutter#195056

Pre-Review Checklist

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2

@stuartmorgan
stuartmorgan requested a review from jmagman October 22, 2026 16:52
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Oct 22, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request modifies VideoPlayerInstanceBridge in VideoPlayer.swift to hold a weak reference to VideoPlayer instead of an unowned reference, preventing crashes if the player is disposed during an active asynchronous method. All bridge methods now use optional chaining with fallback default values. A new unit test, apiBridgeHandlesPlayerDestruction, has been added to verify this behavior, and the package version is bumped to 2.12.3. There are no review comments to address.

@stuartmorgan stuartmorgan added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 23, 2026
@auto-submit
auto-submit Bot merged commit 23a05b6 into flutter:main Oct 23, 2026
12 checks passed
reginaldalfret pushed a commit to reginaldalfret/flutter that referenced this pull request Oct 26, 2026
flutter/packages@108dad0...23a05b6

2026-10-23 [email protected] [video_player] Fix crash regression
with async calls on iOS/macOS (flutter/packages#13383)
2026-10-23 [email protected] [material_ui] Migrate M3
SegmentedButton template to use new gen_defaults
(flutter/packages#13227)
2026-10-23 [email protected] [material_ui] Migrate M3 Slider
template to use new gen_defaults (flutter/packages#13195)
2026-10-23 [email protected] [material_ui]
Migrate M3 BottomAppBar template to use new gen_defaults
(flutter/packages#13385)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
suryaKommana2662 pushed a commit to suryaKommana2662/flutter that referenced this pull request Oct 29, 2026
flutter/packages@108dad0...23a05b6

2026-10-23 [email protected] [video_player] Fix crash regression
with async calls on iOS/macOS (flutter/packages#13383)
2026-10-23 [email protected] [material_ui] Migrate M3
SegmentedButton template to use new gen_defaults
(flutter/packages#13227)
2026-10-23 [email protected] [material_ui] Migrate M3 Slider
template to use new gen_defaults (flutter/packages#13195)
2026-10-23 [email protected] [material_ui]
Migrate M3 BottomAppBar template to use new gen_defaults
(flutter/packages#13385)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD p: video_player platform-ios platform-macos

Projects

None yet

2 participants