Skip to content

Conversation

@polina-c
Copy link
Contributor

@polina-c polina-c commented Jul 27, 2023

Contributes to #130467

Filed issue: #132620

@github-actions github-actions bot added a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels Jul 27, 2023
@polina-c polina-c changed the title Investigation for https://github.com/flutter/flutter/issues/130467 Investigation for leak tracker side effects. Jul 27, 2023
@polina-c
Copy link
Contributor Author

polina-c commented Jul 27, 2023

Observed that without leak tracker BuildOwner.finalizeTree is invoked 7 times and last time disposes EditableTextState, while with leak tracker finalizeTree is invoked just 6 times and disposal does not happen.

Here is call stacks of the 7 times:
!!!!! finalizing tree...
#0      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3064:25)
#1      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1425:19)
#2      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1301:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1231:9)
#5      AutomatedTestWidgetsFlutterBinding.scheduleWarmUpFrame (package:flutter_test/src/binding.dart:1350:5)
#6      runApp (package:flutter/src/widgets/binding.dart:1165:7)
#7      TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:996:5)
#8      _rootRunBinary (dart:async/zone.dart:1431:13)
#9      _CustomZone.runBinary (dart:async/zone.dart:1315:19)
#10     TestWidgetsFlutterBinding._runTest (package:flutter_test/src/binding.dart:986:14)
#11     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1461:24)
#12     FakeAsync.run.<anonymous closure>.<anonymous closure> (package:fake_async/fake_async.dart:182:54)
#13     _rootRun (dart:async/zone.dart:1399:13)
#14     _CustomZone.run (dart:async/zone.dart:1301:19)
#15     _runZoned (dart:async/zone.dart:1804:10)
#16     runZoned (dart:async/zone.dart:1747:10)
#17     withClock (package:clock/src/default.dart:52:10)
#18     FakeAsync.run.<anonymous closure> (package:fake_async/fake_async.dart:182:22)
#19     _rootRun (dart:async/zone.dart:1399:13)
#20     _CustomZone.run (dart:async/zone.dart:1301:19)
#21     _runZoned (dart:async/zone.dart:1804:10)
#22     runZoned (dart:async/zone.dart:1747:10)
#23     FakeAsync.run (package:fake_async/fake_async.dart:182:7)
#24     AutomatedTestWidgetsFlutterBinding.runTest (package:flutter_test/src/binding.dart:1458:15)
#25     testWidgets.<anonymous closure> (package:flutter_test/src/widget_tester.dart:158:24)
#26     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:215:19)
<asynchronous suspension>
#27     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:213:7)
<asynchronous suspension>
#28     Invoker._waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:258:9)
<asynchronous suspension>

!!!!! finalizing tree...
#0      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3064:25)
#1      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1425:19)
#2      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1301:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1231:9)
#5      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:1259:9)
#6      _rootRun (dart:async/zone.dart:1399:13)
#7      _CustomZone.run (dart:async/zone.dart:1301:19)
#8      TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#9      AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:1246:27)
#10     WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:574:22)
#11     _rootRun (dart:async/zone.dart:1399:13)
#12     _CustomZone.run (dart:async/zone.dart:1301:19)
#13     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#14     WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:571:27)
#15     main.<anonymous closure> (file:///Users/polinach/_/flutter/packages/flutter/test/material/text_form_field_test__________.dart:31:18)
#16     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:165:29)
<asynchronous suspension>
#17     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:1008:5)
<asynchronous suspension>
#18     StackZoneSpecification._registerCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart:114:42)
<asynchronous suspension>

!!!!! finalizing tree...
#0      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3064:25)
#1      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1425:19)
#2      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1301:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1231:9)
#5      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:1259:9)
#6      _rootRun (dart:async/zone.dart:1399:13)
#7      _CustomZone.run (dart:async/zone.dart:1301:19)
#8      TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#9      AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:1246:27)
#10     WidgetTester.pump.<anonymous closure> (package:flutter_test/src/widget_tester.dart:633:53)
#11     _rootRun (dart:async/zone.dart:1399:13)
#12     _CustomZone.run (dart:async/zone.dart:1301:19)
#13     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#14     WidgetTester.pump (package:flutter_test/src/widget_tester.dart:633:27)
#15     main.<anonymous closure> (file:///Users/polinach/_/flutter/packages/flutter/test/material/text_form_field_test__________.dart:45:18)
<asynchronous suspension>
#16     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:165:15)
<asynchronous suspension>
#17     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:1008:5)
<asynchronous suspension>
#18     StackZoneSpecification._registerCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart:114:42)
<asynchronous suspension>

!!!!! finalizing tree...
#0      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3064:25)
#1      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1425:19)
#2      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1301:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1231:9)
#5      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:1259:9)
#6      _rootRun (dart:async/zone.dart:1399:13)
#7      _CustomZone.run (dart:async/zone.dart:1301:19)
#8      TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#9      AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:1246:27)
#10     WidgetTester.pumpAndSettle.<anonymous closure> (package:flutter_test/src/widget_tester.dart:692:23)
#11     _rootRun (dart:async/zone.dart:1399:13)
#12     _CustomZone.run (dart:async/zone.dart:1301:19)
#13     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#14     WidgetTester.pumpAndSettle (package:flutter_test/src/widget_tester.dart:685:27)
#15     main.<anonymous closure> (file:///Users/polinach/_/flutter/packages/flutter/test/material/text_form_field_test__________.dart:47:18)
<asynchronous suspension>
#16     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:165:15)
<asynchronous suspension>
#17     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:1008:5)
<asynchronous suspension>
#18     StackZoneSpecification._registerCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart:114:42)
<asynchronous suspension>

!!!!! finalizing tree...
#0      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3064:25)
#1      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1425:19)
#2      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1301:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1231:9)
#5      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:1259:9)
#6      _rootRun (dart:async/zone.dart:1399:13)
#7      _CustomZone.run (dart:async/zone.dart:1301:19)
#8      TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#9      AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:1246:27)
#10     WidgetTester.pumpAndSettle.<anonymous closure> (package:flutter_test/src/widget_tester.dart:692:23)
<asynchronous suspension>
#11     TestAsyncUtils.guard.<anonymous closure> (package:flutter_test/src/test_async_utils.dart:114:7)
<asynchronous suspension>
#12     main.<anonymous closure> (file:///Users/polinach/_/flutter/packages/flutter/test/material/text_form_field_test__________.dart:47:5)
<asynchronous suspension>
#13     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:165:15)
<asynchronous suspension>
#14     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:1008:5)
<asynchronous suspension>
#15     StackZoneSpecification._registerCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart:114:42)
<asynchronous suspension>

!!!!! finalizing tree...
#0      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3064:25)
#1      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1425:19)
#2      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1301:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1231:9)
#5      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:1259:9)
#6      _rootRun (dart:async/zone.dart:1399:13)
#7      _CustomZone.run (dart:async/zone.dart:1301:19)
#8      TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:68:41)
#9      AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:1246:27)
#10     WidgetTester.pumpAndSettle.<anonymous closure> (package:flutter_test/src/widget_tester.dart:692:23)
<asynchronous suspension>
#11     TestAsyncUtils.guard.<anonymous closure> (package:flutter_test/src/test_async_utils.dart:114:7)
<asynchronous suspension>
#12     main.<anonymous closure> (file:///Users/polinach/_/flutter/packages/flutter/test/material/text_form_field_test__________.dart:47:5)
<asynchronous suspension>
#13     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:165:15)
<asynchronous suspension>
#14     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:1008:5)
<asynchronous suspension>
#15     StackZoneSpecification._registerCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart:114:42)
<asynchronous suspension>

!!!!! finalizing tree...
#0      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3064:25)
#1      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1425:19)
#2      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1301:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1231:9)
#5      AutomatedTestWidgetsFlutterBinding.scheduleWarmUpFrame (package:flutter_test/src/binding.dart:1350:5)
#6      runApp (package:flutter/src/widgets/binding.dart:1165:7)
#7      TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:1015:7)
<asynchronous suspension>
#8      StackZoneSpecification._registerCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart:114:42)
<asynchronous suspension>

!!!! disposing EditableTextState for EditableText-[LabeledGlobalKey<EditableTextState>#5618d](controller: TextEditingController#c4158(TextEditingValue(text: ┤blah1 blah2├, selection: TextSelection(baseOffset: 0, extentOffset: 5, isDirectional: false), composing: TextRange(start: -1, end: -1))), focusNode: FocusNode#48f7f, debugLabel: ((englishLike bodyLarge 2021).merge((blackRedwoodCity bodyLarge).apply)).merge(unknown), inherit: false, color: Color(0xff1c1b1f), family: .AppleSystemUIFont, size: 16.0, weight: 400, letterSpacing: 0.5, baseline: alphabetic, height: 1.5x, leadingDistribution: even, decoration: Color(0xff1c1b1f) TextDecoration.none, textAlign: start, keyboardType: TextInputType(name: TextInputType.text, signed: null, decimal: null), autofillHints: [], spellCheckConfiguration:
    spell check enabled   : false
      spell check service   : null
      misspelled text style : null
      spell check suggestions toolbar builder: null
  )

@polina-c polina-c changed the title Investigation for leak tracker side effects. Fix some leaks and add test to test cover remaining in a simple way. Aug 16, 2023
@polina-c polina-c requested a review from justinmc August 16, 2023 05:08
@polina-c polina-c marked this pull request as ready for review August 16, 2023 05:08
@polina-c
Copy link
Contributor Author

After upgrade of leak tracker flakiness disappeared and I was able to fix some leaks.

Copy link
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

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

LGTM 👍

@polina-c polina-c added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 16, 2023
@auto-submit auto-submit bot merged commit 112f429 into flutter:master Aug 16, 2023
@polina-c polina-c deleted the investigate branch August 16, 2023 18:50
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 17, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 18, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: text input Entering text in a text field or keyboard related problems autosubmit Merge PR when tree becomes green via auto submit App f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants