Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

memory leak: widgets/app.dart/defaultActions holds disposed objects from being GCed #130354

Closed
polina-c opened this issue Jul 11, 2023 · 9 comments · Fixed by #130842
Closed

memory leak: widgets/app.dart/defaultActions holds disposed objects from being GCed #130354

polina-c opened this issue Jul 11, 2023 · 9 comments · Fixed by #130842
Assignees
Labels
a: leak tracking Issues and PRs related to memory leaks detected by leak_tracker f: routes Navigator, Router, and related APIs. framework flutter/packages/flutter repository. See also f: labels. P2 Important issues not at the top of the work list team-framework Owned by Framework team triaged-framework Triaged by Framework team

Comments

@polina-c
Copy link
Contributor

polina-c commented Jul 11, 2023

Fragment of retaining path:

package:flutter/src/widgets/app.dart/defaultActions
                    dart.collection/_Map:[InstanceRef id: classes/4623/types/0, kind: Type,
identityHashCode: 530049589, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef
id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/VoidCallbackAction:_listeners@816441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516

Full retaining path:

To repro, remove leakTrackingTestConfig from packages/flutter/test/material/about_test.dart and see the modified tests failing.

To see retaining path, set:

leakTrackingTestConfig: LeakTrackingTestConfig.retainingPath(),

and then click 'Debug' for the test in VSCode

PR that marks the issue: #130470

@polina-c polina-c changed the title about_test contains memory leaks about_test contains not GCed memory leaks Jul 11, 2023
@polina-c polina-c self-assigned this Jul 11, 2023
@polina-c polina-c changed the title about_test contains not GCed memory leaks about_test contains not GCed memory leaks caused by inspector Jul 11, 2023
@polina-c polina-c changed the title about_test contains not GCed memory leaks caused by inspector about_test contains not GCed memory leaks caused by inspector. Jul 11, 2023
@polina-c polina-c added the P1 High-priority issues at the top of the work list label Jul 11, 2023
@polina-c polina-c changed the title about_test contains not GCed memory leaks caused by inspector. package:flutter/src/widgets/app.dart/defaultActions holds disposed objects from being GCed Jul 13, 2023
@polina-c polina-c changed the title package:flutter/src/widgets/app.dart/defaultActions holds disposed objects from being GCed widgets/app.dart/defaultActions holds disposed objects from being GCed Jul 13, 2023
@polina-c polina-c changed the title widgets/app.dart/defaultActions holds disposed objects from being GCed memory leak: widgets/app.dart/defaultActions holds disposed objects from being GCed Jul 13, 2023
@polina-c polina-c removed their assignment Jul 13, 2023
@polina-c polina-c removed the P1 High-priority issues at the top of the work list label Jul 13, 2023
@polina-c
Copy link
Contributor Author

cc @goderbauer

@goderbauer
Copy link
Member

cc @gspencergoog

@gspencergoog
Copy link
Contributor

I tried to repro this on master, and I don't see it show up in the output. I get other leaks, but not that one.

Also, if I were able to reproduce this, would just making it final solve the issue? Otherwise, I'm not sure how to dispose of a static class member properly.

@huycozy huycozy added in triage Presently being triaged by the triage team waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds labels Jul 14, 2023
@polina-c
Copy link
Contributor Author

@github-actions github-actions bot removed the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label Jul 17, 2023
@polina-c polina-c removed the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label Jul 17, 2023
@gspencergoog
Copy link
Contributor

Okay, I can reproduce it with those diffs, thanks.

From my reading of the error, it appears that the leak may be coming from a ValueNotifer that is created in the OverlayEntry for the modal route pushed by the AboutBox widget, and not from the defaultActions directly.

However, I don't really understand how a static member can be a leaked object in Dart. Static members are around for the lifetime of the app, AFAIK, and so by definition can't be leaked. But perhaps there's some interaction that is causing the leak detector to associate the static object with something transient.

For posterity, here's the whole error context (which is a lot bigger than the part posted above):

TestFailure (Expected: leak free
  Actual: <Instance of 'Leaks'>
   Which: contains leaks:
          # The text is generated by leak_tracker.
          # For leak troubleshooting tips open:
          # https://github.com/dart-lang/leak_tracker/blob/main/doc/TROUBLESHOOT.md
          notGCed:
            total: 3
            objects:
              ValueNotifier<_OverlayEntryWidgetState?>:
                identityHashCode: 331438737
                context:
                  start: >
                    #4_______withFlutterLeakTracking.flutterEventToLeakTracker_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:112:12)
                    #5______MemoryAllocations.dispatchObjectEvent_(package:flutter/src/foundation/memory_allocations.dart:238:23)
                    #6______MemoryAllocations.dispatchObjectCreated_(package:flutter/src/foundation/memory_allocations.dart:272:5)
                    #7______new_ValueNotifier_(package:flutter/src/foundation/change_notifier.dart:508:34)
                    #8______new_OverlayEntry_(package:flutter/src/widgets/overlay.dart:141:79)
                    #9______ModalRoute.createOverlayEntries_(package:flutter/src/widgets/routes.dart:1761:23)
                    #10_____OverlayRoute.install_(package:flutter/src/widgets/routes.dart:59:28)
                    #11_____TransitionRoute.install_(package:flutter/src/widgets/routes.dart:268:11)
                    #12_____ModalRoute.install_(package:flutter/src/widgets/routes.dart:1240:11)
                    #13______RouteEntry.handlePush_(package:flutter/src/widgets/navigator.dart:2916:11)
                    #14_____NavigatorState._flushHistoryUpdates_(package:flutter/src/widgets/navigator.dart:4013:17)
                    #15_____NavigatorState._pushEntry_(package:flutter/src/widgets/navigator.dart:4598:5)
                    #16_____NavigatorState.push_(package:flutter/src/widgets/navigator.dart:4547:5)
                    #17_____NavigatorState.pushNamed_(package:flutter/src/widgets/navigator.dart:4275:12)
                    #18______MasterDetailFlowState.openDetailPage_(package:flutter/src/material/about.dart:1150:35)
                    #19______MasterDetailFlowProxy.openDetailPage_(package:flutter/src/material/about.dart:1115:19)
                    #20______PackagesViewState._packagesList.<anonymous_closure>.<anonymous_closure>_(package:flutter/src/material/about.dart:650:43)
                    #21______InkResponseState.handleTap_(package:flutter/src/material/ink_well.dart:1154:21)
                    #22_____GestureRecognizer.invokeCallback_(package:flutter/src/gestures/recognizer.dart:275:24)
                    #23_____TapGestureRecognizer.handleTapUp_(package:flutter/src/gestures/tap.dart:654:11)
                    #24_____BaseTapGestureRecognizer._checkUp_(package:flutter/src/gestures/tap.dart:311:5)
                    #25_____BaseTapGestureRecognizer.acceptGesture_(package:flutter/src/gestures/tap.dart:281:7)
                    #26_____GestureArenaManager.sweep_(package:flutter/src/gestures/arena.dart:167:27)
                    #27_____GestureBinding.handleEvent_(package:flutter/src/gestures/binding.dart:492:20)
                    #28_____GestureBinding.dispatchEvent_(package:flutter/src/gestures/binding.dart:468:22)
                    #29_____RendererBinding.dispatchEvent_(package:flutter/src/rendering/binding.dart:439:11)
                    #30_____GestureBinding._handlePointerEventImmediately_(package:flutter/src/gestures/binding.dart:413:7)
                    #31_____GestureBinding.handlePointerEvent_(package:flutter/src/gestures/binding.dart:376:5)
                    #32_____TestWidgetsFlutterBinding.handlePointerEventForSource.<anonymous_closure>_(package:flutter_test/src/binding.dart:652:42)
                    #33_____TestWidgetsFlutterBinding.withPointerEventSource_(package:flutter_test/src/binding.dart:662:11)
                    #34_____TestWidgetsFlutterBinding.handlePointerEventForSource_(package:flutter_test/src/binding.dart:652:5)
                    #35_____WidgetTester.sendEventToBinding.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:840:15)
                    #36______rootRun_(dart:async/zone.dart:1399:13)
                    #37______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #38_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #39_____WidgetTester.sendEventToBinding_(package:flutter_test/src/widget_tester.dart:839:27)
                    #40_____TestGesture.up.<anonymous_closure>_(package:flutter_test/src/test_pointer.dart:550:26)
                    #41______rootRun_(dart:async/zone.dart:1399:13)
                    #42______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #43_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #44_____TestGesture.up_(package:flutter_test/src/test_pointer.dart:543:27)
                    #45_____WidgetController.tapAt.<anonymous_closure>_(package:flutter_test/src/controller.dart:611:21)
                    <asynchronous_suspension>
                    #46_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #47_____main.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/material/about_test.dart:191:5)
                    <asynchronous_suspension>
                    #48_____withLeakTracking_(package:leak_tracker/src/leak_tracking/orchestration.dart:90:5)
                    <asynchronous_suspension>
                    #49______withFlutterLeakTracking.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:120:21)
                    <asynchronous_suspension>
                    #50_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #51_____testWidgetsWithLeakTracking.wrappedCallback_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:60:5)
                    <asynchronous_suspension>
                    #52_____testWidgets.<anonymous_closure>.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:165:15)
                    <asynchronous_suspension>
                    #53_____TestWidgetsFlutterBinding._runTestBody_(package:flutter_test/src/binding.dart:1008:5)
                    <asynchronous_suspension>
                    #54_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:42)
                    <asynchronous_suspension>
                  disposal: >
                    #4_______withFlutterLeakTracking.flutterEventToLeakTracker_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:112:12)
                    #5______MemoryAllocations.dispatchObjectEvent_(package:flutter/src/foundation/memory_allocations.dart:238:23)
                    #6______MemoryAllocations.dispatchObjectDisposed_(package:flutter/src/foundation/memory_allocations.dart:286:5)
                    #7______ChangeNotifier.dispose_(package:flutter/src/foundation/change_notifier.dart:357:34)
                    #8______OverlayEntry.dispose_(package:flutter/src/widgets/overlay.dart:220:34)
                    #9______OverlayRoute.dispose_(package:flutter/src/widgets/routes.dart:88:13)
                    #10_____TransitionRoute.dispose_(package:flutter/src/widgets/routes.dart:489:11)
                    #11______RouteEntry.forcedDispose_(package:flutter/src/widgets/navigator.dart:3061:11)
                    #12______RouteEntry.dispose.<anonymous_closure>.<anonymous_closure>_(package:flutter/src/widgets/navigator.dart:3116:13)
                    #13_____StackZoneSpecification._run_(package:stack_trace/src/stack_zone_specification.dart:207:15)
                    #14_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:48)
                    #15______rootRun_(dart:async/zone.dart:1391:47)
                    #16______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #17______CustomZone.runGuarded_(dart:async/zone.dart:1209:7)
                    #18______CustomZone.bindCallbackGuarded.<anonymous_closure>_(dart:async/zone.dart:1249:23)
                    #19_____FakeAsync.flushMicrotasks_(package:fake_async/fake_async.dart:197:32)
                    #20_____AutomatedTestWidgetsFlutterBinding.pump.<anonymous_closure>_(package:flutter_test/src/binding.dart:1261:26)
                    #21______rootRun_(dart:async/zone.dart:1399:13)
                    #22______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #23_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #24_____AutomatedTestWidgetsFlutterBinding.pump_(package:flutter_test/src/binding.dart:1246:27)
                    #25_____WidgetTester.pumpAndSettle.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:692:23)
                    <asynchronous_suspension>
                    #26_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #27_____main.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/material/about_test.dart:197:5)
                    <asynchronous_suspension>
                    #28_____withLeakTracking_(package:leak_tracker/src/leak_tracking/orchestration.dart:90:5)
                    <asynchronous_suspension>
                    #29______withFlutterLeakTracking.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:120:21)
                    <asynchronous_suspension>
                    #30_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #31_____testWidgetsWithLeakTracking.wrappedCallback_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:60:5)
                    <asynchronous_suspension>
                    #32_____testWidgets.<anonymous_closure>.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:165:15)
                    <asynchronous_suspension>
                    #33_____TestWidgetsFlutterBinding._runTestBody_(package:flutter_test/src/binding.dart:1008:5)
                    <asynchronous_suspension>
                    #34_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:42)
                    <asynchronous_suspension>
                  path: >
                    References that retain the object from garbage collection.
                    package:flutter/src/widgets/app.dart/defaultActions
                    dart.collection/_Map:[InstanceRef id: classes/4629/types/0, kind: Type, identityHashCode: 1318566424, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/VoidCallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:listenedActions
                    dart.collection/_Set:data_
                    dart.core/_List:6
                    package:flutter/src/widgets/actions.dart/_OverridableContextAction:lookupContext
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:5
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/navigator.dart/NavigatorState:userGestureInProgressNotifier
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in _handleChange):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/transitions.dart/_AnimatedState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/about.dart/_LicensePageState:selectedId
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in _valueChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/value_listenable_builder.dart/_ValueListenableBuilderState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/material.dart/_MaterialState:_tickerModeNotifier@791311458
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:12
                    dart.core/_Closure (in _updateTicker):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/implicit_animations.dart/_AnimatedDefaultTextStyleState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_renderObject@345042623
                    package:flutter/src/rendering/paragraph.dart/RenderParagraph:_relayoutBoundary@360266271
                    package:flutter/src/rendering/viewport.dart/RenderViewport:_offset@741057554
                    package:flutter/src/widgets/scroll_position_with_single_context.dart/ScrollPositionWithSingleContext:context
                    package:flutter/src/widgets/scrollable.dart/ScrollableState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/overscroll_indicator.dart/_GlowingOverscrollIndicatorState:_trailingController@924442496
                    package:flutter/src/widgets/overscroll_indicator.dart/_GlowController:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in markNeedsPaint):_context@0150898
                    @Context:0
                    package:flutter/src/rendering/custom_paint.dart/RenderCustomPaint:_child@360266271
                    package:flutter/src/rendering/proxy_box.dart/RenderRepaintBoundary:_child@360266271
                    package:flutter/src/widgets/scrollable.dart/_RenderScrollSemantics:_innerNode@897019050
                    package:flutter/src/semantics/semantics.dart/SemanticsNode:_debugPreviousSnapshot@748082469
                    dart.core/_GrowableList:2
                    package:flutter/src/semantics/semantics.dart/SemanticsNode:_actions@748082469
                    dart.collection/_Map:[InstanceRef id: objects/3131, kind: PlainInstance, identityHashCode: 265659702, classRef: [ClassRef id: classes/1196, name: SemanticsAction, library: [LibraryRef id: libraries/@15065589, name: dart.ui, uri: dart:ui]]]
                    dart.core/_Closure (in _addArgumentlessAction):_context@0150898
                    @Context:0
                    dart.core/_Closure (in _performTap):_context@0150898
                    @Context:0
                    package:flutter/src/rendering/proxy_box.dart/RenderSemanticsAnnotations:_properties@347160605
                    package:flutter/src/semantics/semantics.dart/SemanticsProperties:onTap
                    dart.core/_Closure (in simulateTap):_context@0150898
                    @Context:0
                    package:flutter/src/material/ink_well.dart/_InkResponseState:_actionMap@560059085
                    dart.collection/_Map:[InstanceRef id: classes/4635/types/0, kind: Type, identityHashCode: 2951682716, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/CallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/focus_scope.dart/_FocusState:_internalNode@832492240
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_parent@831042876
                    package:flutter/src/widgets/focus_manager.dart/FocusScopeNode:_children@831042876
                    dart.core/_GrowableList:0
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_ancestors@831042876
                    dart.core/_GrowableList:11
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_context@831042876
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:6
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:3
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_ancestorRenderObjectElement@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/scaffold.dart/ScaffoldMessengerState:_scaffolds@601420462
                    dart.collection/_Set:data_
                    dart.core/_List:2
                    package:flutter/src/material/scaffold.dart/ScaffoldState:_floatingActionButtonVisibilityController@601420462
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_statusListeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:2
                    dart.core/_Closure (in _maybeNotifyStatusListeners):_context@0150898
                    @Context:0
                    package:flutter/src/animation/animations.dart/AnimationMin:first
                    package:flutter/src/material/floating_action_button_location.dart/_AnimationSwap:_statusListeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:1
                    dart.core/_Closure (in _maybeNotifyStatusListeners):_context@0150898
                    @Context:0
                    package:flutter/src/animation/animations.dart/AnimationMin:next
                    package:flutter/src/animation/animations.dart/CurvedAnimation:parent
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_ticker@370066280
                    package:flutter/src/widgets/ticker_provider.dart/_WidgetTicker:_creator@791311458
                    package:flutter/src/material/scaffold.dart/_FloatingActionButtonTransitionState:_currentRotationAnimation@601420462
                    package:flutter/src/animation/animations.dart/TrainHoppingAnimation:_listeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleChange):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/transitions.dart/_AnimatedState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_renderObject@345042623
                    package:flutter/src/rendering/proxy_box.dart/RenderTransform:_relayoutBoundary@360266271
                    package:flutter/src/rendering/custom_layout.dart/RenderCustomMultiChildLayoutBox:_lastChild@360266271
                    package:flutter/src/rendering/stack.dart/RenderStack:debugCreator
                    package:flutter/src/widgets/framework.dart/DebugCreator:element
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_ancestorRenderObjectElement@345042623
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_children@345042623
                    dart.core/_List:1
                    package:flutter/src/widgets/framework.dart/ParentDataElement:_child@345042623
                    package:flutter/src/widgets/inherited_model.dart/InheritedModelElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/inherited_model.dart/InheritedModelElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:6
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/ink_well.dart/_InkResponseState:_actionMap@560059085
                    dart.collection/_Map:[InstanceRef id: classes/4635/types/0, kind: Type, identityHashCode: 2951682716, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/CallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/focus_scope.dart/_FocusState:_internalNode@832492240
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_parent@831042876
                    package:flutter/src/widgets/focus_manager.dart/FocusScopeNode:_context@831042876
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/dual_transition_builder.dart/_DualTransitionBuilderState:_reverseAnimation@895338117
                    package:flutter/src/animation/animations.dart/ProxyAnimation:_parent@371411118
                    package:flutter/src/animation/animations.dart/ReverseAnimation:parent
                    package:flutter/src/animation/animations.dart/ProxyAnimation:_parent@371411118
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_ticker@370066280
                    package:flutter/src/widgets/ticker_provider.dart/_WidgetTicker:_creator@791311458
                    package:flutter/src/widgets/navigator.dart/NavigatorState:_history@31124995
                    dart.core/_GrowableList:0
                    package:flutter/src/widgets/navigator.dart/_RouteEntry:lastAnnouncedPoppedNextRoute
                    package:flutter/src/material/page.dart/MaterialPageRoute:_modalBarrier@797188637
                    package:flutter/src/widgets/overlay.dart/OverlayEntry:_overlayEntryStateNotifier@861319124
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier
              ValueNotifier<_OverlayEntryWidgetState?>:
                identityHashCode: 1066661807
                context:
                  start: >
                    #4_______withFlutterLeakTracking.flutterEventToLeakTracker_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:112:12)
                    #5______MemoryAllocations.dispatchObjectEvent_(package:flutter/src/foundation/memory_allocations.dart:238:23)
                    #6______MemoryAllocations.dispatchObjectCreated_(package:flutter/src/foundation/memory_allocations.dart:272:5)
                    #7______new_ValueNotifier_(package:flutter/src/foundation/change_notifier.dart:508:34)
                    #8______new_OverlayEntry_(package:flutter/src/widgets/overlay.dart:141:79)
                    #9______ModalRoute.createOverlayEntries_(package:flutter/src/widgets/routes.dart:1762:21)
                    #10_____OverlayRoute.install_(package:flutter/src/widgets/routes.dart:59:28)
                    #11_____TransitionRoute.install_(package:flutter/src/widgets/routes.dart:268:11)
                    #12_____ModalRoute.install_(package:flutter/src/widgets/routes.dart:1240:11)
                    #13______RouteEntry.handlePush_(package:flutter/src/widgets/navigator.dart:2916:11)
                    #14_____NavigatorState._flushHistoryUpdates_(package:flutter/src/widgets/navigator.dart:4013:17)
                    #15_____NavigatorState._pushEntry_(package:flutter/src/widgets/navigator.dart:4598:5)
                    #16_____NavigatorState.push_(package:flutter/src/widgets/navigator.dart:4547:5)
                    #17_____NavigatorState.pushNamed_(package:flutter/src/widgets/navigator.dart:4275:12)
                    #18______MasterDetailFlowState.openDetailPage_(package:flutter/src/material/about.dart:1150:35)
                    #19______MasterDetailFlowProxy.openDetailPage_(package:flutter/src/material/about.dart:1115:19)
                    #20______PackagesViewState._packagesList.<anonymous_closure>.<anonymous_closure>_(package:flutter/src/material/about.dart:650:43)
                    #21______InkResponseState.handleTap_(package:flutter/src/material/ink_well.dart:1154:21)
                    #22_____GestureRecognizer.invokeCallback_(package:flutter/src/gestures/recognizer.dart:275:24)
                    #23_____TapGestureRecognizer.handleTapUp_(package:flutter/src/gestures/tap.dart:654:11)
                    #24_____BaseTapGestureRecognizer._checkUp_(package:flutter/src/gestures/tap.dart:311:5)
                    #25_____BaseTapGestureRecognizer.acceptGesture_(package:flutter/src/gestures/tap.dart:281:7)
                    #26_____GestureArenaManager.sweep_(package:flutter/src/gestures/arena.dart:167:27)
                    #27_____GestureBinding.handleEvent_(package:flutter/src/gestures/binding.dart:492:20)
                    #28_____GestureBinding.dispatchEvent_(package:flutter/src/gestures/binding.dart:468:22)
                    #29_____RendererBinding.dispatchEvent_(package:flutter/src/rendering/binding.dart:439:11)
                    #30_____GestureBinding._handlePointerEventImmediately_(package:flutter/src/gestures/binding.dart:413:7)
                    #31_____GestureBinding.handlePointerEvent_(package:flutter/src/gestures/binding.dart:376:5)
                    #32_____TestWidgetsFlutterBinding.handlePointerEventForSource.<anonymous_closure>_(package:flutter_test/src/binding.dart:652:42)
                    #33_____TestWidgetsFlutterBinding.withPointerEventSource_(package:flutter_test/src/binding.dart:662:11)
                    #34_____TestWidgetsFlutterBinding.handlePointerEventForSource_(package:flutter_test/src/binding.dart:652:5)
                    #35_____WidgetTester.sendEventToBinding.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:840:15)
                    #36______rootRun_(dart:async/zone.dart:1399:13)
                    #37______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #38_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #39_____WidgetTester.sendEventToBinding_(package:flutter_test/src/widget_tester.dart:839:27)
                    #40_____TestGesture.up.<anonymous_closure>_(package:flutter_test/src/test_pointer.dart:550:26)
                    #41______rootRun_(dart:async/zone.dart:1399:13)
                    #42______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #43_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #44_____TestGesture.up_(package:flutter_test/src/test_pointer.dart:543:27)
                    #45_____WidgetController.tapAt.<anonymous_closure>_(package:flutter_test/src/controller.dart:611:21)
                    <asynchronous_suspension>
                    #46_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #47_____main.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/material/about_test.dart:191:5)
                    <asynchronous_suspension>
                    #48_____withLeakTracking_(package:leak_tracker/src/leak_tracking/orchestration.dart:90:5)
                    <asynchronous_suspension>
                    #49______withFlutterLeakTracking.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:120:21)
                    <asynchronous_suspension>
                    #50_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #51_____testWidgetsWithLeakTracking.wrappedCallback_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:60:5)
                    <asynchronous_suspension>
                    #52_____testWidgets.<anonymous_closure>.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:165:15)
                    <asynchronous_suspension>
                    #53_____TestWidgetsFlutterBinding._runTestBody_(package:flutter_test/src/binding.dart:1008:5)
                    <asynchronous_suspension>
                    #54_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:42)
                    <asynchronous_suspension>
                  disposal: >
                    #4_______withFlutterLeakTracking.flutterEventToLeakTracker_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:112:12)
                    #5______MemoryAllocations.dispatchObjectEvent_(package:flutter/src/foundation/memory_allocations.dart:238:23)
                    #6______MemoryAllocations.dispatchObjectDisposed_(package:flutter/src/foundation/memory_allocations.dart:286:5)
                    #7______ChangeNotifier.dispose_(package:flutter/src/foundation/change_notifier.dart:357:34)
                    #8______OverlayEntry.dispose_(package:flutter/src/widgets/overlay.dart:220:34)
                    #9______OverlayRoute.dispose_(package:flutter/src/widgets/routes.dart:88:13)
                    #10_____TransitionRoute.dispose_(package:flutter/src/widgets/routes.dart:489:11)
                    #11______RouteEntry.forcedDispose_(package:flutter/src/widgets/navigator.dart:3061:11)
                    #12______RouteEntry.dispose.<anonymous_closure>.<anonymous_closure>_(package:flutter/src/widgets/navigator.dart:3116:13)
                    #13_____StackZoneSpecification._run_(package:stack_trace/src/stack_zone_specification.dart:207:15)
                    #14_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:48)
                    #15______rootRun_(dart:async/zone.dart:1391:47)
                    #16______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #17______CustomZone.runGuarded_(dart:async/zone.dart:1209:7)
                    #18______CustomZone.bindCallbackGuarded.<anonymous_closure>_(dart:async/zone.dart:1249:23)
                    #19_____FakeAsync.flushMicrotasks_(package:fake_async/fake_async.dart:197:32)
                    #20_____AutomatedTestWidgetsFlutterBinding.pump.<anonymous_closure>_(package:flutter_test/src/binding.dart:1261:26)
                    #21______rootRun_(dart:async/zone.dart:1399:13)
                    #22______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #23_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #24_____AutomatedTestWidgetsFlutterBinding.pump_(package:flutter_test/src/binding.dart:1246:27)
                    #25_____WidgetTester.pumpAndSettle.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:692:23)
                    <asynchronous_suspension>
                    #26_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #27_____main.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/material/about_test.dart:197:5)
                    <asynchronous_suspension>
                    #28_____withLeakTracking_(package:leak_tracker/src/leak_tracking/orchestration.dart:90:5)
                    <asynchronous_suspension>
                    #29______withFlutterLeakTracking.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:120:21)
                    <asynchronous_suspension>
                    #30_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #31_____testWidgetsWithLeakTracking.wrappedCallback_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:60:5)
                    <asynchronous_suspension>
                    #32_____testWidgets.<anonymous_closure>.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:165:15)
                    <asynchronous_suspension>
                    #33_____TestWidgetsFlutterBinding._runTestBody_(package:flutter_test/src/binding.dart:1008:5)
                    <asynchronous_suspension>
                    #34_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:42)
                    <asynchronous_suspension>
                  path: >
                    References that retain the object from garbage collection.
                    package:flutter/src/widgets/app.dart/defaultActions
                    dart.collection/_Map:[InstanceRef id: classes/4629/types/0, kind: Type, identityHashCode: 1318566424, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/VoidCallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:listenedActions
                    dart.collection/_Set:data_
                    dart.core/_List:6
                    package:flutter/src/widgets/actions.dart/_OverridableContextAction:lookupContext
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:5
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/navigator.dart/NavigatorState:userGestureInProgressNotifier
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in _handleChange):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/transitions.dart/_AnimatedState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/about.dart/_LicensePageState:selectedId
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in _valueChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/value_listenable_builder.dart/_ValueListenableBuilderState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/material.dart/_MaterialState:_tickerModeNotifier@791311458
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:12
                    dart.core/_Closure (in _updateTicker):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/implicit_animations.dart/_AnimatedDefaultTextStyleState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_renderObject@345042623
                    package:flutter/src/rendering/paragraph.dart/RenderParagraph:_relayoutBoundary@360266271
                    package:flutter/src/rendering/viewport.dart/RenderViewport:_offset@741057554
                    package:flutter/src/widgets/scroll_position_with_single_context.dart/ScrollPositionWithSingleContext:context
                    package:flutter/src/widgets/scrollable.dart/ScrollableState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/overscroll_indicator.dart/_GlowingOverscrollIndicatorState:_trailingController@924442496
                    package:flutter/src/widgets/overscroll_indicator.dart/_GlowController:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in markNeedsPaint):_context@0150898
                    @Context:0
                    package:flutter/src/rendering/custom_paint.dart/RenderCustomPaint:_child@360266271
                    package:flutter/src/rendering/proxy_box.dart/RenderRepaintBoundary:_child@360266271
                    package:flutter/src/widgets/scrollable.dart/_RenderScrollSemantics:_innerNode@897019050
                    package:flutter/src/semantics/semantics.dart/SemanticsNode:_debugPreviousSnapshot@748082469
                    dart.core/_GrowableList:2
                    package:flutter/src/semantics/semantics.dart/SemanticsNode:_actions@748082469
                    dart.collection/_Map:[InstanceRef id: objects/3452, kind: PlainInstance, identityHashCode: 265659702, classRef: [ClassRef id: classes/1196, name: SemanticsAction, library: [LibraryRef id: libraries/@15065589, name: dart.ui, uri: dart:ui]]]
                    dart.core/_Closure (in _addArgumentlessAction):_context@0150898
                    @Context:0
                    dart.core/_Closure (in _performTap):_context@0150898
                    @Context:0
                    package:flutter/src/rendering/proxy_box.dart/RenderSemanticsAnnotations:_properties@347160605
                    package:flutter/src/semantics/semantics.dart/SemanticsProperties:onTap
                    dart.core/_Closure (in simulateTap):_context@0150898
                    @Context:0
                    package:flutter/src/material/ink_well.dart/_InkResponseState:_actionMap@560059085
                    dart.collection/_Map:[InstanceRef id: classes/4635/types/0, kind: Type, identityHashCode: 2951682716, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/CallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/focus_scope.dart/_FocusState:_internalNode@832492240
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_parent@831042876
                    package:flutter/src/widgets/focus_manager.dart/FocusScopeNode:_children@831042876
                    dart.core/_GrowableList:0
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_ancestors@831042876
                    dart.core/_GrowableList:11
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_context@831042876
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:6
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:3
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_ancestorRenderObjectElement@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/scaffold.dart/ScaffoldMessengerState:_scaffolds@601420462
                    dart.collection/_Set:data_
                    dart.core/_List:2
                    package:flutter/src/material/scaffold.dart/ScaffoldState:_floatingActionButtonVisibilityController@601420462
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_statusListeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:2
                    dart.core/_Closure (in _maybeNotifyStatusListeners):_context@0150898
                    @Context:0
                    package:flutter/src/animation/animations.dart/AnimationMin:first
                    package:flutter/src/material/floating_action_button_location.dart/_AnimationSwap:_statusListeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:1
                    dart.core/_Closure (in _maybeNotifyStatusListeners):_context@0150898
                    @Context:0
                    package:flutter/src/animation/animations.dart/AnimationMin:next
                    package:flutter/src/animation/animations.dart/CurvedAnimation:parent
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_ticker@370066280
                    package:flutter/src/widgets/ticker_provider.dart/_WidgetTicker:_creator@791311458
                    package:flutter/src/material/scaffold.dart/_FloatingActionButtonTransitionState:_currentRotationAnimation@601420462
                    package:flutter/src/animation/animations.dart/TrainHoppingAnimation:_listeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleChange):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/transitions.dart/_AnimatedState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_renderObject@345042623
                    package:flutter/src/rendering/proxy_box.dart/RenderTransform:_relayoutBoundary@360266271
                    package:flutter/src/rendering/custom_layout.dart/RenderCustomMultiChildLayoutBox:_lastChild@360266271
                    package:flutter/src/rendering/stack.dart/RenderStack:debugCreator
                    package:flutter/src/widgets/framework.dart/DebugCreator:element
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_ancestorRenderObjectElement@345042623
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_children@345042623
                    dart.core/_List:1
                    package:flutter/src/widgets/framework.dart/ParentDataElement:_child@345042623
                    package:flutter/src/widgets/inherited_model.dart/InheritedModelElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/inherited_model.dart/InheritedModelElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:6
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/ink_well.dart/_InkResponseState:_actionMap@560059085
                    dart.collection/_Map:[InstanceRef id: classes/4635/types/0, kind: Type, identityHashCode: 2951682716, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/CallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/focus_scope.dart/_FocusState:_internalNode@832492240
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_parent@831042876
                    package:flutter/src/widgets/focus_manager.dart/FocusScopeNode:_context@831042876
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/dual_transition_builder.dart/_DualTransitionBuilderState:_reverseAnimation@895338117
                    package:flutter/src/animation/animations.dart/ProxyAnimation:_parent@371411118
                    package:flutter/src/animation/animations.dart/ReverseAnimation:parent
                    package:flutter/src/animation/animations.dart/ProxyAnimation:_parent@371411118
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_ticker@370066280
                    package:flutter/src/widgets/ticker_provider.dart/_WidgetTicker:_creator@791311458
                    package:flutter/src/widgets/navigator.dart/NavigatorState:_history@31124995
                    dart.core/_GrowableList:0
                    package:flutter/src/widgets/navigator.dart/_RouteEntry:lastAnnouncedPoppedNextRoute
                    package:flutter/src/material/page.dart/MaterialPageRoute:_modalScope@797188637
                    package:flutter/src/widgets/overlay.dart/OverlayEntry:_overlayEntryStateNotifier@861319124
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier
              ValueNotifier<String?>:
                identityHashCode: 412572655
                context:
                  start: >
                    #4_______withFlutterLeakTracking.flutterEventToLeakTracker_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:112:12)
                    #5______MemoryAllocations.dispatchObjectEvent_(package:flutter/src/foundation/memory_allocations.dart:238:23)
                    #6______MemoryAllocations.dispatchObjectCreated_(package:flutter/src/foundation/memory_allocations.dart:272:5)
                    #7______new_ValueNotifier_(package:flutter/src/foundation/change_notifier.dart:508:34)
                    #8______new_Route_(package:flutter/src/widgets/navigator.dart:171:54)
                    #9______new_OverlayRoute_(package:flutter/src/widgets/routes.dart)
                    #10_____new_TransitionRoute_(package:flutter/src/widgets/routes.dart)
                    #11_____new__ModalRoute&TransitionRoute&LocalHistoryRoute_(package:flutter/src/widgets/routes.dart)
                    #12_____new_ModalRoute_(package:flutter/src/widgets/routes.dart)
                    #13_____new_PageRoute_(package:flutter/src/widgets/pages.dart)
                    #14_____new__MaterialPageRoute&PageRoute&MaterialRouteTransitionMixin_(package:flutter/src/material/page.dart)
                    #15_____new_MaterialPageRoute_(package:flutter/src/material/page.dart)
                    #16______MasterDetailFlowState._detailPageRoute_(package:flutter/src/material/about.dart:1230:12)
                    #17______MasterDetailFlowState._nestedUI.<anonymous_closure>_(package:flutter/src/material/about.dart:1204:22)
                    #18_____NavigatorState._routeNamed_(package:flutter/src/widgets/navigator.dart:4216:47)
                    #19_____NavigatorState.pushNamed_(package:flutter/src/widgets/navigator.dart:4275:21)
                    #20______MasterDetailFlowState.openDetailPage_(package:flutter/src/material/about.dart:1150:35)
                    #21______MasterDetailFlowProxy.openDetailPage_(package:flutter/src/material/about.dart:1115:19)
                    #22______PackagesViewState._packagesList.<anonymous_closure>.<anonymous_closure>_(package:flutter/src/material/about.dart:650:43)
                    #23______InkResponseState.handleTap_(package:flutter/src/material/ink_well.dart:1154:21)
                    #24_____GestureRecognizer.invokeCallback_(package:flutter/src/gestures/recognizer.dart:275:24)
                    #25_____TapGestureRecognizer.handleTapUp_(package:flutter/src/gestures/tap.dart:654:11)
                    #26_____BaseTapGestureRecognizer._checkUp_(package:flutter/src/gestures/tap.dart:311:5)
                    #27_____BaseTapGestureRecognizer.acceptGesture_(package:flutter/src/gestures/tap.dart:281:7)
                    #28_____GestureArenaManager.sweep_(package:flutter/src/gestures/arena.dart:167:27)
                    #29_____GestureBinding.handleEvent_(package:flutter/src/gestures/binding.dart:492:20)
                    #30_____GestureBinding.dispatchEvent_(package:flutter/src/gestures/binding.dart:468:22)
                    #31_____RendererBinding.dispatchEvent_(package:flutter/src/rendering/binding.dart:439:11)
                    #32_____GestureBinding._handlePointerEventImmediately_(package:flutter/src/gestures/binding.dart:413:7)
                    #33_____GestureBinding.handlePointerEvent_(package:flutter/src/gestures/binding.dart:376:5)
                    #34_____TestWidgetsFlutterBinding.handlePointerEventForSource.<anonymous_closure>_(package:flutter_test/src/binding.dart:652:42)
                    #35_____TestWidgetsFlutterBinding.withPointerEventSource_(package:flutter_test/src/binding.dart:662:11)
                    #36_____TestWidgetsFlutterBinding.handlePointerEventForSource_(package:flutter_test/src/binding.dart:652:5)
                    #37_____WidgetTester.sendEventToBinding.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:840:15)
                    #38______rootRun_(dart:async/zone.dart:1399:13)
                    #39______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #40_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #41_____WidgetTester.sendEventToBinding_(package:flutter_test/src/widget_tester.dart:839:27)
                    #42_____TestGesture.up.<anonymous_closure>_(package:flutter_test/src/test_pointer.dart:550:26)
                    #43______rootRun_(dart:async/zone.dart:1399:13)
                    #44______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #45_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #46_____TestGesture.up_(package:flutter_test/src/test_pointer.dart:543:27)
                    #47_____WidgetController.tapAt.<anonymous_closure>_(package:flutter_test/src/controller.dart:611:21)
                    <asynchronous_suspension>
                    #48_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #49_____main.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/material/about_test.dart:191:5)
                    <asynchronous_suspension>
                    #50_____withLeakTracking_(package:leak_tracker/src/leak_tracking/orchestration.dart:90:5)
                    <asynchronous_suspension>
                    #51______withFlutterLeakTracking.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:120:21)
                    <asynchronous_suspension>
                    #52_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #53_____testWidgetsWithLeakTracking.wrappedCallback_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:60:5)
                    <asynchronous_suspension>
                    #54_____testWidgets.<anonymous_closure>.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:165:15)
                    <asynchronous_suspension>
                    #55_____TestWidgetsFlutterBinding._runTestBody_(package:flutter_test/src/binding.dart:1008:5)
                    <asynchronous_suspension>
                    #56_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:42)
                    <asynchronous_suspension>
                  disposal: >
                    #4_______withFlutterLeakTracking.flutterEventToLeakTracker_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:112:12)
                    #5______MemoryAllocations.dispatchObjectEvent_(package:flutter/src/foundation/memory_allocations.dart:238:23)
                    #6______MemoryAllocations.dispatchObjectDisposed_(package:flutter/src/foundation/memory_allocations.dart:286:5)
                    #7______ChangeNotifier.dispose_(package:flutter/src/foundation/change_notifier.dart:357:34)
                    #8______Route.dispose_(package:flutter/src/widgets/navigator.dart:457:25)
                    #9______OverlayRoute.dispose_(package:flutter/src/widgets/routes.dart:91:11)
                    #10_____TransitionRoute.dispose_(package:flutter/src/widgets/routes.dart:489:11)
                    #11______RouteEntry.forcedDispose_(package:flutter/src/widgets/navigator.dart:3061:11)
                    #12______RouteEntry.dispose.<anonymous_closure>.<anonymous_closure>_(package:flutter/src/widgets/navigator.dart:3116:13)
                    #13_____StackZoneSpecification._run_(package:stack_trace/src/stack_zone_specification.dart:207:15)
                    #14_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:48)
                    #15______rootRun_(dart:async/zone.dart:1391:47)
                    #16______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #17______CustomZone.runGuarded_(dart:async/zone.dart:1209:7)
                    #18______CustomZone.bindCallbackGuarded.<anonymous_closure>_(dart:async/zone.dart:1249:23)
                    #19_____FakeAsync.flushMicrotasks_(package:fake_async/fake_async.dart:197:32)
                    #20_____AutomatedTestWidgetsFlutterBinding.pump.<anonymous_closure>_(package:flutter_test/src/binding.dart:1261:26)
                    #21______rootRun_(dart:async/zone.dart:1399:13)
                    #22______CustomZone.run_(dart:async/zone.dart:1301:19)
                    #23_____TestAsyncUtils.guard_(package:flutter_test/src/test_async_utils.dart:68:41)
                    #24_____AutomatedTestWidgetsFlutterBinding.pump_(package:flutter_test/src/binding.dart:1246:27)
                    #25_____WidgetTester.pumpAndSettle.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:692:23)
                    <asynchronous_suspension>
                    #26_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #27_____main.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/material/about_test.dart:197:5)
                    <asynchronous_suspension>
                    #28_____withLeakTracking_(package:leak_tracker/src/leak_tracking/orchestration.dart:90:5)
                    <asynchronous_suspension>
                    #29______withFlutterLeakTracking.<anonymous_closure>_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:120:21)
                    <asynchronous_suspension>
                    #30_____TestAsyncUtils.guard.<anonymous_closure>_(package:flutter_test/src/test_async_utils.dart:114:7)
                    <asynchronous_suspension>
                    #31_____testWidgetsWithLeakTracking.wrappedCallback_(file:///Users/gspencer/code/flutter/packages/flutter/test/foundation/leak_tracking.dart:60:5)
                    <asynchronous_suspension>
                    #32_____testWidgets.<anonymous_closure>.<anonymous_closure>_(package:flutter_test/src/widget_tester.dart:165:15)
                    <asynchronous_suspension>
                    #33_____TestWidgetsFlutterBinding._runTestBody_(package:flutter_test/src/binding.dart:1008:5)
                    <asynchronous_suspension>
                    #34_____StackZoneSpecification._registerCallback.<anonymous_closure>_(package:stack_trace/src/stack_zone_specification.dart:114:42)
                    <asynchronous_suspension>
                  path: >
                    References that retain the object from garbage collection.
                    package:flutter/src/widgets/app.dart/defaultActions
                    dart.collection/_Map:[InstanceRef id: classes/4629/types/0, kind: Type, identityHashCode: 1318566424, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/VoidCallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:listenedActions
                    dart.collection/_Set:data_
                    dart.core/_List:6
                    package:flutter/src/widgets/actions.dart/_OverridableContextAction:lookupContext
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:5
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/navigator.dart/NavigatorState:userGestureInProgressNotifier
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in _handleChange):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/transitions.dart/_AnimatedState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/about.dart/_LicensePageState:selectedId
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in _valueChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/value_listenable_builder.dart/_ValueListenableBuilderState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/material.dart/_MaterialState:_tickerModeNotifier@791311458
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier:_listeners@429329750
                    dart.core/_List:12
                    dart.core/_Closure (in _updateTicker):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/implicit_animations.dart/_AnimatedDefaultTextStyleState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_renderObject@345042623
                    package:flutter/src/rendering/paragraph.dart/RenderParagraph:_relayoutBoundary@360266271
                    package:flutter/src/rendering/viewport.dart/RenderViewport:_offset@741057554
                    package:flutter/src/widgets/scroll_position_with_single_context.dart/ScrollPositionWithSingleContext:context
                    package:flutter/src/widgets/scrollable.dart/ScrollableState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/overscroll_indicator.dart/_GlowingOverscrollIndicatorState:_trailingController@924442496
                    package:flutter/src/widgets/overscroll_indicator.dart/_GlowController:_listeners@429329750
                    dart.core/_List:0
                    dart.core/_Closure (in markNeedsPaint):_context@0150898
                    @Context:0
                    package:flutter/src/rendering/custom_paint.dart/RenderCustomPaint:_child@360266271
                    package:flutter/src/rendering/proxy_box.dart/RenderRepaintBoundary:_child@360266271
                    package:flutter/src/widgets/scrollable.dart/_RenderScrollSemantics:_innerNode@897019050
                    package:flutter/src/semantics/semantics.dart/SemanticsNode:_debugPreviousSnapshot@748082469
                    dart.core/_GrowableList:2
                    package:flutter/src/semantics/semantics.dart/SemanticsNode:_actions@748082469
                    dart.collection/_Map:[InstanceRef id: objects/3772, kind: PlainInstance, identityHashCode: 265659702, classRef: [ClassRef id: classes/1196, name: SemanticsAction, library: [LibraryRef id: libraries/@15065589, name: dart.ui, uri: dart:ui]]]
                    dart.core/_Closure (in _addArgumentlessAction):_context@0150898
                    @Context:0
                    dart.core/_Closure (in _performTap):_context@0150898
                    @Context:0
                    package:flutter/src/rendering/proxy_box.dart/RenderSemanticsAnnotations:_properties@347160605
                    package:flutter/src/semantics/semantics.dart/SemanticsProperties:onTap
                    dart.core/_Closure (in simulateTap):_context@0150898
                    @Context:0
                    package:flutter/src/material/ink_well.dart/_InkResponseState:_actionMap@560059085
                    dart.collection/_Map:[InstanceRef id: classes/4635/types/0, kind: Type, identityHashCode: 2951682716, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/CallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/focus_scope.dart/_FocusState:_internalNode@832492240
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_parent@831042876
                    package:flutter/src/widgets/focus_manager.dart/FocusScopeNode:_children@831042876
                    dart.core/_GrowableList:0
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_ancestors@831042876
                    dart.core/_GrowableList:11
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_context@831042876
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:6
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:3
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_ancestorRenderObjectElement@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/scaffold.dart/ScaffoldMessengerState:_scaffolds@601420462
                    dart.collection/_Set:data_
                    dart.core/_List:2
                    package:flutter/src/material/scaffold.dart/ScaffoldState:_floatingActionButtonVisibilityController@601420462
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_statusListeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:2
                    dart.core/_Closure (in _maybeNotifyStatusListeners):_context@0150898
                    @Context:0
                    package:flutter/src/animation/animations.dart/AnimationMin:first
                    package:flutter/src/material/floating_action_button_location.dart/_AnimationSwap:_statusListeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:1
                    dart.core/_Closure (in _maybeNotifyStatusListeners):_context@0150898
                    @Context:0
                    package:flutter/src/animation/animations.dart/AnimationMin:next
                    package:flutter/src/animation/animations.dart/CurvedAnimation:parent
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_ticker@370066280
                    package:flutter/src/widgets/ticker_provider.dart/_WidgetTicker:_creator@791311458
                    package:flutter/src/material/scaffold.dart/_FloatingActionButtonTransitionState:_currentRotationAnimation@601420462
                    package:flutter/src/animation/animations.dart/TrainHoppingAnimation:_listeners@373091803
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleChange):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/transitions.dart/_AnimatedState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_renderObject@345042623
                    package:flutter/src/rendering/proxy_box.dart/RenderTransform:_relayoutBoundary@360266271
                    package:flutter/src/rendering/custom_layout.dart/RenderCustomMultiChildLayoutBox:_lastChild@360266271
                    package:flutter/src/rendering/stack.dart/RenderStack:debugCreator
                    package:flutter/src/widgets/framework.dart/DebugCreator:element
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_ancestorRenderObjectElement@345042623
                    package:flutter/src/widgets/framework.dart/MultiChildRenderObjectElement:_children@345042623
                    dart.core/_List:1
                    package:flutter/src/widgets/framework.dart/ParentDataElement:_child@345042623
                    package:flutter/src/widgets/inherited_model.dart/InheritedModelElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:1
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/inherited_model.dart/InheritedModelElement:_dependents@345042623
                    dart.collection/_HashMap:_buckets@3220832
                    dart.core/_List:6
                    dart.collection/_HashMapEntry:key
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/material/ink_well.dart/_InkResponseState:_actionMap@560059085
                    dart.collection/_Map:[InstanceRef id: classes/4635/types/0, kind: Type, identityHashCode: 2951682716, classRef: [ClassRef id: classes/48, name: _Type, library: [LibraryRef id: libraries/@0150898, name: dart.core, uri: dart:core]]]
                    package:flutter/src/widgets/actions.dart/CallbackAction:_listeners@817441002
                    package:flutter/src/foundation/observer_list.dart/ObserverList:_list@441023516
                    dart.core/_GrowableList:0
                    dart.core/_Closure (in _handleActionChanged):_context@0150898
                    @Context:0
                    package:flutter/src/widgets/actions.dart/_ActionsState:_element@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/InheritedElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/focus_scope.dart/_FocusState:_internalNode@832492240
                    package:flutter/src/widgets/focus_manager.dart/FocusNode:_parent@831042876
                    package:flutter/src/widgets/focus_manager.dart/FocusScopeNode:_context@831042876
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/inherited_notifier.dart/_InheritedNotifierElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/SingleChildRenderObjectElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatelessElement:_child@345042623
                    package:flutter/src/widgets/framework.dart/StatefulElement:_state@345042623
                    package:flutter/src/widgets/dual_transition_builder.dart/_DualTransitionBuilderState:_reverseAnimation@895338117
                    package:flutter/src/animation/animations.dart/ProxyAnimation:_parent@371411118
                    package:flutter/src/animation/animations.dart/ReverseAnimation:parent
                    package:flutter/src/animation/animations.dart/ProxyAnimation:_parent@371411118
                    package:flutter/src/animation/animation_controller.dart/AnimationController:_ticker@370066280
                    package:flutter/src/widgets/ticker_provider.dart/_WidgetTicker:_creator@791311458
                    package:flutter/src/widgets/navigator.dart/NavigatorState:_history@31124995
                    dart.core/_GrowableList:0
                    package:flutter/src/widgets/navigator.dart/_RouteEntry:lastAnnouncedPoppedNextRoute
                    package:flutter/src/material/page.dart/MaterialPageRoute:_restorationScopeId@31124995
                    package:flutter/src/foundation/change_notifier.dart/ValueNotifier
          
          
)

@polina-c
Copy link
Contributor Author

Drafted explanation of the case to leak tracker documentation: dart-lang/leak_tracker#96

Does it help?

@gspencergoog
Copy link
Contributor

Yes, that helps somewhat. So, in this case, that means that something, presumably the ValueNotifier in the OverlayEntryWidget, should be nulled when the widget is disposed, but isn't being nulled, correct?

@polina-c
Copy link
Contributor Author

polina-c commented Jul 18, 2023

Right! Most likely the entire OverlayEntryWidget (or its state), should be nulled, because it will not function without the notifier anyway.

@huycozy huycozy added framework flutter/packages/flutter repository. See also f: labels. f: routes Navigator, Router, and related APIs. team-framework Owned by Framework team and removed in triage Presently being triaged by the triage team labels Jul 19, 2023
@goderbauer goderbauer added triaged-framework Triaged by Framework team P2 Important issues not at the top of the work list labels Jul 25, 2023
auto-submit bot pushed a commit that referenced this issue Aug 15, 2023
## Description

Fix three memory leaks detected by `about_test.dart`, but were really in the `Route` and `OverlayEntry` classes.

## Related Issues
 - Fixes #130354

## Tests
 - Updates about_test.dart to not ignore the leaks anymore.
@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 29, 2023
@polina-c polina-c added the a: leak tracking Issues and PRs related to memory leaks detected by leak_tracker label Sep 21, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
a: leak tracking Issues and PRs related to memory leaks detected by leak_tracker f: routes Navigator, Router, and related APIs. framework flutter/packages/flutter repository. See also f: labels. P2 Important issues not at the top of the work list team-framework Owned by Framework team triaged-framework Triaged by Framework team
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants