Uh oh!
There was an error while loading. Please reload this page.
Fix null-deref/double-dispose in StretchingOverscrollIndicator (#189589) - #189667
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates _StretchController in overscroll_indicator.dart to prevent a crash when disposed during a stretch animation. It ensures that the animation's completion callback only cleans up state and disposes the controller if it remains the active controller, and sets _controller to null during disposal. A regression test has been added to verify this behavior. There are no review comments, and I have no feedback to provide.
| testWidgets( | ||
| 'StretchingOverscrollIndicator does not crash when disposed mid stretch animation', | ||
| // Regression test for https://github.com/flutter/flutter/issues/189589 |
There was a problem hiding this comment.
Nit: Put the comment above the test name or in the test body? Between the name and test function is a bit weird to read
Uh oh!
There was an error while loading. Please reload this page.
flutter/flutter@1ac2e82...2a2a79d 2026-07-22 21270878+elliette@users.noreply.github.com Clear cached directional focus history on a non-directional focus request (flutter/flutter#187957) 2026-07-22 chris@bracken.jp ci: Include root pubspec.yaml in pub cache key (flutter/flutter#189826) 2026-07-22 6655696+guidezpl@users.noreply.github.com Remove codecov badge from README (flutter/flutter#189728) 2026-07-22 116356835+AbdeMohlbi@users.noreply.github.com Clean android engine/embedding tests (flutter/flutter#189276) 2026-07-22 50643541+Mairramer@users.noreply.github.com Add barrierBuilder support to showDialog and showGeneralDialog (flutter/flutter#187992) 2026-07-22 matt.boetger@gmail.com Fix Mockito dynamic agent loading warnings in Robolectric tests (flutter/flutter#189804) 2026-07-22 chris@bracken.jp [iOS] Remove dead RasterThreadMerger plumbing from platform views (flutter/flutter#189753) 2026-07-22 737941+loic-sharma@users.noreply.github.com Add OverlayPortal.overlayChildLayoutBuilder sample (flutter/flutter#188930) 2026-07-22 katelovett@google.com Automate recurring tasks via workflows - localizations (flutter/flutter#189750) 2026-07-21 chris@bracken.jp [iOS] Remove dead parameters and no-op overrides (flutter/flutter#189754) 2026-07-21 chris@bracken.jp [iOS] Inject DisplayLinkManager into FlutterViewController (flutter/flutter#189764) 2026-07-21 46920873+gabrimatic@users.noreply.github.com Support custom BoxBorder animation in BoxDecoration (flutter/flutter#186348) 2026-07-21 chingjun@google.com Rename CpuArch.x86_64 to CpuArch.x64 (flutter/flutter#189478) 2026-07-21 engine-flutter-autoroll@skia.org Roll Skia from 569534e9fa59 to 5e183e5aeac5 (3 revisions) (flutter/flutter#189795) 2026-07-21 engine-flutter-autoroll@skia.org Roll Dart SDK from 3b2f5ad7718d to 1e65011ee004 (4 revisions) (flutter/flutter#189791) 2026-07-21 jacksongardner@google.com Run delete-bot-branches.yaml on `pull_request_target` instead of `pull_request` so that we can access secrets. (flutter/flutter#189793) 2026-07-21 jmccandless@google.com Batch release directory correction (flutter/flutter#189738) 2026-07-21 brackenavaron@gmail.com [flutter_test][Test cross imports] Move TestWidgetsApp to flutter_test (flutter/flutter#189435) 2026-07-21 brunocorona.alcantar@gmail.com Fix null-deref/double-dispose in StretchingOverscrollIndicator (#189589) (flutter/flutter#189667) 2026-07-21 engine-flutter-autoroll@skia.org Roll Packages from 611899b to 8260a1e (10 revisions) (flutter/flutter#189782) 2026-07-21 chris@bracken.jp [iOS] Inject DisplayLinkManager into FlutterMetalLayer (flutter/flutter#189752) 2026-07-21 jason-simmons@users.noreply.github.com Derive the SkImage size used by ImageEncodingImpeller::ConvertDlImageToSkImage from the size of the underlying texture, not the size of the DlImage (flutter/flutter#189739) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: 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
…r#12272) flutter/flutter@1ac2e82...2a2a79d 2026-07-22 21270878+elliette@users.noreply.github.com Clear cached directional focus history on a non-directional focus request (flutter/flutter#187957) 2026-07-22 chris@bracken.jp ci: Include root pubspec.yaml in pub cache key (flutter/flutter#189826) 2026-07-22 6655696+guidezpl@users.noreply.github.com Remove codecov badge from README (flutter/flutter#189728) 2026-07-22 116356835+AbdeMohlbi@users.noreply.github.com Clean android engine/embedding tests (flutter/flutter#189276) 2026-07-22 50643541+Mairramer@users.noreply.github.com Add barrierBuilder support to showDialog and showGeneralDialog (flutter/flutter#187992) 2026-07-22 matt.boetger@gmail.com Fix Mockito dynamic agent loading warnings in Robolectric tests (flutter/flutter#189804) 2026-07-22 chris@bracken.jp [iOS] Remove dead RasterThreadMerger plumbing from platform views (flutter/flutter#189753) 2026-07-22 737941+loic-sharma@users.noreply.github.com Add OverlayPortal.overlayChildLayoutBuilder sample (flutter/flutter#188930) 2026-07-22 katelovett@google.com Automate recurring tasks via workflows - localizations (flutter/flutter#189750) 2026-07-21 chris@bracken.jp [iOS] Remove dead parameters and no-op overrides (flutter/flutter#189754) 2026-07-21 chris@bracken.jp [iOS] Inject DisplayLinkManager into FlutterViewController (flutter/flutter#189764) 2026-07-21 46920873+gabrimatic@users.noreply.github.com Support custom BoxBorder animation in BoxDecoration (flutter/flutter#186348) 2026-07-21 chingjun@google.com Rename CpuArch.x86_64 to CpuArch.x64 (flutter/flutter#189478) 2026-07-21 engine-flutter-autoroll@skia.org Roll Skia from 569534e9fa59 to 5e183e5aeac5 (3 revisions) (flutter/flutter#189795) 2026-07-21 engine-flutter-autoroll@skia.org Roll Dart SDK from 3b2f5ad7718d to 1e65011ee004 (4 revisions) (flutter/flutter#189791) 2026-07-21 jacksongardner@google.com Run delete-bot-branches.yaml on `pull_request_target` instead of `pull_request` so that we can access secrets. (flutter/flutter#189793) 2026-07-21 jmccandless@google.com Batch release directory correction (flutter/flutter#189738) 2026-07-21 brackenavaron@gmail.com [flutter_test][Test cross imports] Move TestWidgetsApp to flutter_test (flutter/flutter#189435) 2026-07-21 brunocorona.alcantar@gmail.com Fix null-deref/double-dispose in StretchingOverscrollIndicator (#189589) (flutter/flutter#189667) 2026-07-21 engine-flutter-autoroll@skia.org Roll Packages from 611899b to 8260a1e (10 revisions) (flutter/flutter#189782) 2026-07-21 chris@bracken.jp [iOS] Inject DisplayLinkManager into FlutterMetalLayer (flutter/flutter#189752) 2026-07-21 jason-simmons@users.noreply.github.com Derive the SkImage size used by ImageEncodingImpeller::ConvertDlImageToSkImage from the size of the underlying texture, not the size of the DlImage (flutter/flutter#189739) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: 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
Description
Fixes a null pointer dereference crash in
_StretchController.animate(). ThewhenCompletecallback could execute after the controller was already disposed by a subsequentpull(),animate(), ordispose()call.The fix captures the controller instance and guards cleanup to only execute if it's still active, preventing null dereference and double-dispose.
Fixed Issues
Fixes#189589
Pre-launch Checklist