sdk icon indicating copy to clipboard operation
sdk copied to clipboard

jit compiler produces erroneous runtime optimizations on large applications

Open 2ZeroSix opened this issue 1 year ago • 5 comments

TLDR

Amount of classes somehow trigger bugs in runtime jit optimizations, particularly disabling of Inliner fixed the problem for both our internal codebase and generated example.

might be related to https://github.com/dart-lang/sdk/issues/54886

Description

Recently we faced a strange exception, the app would hit it once in a while and stop working till hot or full restart.

example: (actual list of dirty widgets might change)

FlutterError: buildScope missed some dirty elements.
This probably indicates that the dirty list should have been resorted but was not.
The list of dirty elements at the end of the buildScope call was
AnimatedBuilder
#0      BuildOwner.buildScope.<anonymous closure> 
#1      BuildOwner.buildScope 
#2      WidgetsBinding.drawFrame 
#3      RendererBinding._handlePersistentFrameCallback 
#4      SchedulerBinding._invokeFrameCallback 
#5      SchedulerBinding.handleDrawFrame 
#6      SchedulerBinding._handleDrawFrame 
#7      _rootRun (dart:async/zone.dart:1398:13)
#8      _CustomZone.run (dart:async/zone.dart:1300:19)
#9      _CustomZone.runGuarded (dart:async/zone.dart:1208:7)
#10     _invoke (dart:ui/hooks.dart:147:10)
#11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5)
#12     _drawFrame (dart:ui/hooks.dart:112:31)

With each passing week, it became easier to reproduce it, to the point when we could not debug full application anymore. So it became clear that size of codebase directly affect reproducibility of this exception.

This idea was confirmed by experiment: removal of usages and imports of any large module extinguished exceptions completely. So imports are enough for reproduction, it doesn't matter if code is actually reachable.

Additional debugging showed that at some point the code in jit mode just started working incorrectly. The idea arose that inlining could somehow influence this and it was it. As soon as I replaced vm:prefer-inline by vm:never-inline behavior of the bug changed, and as soon as I completely disabled inlining the problem vanished.

example of such behavior

dart 2.19.6, flutter 3.7.12 https://drive.google.com/file/d/1AZij0axanL3FNaqV1EMotJJWy65EO020/view 00:08 - animation freezes 00:12 - buildScope exception happen 00:32 - replace vm:prefer-inline by vm:never-inline, and hot reload 01:52 - app is restarted 03:34 - assert _lifecycleState == ElementLifecycle.inactive 04:00 - opening _lifecycleState in debugger, it's actually .inactive, so the assertion is wrong

Steps to reproduce

example with reproduction: example project runtime

  • dart ./tools/generate.dart && flutter run
  • open and close keyboard a few times, typically 10 times is enough on example that large. expected result: everything continues working actual result: most content of the app is freezed, only focus node still triggers keyboard opening
videos with reproduction on different versions

dart 2.19.6, flutter 3.7.12 https://drive.google.com/file/d/1AZij0axanL3FNaqV1EMotJJWy65EO020/view 00:08 - animation freezes 00:12 - buildScope exception happen 00:32 - replace vm:prefer-inline by vm:never-inline, and hot reload 01:52 - app is restarted 03:34 - assert _lifecycleState == ElementLifecycle.inactive 04:00 - opening _lifecycleState in debugger, it's actually .inactive, so the assertion is wrong

dart 3.0.0, flutter 3.10.0 https://drive.google.com/file/d/1GlihHsz-rmH6KRxHczIPYSAFG9JZz-zo/view 00:28 - assert _lifecycleState == ElementLifecycle.inactive 00:43 - opening _lifecycleState in debugger, it's actually .inactive

dart 3.0.6, flutter 3.10.6 https://drive.google.com/file/d/1d5cleiZ_lcL_s84O9CAtCY1UJbCac_Hw/view 00:30 - assert _lifecycleState == ElementLifecycle.inactive 00:47 - opening _lifecycleState in debugger, it's actually .inactive

dart 3.2.2, flutter 3.16.2 https://drive.google.com/file/d/1CbFF9ZXYkMzynsF7mq-RGvIqwk3QP5rW/view 02:34 - assert _lifecycleState == ElementLifecycle.inactive 02:47 - opening _lifecycleState in debugger, it's actually .inactive

dart 3.3.0-197.0.dev, flutter master https://drive.google.com/file/d/1NIMoy17jWYEN1Q89FxFH1oEMRWs3wCYH/view 02:11 - assert _lifecycleState == ElementLifecycle.inactive 02:24 - opening _lifecycleState in debugger, it's actually .inactive

What have we tried to do to mitigate the issue internally

  • Disable inliner: https://github.com/2ZeroSix/sdk/compare/feature/reuse_patch_classes...2ZeroSix:sdk:feature/disable_inliner_for_debug
    • the bug was never reproduced with disabled inliner
  • Use as few mixins as possible. We couldn't determine why it mitigated the issue so effectively.

2ZeroSix avatar Feb 12 '24 11:02 2ZeroSix

//cc @alexmarkov

a-siva avatar Feb 12 '24 18:02 a-siva

I wasn't able to reproduce the problem both on the current Flutter and on 3.16.2.

@2ZeroSix Could you try reproducing the problem on the latest Flutter (main channel) once again? Also, please post the output of flutter doctor -v and flutter run -v of the failing run.

alexmarkov avatar Feb 15 '24 18:02 alexmarkov

@alexmarkov Sorry, I seem to have messed up the example to the point where it became impossible to reproduce in 3.16.2 and main, while trying to simplify it.

I've just updated it, the only difference is that i moved back a bunch of export directives, didn't expect it to be important. commit: https://github.com/2ZeroSix/flutter_gen_snapshot_oom_example/pull/2/commits/011fdf19293ad87d849d4725fed5c045727f2428

Here are logs from flutter 3.16.2 (dart 3.2.2) and 3.19.0 (dart 3.3.0), but I couldn't reproduce it on main (flutter: 3.20.0-7.0.pre.64 dart: 3.4.0-140.0.dev) anymore.

Can't say whether it's an issue with an example or problem was somehow fixed, because our internal code is not ready yet to be built against newest versions. Currently there is a possibility that it was fixed somewhere between 3.3.0-197.0.dev and 3.4.0-140.0.dev, trying to investigate further.

3.16.2: flutter doctor -v

[!] Flutter (Channel stable, 3.16.2, on macOS 13.3.1 22E261 darwin-arm64, locale en-RU)
    • Flutter version 3.16.2 on channel stable at /Users/2zerosix/fvm/versions/3.16.2
    ! Warning: `dart` on your path resolves to /opt/homebrew/Cellar/dart/3.2.6/libexec/bin/dart, which is not inside your current Flutter SDK checkout at /Users/2zerosix/fvm/versions/3.16.2. Consider adding /Users/2zerosix/fvm/versions/3.16.2/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 9e1c857886 (3 months ago), 2023-11-30 11:51:18 -0600
    • Engine revision cf7a9d0800
    • Dart version 3.2.2
    • DevTools version 2.28.3
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/2zerosix/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/2zerosix/Library/Android/sdk
    • Java binary at: /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.11005911/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode14.3.1.app/Contents/Developer
    • Build 14E300b
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.10121639/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.11005911/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/213.6777.52/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] IntelliJ IDEA Ultimate Edition (version 2022.3.1)
    • IntelliJ at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/223.8214.52/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.86.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.82.0

[✓] Connected device (3 available)
    • sdk gphone64 arm64 (mobile) • emulator-5554             • android-arm64  • Android 14 (API 34) (emulator)
    • macOS (desktop)             • macos                     • darwin-arm64   • macOS 13.3.1 22E261 darwin-arm64
    • Chrome (web)                • chrome                    • web-javascript • Google Chrome 121.0.6167.184
    ! Error: (null) needs to connect to determine its availability. Check the connection between the device and its companion iPhone, and the connection between the iPhone and Xcode. Both devices may also need to be restarted and unlocked. (code 1)
    ! Error: Bogdan’s iPhone is busy: Making Bogdan’s iPhone ready for development. Xcode will continue when Bogdan’s iPhone is finished. (code -10)

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.
3.16.2: dart ./tools/generate.dart && flutter pub get && flutter run -v

full logs: https://github.com/2ZeroSix/flutter_gen_snapshot_oom_example/blob/71638ba7be3b5a580c21199c4b002656af760376/logs/3.16.2.txt

[  +59 ms] ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
           The following assertion was thrown building _BodyBuilder:
           'package:flutter/src/widgets/framework.dart': Failed assertion: line 4509 pos 12: '_lifecycleState
           == _ElementLifecycle.inactive': is not true.

           Either the assertion indicates an error in the framework itself, or we should provide substantially
           more information in this error message to help you determine and fix the underlying cause.
           In either case, please report this assertion by filing a bug on GitHub:
             https://github.com/flutter/flutter/issues/new?template=2_bug.yml

           The relevant error-causing widget was:
             Scaffold
             Scaffold:file:///Users/2zerosix/Projects/flutter_gen_snapshot_oom_example/lib/main.dart:22:22

           When the exception was thrown, this was the stack:
           #2      Element.debugDeactivated (package:flutter/src/widgets/framework.dart:4509:12)
           #3      InheritedElement.debugDeactivated (package:flutter/src/widgets/framework.dart:5920:11)
           #4      _InactiveElements._deactivateRecursively.<anonymous closure> (package:flutter/src/widgets/framework.dart:2089:15)
           #5      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2091:6)
           #6      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #7      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #8      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #9      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #10     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #11     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #12     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #13     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #14     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #15     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #16     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #17     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #18     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #19     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #20     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #21     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #22     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #23     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #24     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #25     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #26     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #27     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #28     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #29     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #30     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #31     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #32     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #33     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #34     Iterable.forEach (dart:core/iterable.dart:347:35)
           #35     SlottedRenderObjectElement.visitChildren (package:flutter/src/widgets/slotted_render_object_widget.dart:234:25)
           #36     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #37     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #38     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #39     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #40     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #41     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #42     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #43     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #44     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #45     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #46     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #47     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #48     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #49     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #50     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #51     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #52     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #53     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #54     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #55     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #56     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #57     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #58     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #59     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6722:14)
           #60     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #61     MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6834:16)
           #62     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #63     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5523:14)
           #64     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2087:13)
           #65     _InactiveElements.add (package:flutter/src/widgets/framework.dart:2099:7)
           #66     Element.deactivateChild (package:flutter/src/widgets/framework.dart:4368:30)
           #67     Element._retakeInactiveElement (package:flutter/src/widgets/framework.dart:4254:14)
           ...     Normal element mounting (19 frames)
           #86     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4326:16)
           #87     MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6871:36)
           #88     Element.updateChild (package:flutter/src/widgets/framework.dart:3837:18)
           #89     Element.updateChildren (package:flutter/src/widgets/framework.dart:4024:32)
           #90     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6896:17)
           #91     Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #92     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #93     Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #94     ProxyElement.update (package:flutter/src/widgets/framework.dart:5800:5)
           #95     Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #96     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #97     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #98     Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #99     StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #100    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #101    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #102    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #103    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #104    StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #105    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #106    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #107    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #108    ProxyElement.update (package:flutter/src/widgets/framework.dart:5800:5)
           #109    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #110    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #111    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #112    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #113    StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #114    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #115    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6743:14)
           #116    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #117    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #118    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #119    ProxyElement.update (package:flutter/src/widgets/framework.dart:5800:5)
           #120    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #121    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6743:14)
           #122    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #123    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #124    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #125    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #126    StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #127    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #128    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #129    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #130    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #131    StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #132    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #133    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #134    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #135    ProxyElement.update (package:flutter/src/widgets/framework.dart:5800:5)
           #136    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #137    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #138    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #139    ProxyElement.update (package:flutter/src/widgets/framework.dart:5800:5)
           #140    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #141    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #142    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #143    ProxyElement.update (package:flutter/src/widgets/framework.dart:5800:5)
           #144    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #145    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #146    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #147    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #148    StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #149    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #150    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #151    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #152    ProxyElement.update (package:flutter/src/widgets/framework.dart:5800:5)
           #153    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #154    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #155    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #156    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #157    StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #158    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #159    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6743:14)
           #160    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #161    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6743:14)
           #162    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #163    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #164    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5634:11)
           #165    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #166    StatefulElement.update (package:flutter/src/widgets/framework.dart:5657:5)
           #167    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #168    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #169    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #170    StatelessElement.update (package:flutter/src/widgets/framework.dart:5547:5)
           #171    Element.updateChild (package:flutter/src/widgets/framework.dart:3815:15)
           #172    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5496:16)
           #173    Element.rebuild (package:flutter/src/widgets/framework.dart:5187:7)
           #174    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2895:19)
           #175    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:984:21)
           #176    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
           #177    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1325:15)
           #178    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1255:9)
           #179    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1113:5)
           #180    _invoke (dart:ui/hooks.dart:312:13)
           #181    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:383:5)
           #182    _drawFrame (dart:ui/hooks.dart:283:31)
           (elided 2 frames from class _AssertionError)

           ════════════════════════════════════════════════════════════════════════════════════════════════════
[  +12 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2106 pos 12: '_elements.contains(element)': is not true.
[  +16 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2106 pos 12: '_elements.contains(element)': is not true.
[  +51 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2106 pos 12: '_elements.contains(element)': is not true.
[  +13 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2106 pos 12: '_elements.contains(element)': is not true.
[  +14 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2106 pos 12: '_elements.contains(element)': is not true.
[  +34 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2106 pos 12: '_elements.contains(element)': is not true.
[  +17 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2106 pos 12: '_elements.contains(element)': is not true.
3.19.0: flutter doctor -v

[!] Flutter (Channel stable, 3.19.0, on macOS 13.3.1 22E261 darwin-arm64, locale en-RU)
    • Flutter version 3.19.0 on channel stable at /Users/2zerosix/fvm/versions/stable
    ! Warning: `dart` on your path resolves to /opt/homebrew/Cellar/dart/3.2.6/libexec/bin/dart, which is not inside your current Flutter SDK checkout at /Users/2zerosix/fvm/versions/stable. Consider adding /Users/2zerosix/fvm/versions/stable/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision bae5e49bc2 (3 days ago), 2024-02-13 17:46:18 -0800
    • Engine revision 04817c99c9
    • Dart version 3.3.0
    • DevTools version 2.31.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/2zerosix/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/2zerosix/Library/Android/sdk
    • Java binary at: /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.11005911/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode14.3.1.app/Contents/Developer
    • Build 14E300b
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.10121639/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.11005911/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/213.6777.52/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] IntelliJ IDEA Ultimate Edition (version 2022.3.1)
    • IntelliJ at /Users/2zerosix/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/223.8214.52/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.86.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.82.0

[✓] Connected device (3 available)
    • sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64  • Android 14 (API 34) (emulator)
    • macOS (desktop)             • macos         • darwin-arm64   • macOS 13.3.1 22E261 darwin-arm64
    • Chrome (web)                • chrome        • web-javascript • Google Chrome 121.0.6167.184

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.
3.19.0: dart ./tools/generate.dart && flutter pub get && flutter run -v

full logs: https://github.com/2ZeroSix/flutter_gen_snapshot_oom_example/blob/71638ba7be3b5a580c21199c4b002656af760376/logs/3.19.0.txt

[ +224 ms] ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
           The following assertion was thrown building _BodyBuilder:
           'package:flutter/src/widgets/framework.dart': Failed assertion: line 4518 pos 12: '_lifecycleState
           == _ElementLifecycle.inactive': is not true.

           Either the assertion indicates an error in the framework itself, or we should provide substantially
           more information in this error message to help you determine and fix the underlying cause.
           In either case, please report this assertion by filing a bug on GitHub:
             https://github.com/flutter/flutter/issues/new?template=2_bug.yml

           The relevant error-causing widget was:
             Scaffold
             Scaffold:file:///Users/2zerosix/Projects/flutter_gen_snapshot_oom_example/lib/main.dart:22:22

           When the exception was thrown, this was the stack:
           #2      Element.debugDeactivated (package:flutter/src/widgets/framework.dart:4518:12)
           #3      InheritedElement.debugDeactivated (package:flutter/src/widgets/framework.dart:5929:11)
           #4      _InactiveElements._deactivateRecursively.<anonymous closure> (package:flutter/src/widgets/framework.dart:2098:15)
           #5      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2100:6)
           #6      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #7      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #8      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #9      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #10     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #11     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #12     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #13     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #14     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #15     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #16     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #17     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #18     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #19     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #20     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #21     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #22     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #23     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #24     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #25     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #26     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #27     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #28     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #29     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #30     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #31     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #32     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #33     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #34     Iterable.forEach (dart:core/iterable.dart:347:35)
           #35     SlottedRenderObjectElement.visitChildren (package:flutter/src/widgets/slotted_render_object_widget.dart:234:25)
           #36     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #37     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #38     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #39     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #40     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #41     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #42     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #43     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #44     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #45     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #46     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #47     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #48     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #49     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #50     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #51     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #52     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #53     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #54     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #55     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #56     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #57     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #58     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #59     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6744:14)
           #60     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #61     MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6856:16)
           #62     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #63     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5532:14)
           #64     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2096:13)
           #65     _InactiveElements.add (package:flutter/src/widgets/framework.dart:2108:7)
           #66     Element.deactivateChild (package:flutter/src/widgets/framework.dart:4377:30)
           #67     Element._retakeInactiveElement (package:flutter/src/widgets/framework.dart:4263:14)
           ...     Normal element mounting (19 frames)
           #86     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335:16)
           #87     MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6893:36)
           #88     Element.updateChild (package:flutter/src/widgets/framework.dart:3846:18)
           #89     Element.updateChildren (package:flutter/src/widgets/framework.dart:4033:32)
           #90     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6918:17)
           #91     Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #92     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #93     Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #94     ProxyElement.update (package:flutter/src/widgets/framework.dart:5809:5)
           #95     Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #96     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #97     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643:11)
           #98     Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #99     StatefulElement.update (package:flutter/src/widgets/framework.dart:5666:5)
           #100    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #101    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #102    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643:11)
           #103    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #104    StatefulElement.update (package:flutter/src/widgets/framework.dart:5666:5)
           #105    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #106    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #107    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #108    ProxyElement.update (package:flutter/src/widgets/framework.dart:5809:5)
           #109    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #110    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #111    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643:11)
           #112    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #113    StatefulElement.update (package:flutter/src/widgets/framework.dart:5666:5)
           #114    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #115    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6765:14)
           #116    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #117    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #118    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #119    ProxyElement.update (package:flutter/src/widgets/framework.dart:5809:5)
           #120    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #121    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6765:14)
           #122    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #123    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #124    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643:11)
           #125    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #126    StatefulElement.update (package:flutter/src/widgets/framework.dart:5666:5)
           #127    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #128    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #129    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643:11)
           #130    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #131    StatefulElement.update (package:flutter/src/widgets/framework.dart:5666:5)
           #132    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #133    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #134    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #135    ProxyElement.update (package:flutter/src/widgets/framework.dart:5809:5)
           #136    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #137    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #138    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #139    ProxyElement.update (package:flutter/src/widgets/framework.dart:5809:5)
           #140    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #141    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #142    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #143    ProxyElement.update (package:flutter/src/widgets/framework.dart:5809:5)
           #144    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #145    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #146    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643:11)
           #147    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #148    StatefulElement.update (package:flutter/src/widgets/framework.dart:5666:5)
           #149    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #150    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #151    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #152    ProxyElement.update (package:flutter/src/widgets/framework.dart:5809:5)
           #153    Element.updateChild (package:flutter/src/widgets/framework.dart:3824:15)
           #154    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505:16)
           #155    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643:11)
           #156    Element.rebuild (package:flutter/src/widgets/framework.dart:5196:7)
           #157    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2904:19)
           #158    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:989:21)
           #159    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:448:5)
           #160    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1386:15)
           #161    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1311:9)
           #162    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1169:5)
           #163    _invoke (dart:ui/hooks.dart:312:13)
           #164    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:399:5)
           #165    _drawFrame (dart:ui/hooks.dart:283:31)
           (elided 2 frames from class _AssertionError)

           ════════════════════════════════════════════════════════════════════════════════════════════════════
[   +2 ms] Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2115 pos 12: '_elements.contains(element)': is not true.

2ZeroSix avatar Feb 16 '24 15:02 2ZeroSix

@2ZeroSix Could you try reproducing the problem with Flutter at b23b3da9353592d6f5d7461ddda13616b00d1815 and 4b110de996eadc4e5080e4725f9d4073a3525914 ?

Flutter b23b3da9353592d6f5d7461ddda13616b00d1815 includes 8c5407b3ddf024dea09aa3db57cbf7c24cca6771 which fixed the bug which appears when there are >64K classes - it could potentially cause the problem you're seeing.

alexmarkov avatar Feb 16 '24 16:02 alexmarkov

@alexmarkov Seems to be it! Thank you!

reproducible on 4b110de996eadc4e5080e4725f9d4073a3525914

exception 4b110de996eadc4e5080e4725f9d4073a3525914

[ +159 ms] ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
           The following assertion was thrown building _BodyBuilder:
           'package:flutter/src/widgets/framework.dart': Failed assertion: line 4519 pos 12: '_lifecycleState
           == _ElementLifecycle.inactive': is not true.

           Either the assertion indicates an error in the framework itself, or we should provide substantially
           more information in this error message to help you determine and fix the underlying cause.
           In either case, please report this assertion by filing a bug on GitHub:
             https://github.com/flutter/flutter/issues/new?template=2_bug.yml

           The relevant error-causing widget was:
             Scaffold
             Scaffold:file:///Users/2zerosix/Projects/flutter_gen_snapshot_oom_example/lib/main.dart:19:17

           When the exception was thrown, this was the stack:
           #2      Element.debugDeactivated (package:flutter/src/widgets/framework.dart:4519:12)
           #3      InheritedElement.debugDeactivated (package:flutter/src/widgets/framework.dart:5930:11)
           #4      _InactiveElements._deactivateRecursively.<anonymous closure> (package:flutter/src/widgets/framework.dart:2099:15)
           #5      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2101:6)
           #6      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #7      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #8      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #9      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #10     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #11     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #12     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #13     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #14     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #15     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #16     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #17     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #18     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #19     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #20     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #21     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #22     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #23     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #24     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #25     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #26     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #27     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #28     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #29     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #30     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #31     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #32     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #33     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #34     Iterable.forEach (dart:core/iterable.dart:347:35)
           #35     SlottedRenderObjectElement.visitChildren (package:flutter/src/widgets/slotted_render_object_widget.dart:234:25)
           #36     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #37     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #38     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #39     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #40     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #41     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #42     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #43     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #44     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #45     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #46     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #47     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #48     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #49     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #50     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #51     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #52     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #53     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #54     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #55     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #56     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #57     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #58     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #59     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6745:14)
           #60     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #61     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5533:14)
           #62     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2097:13)
           #63     _InactiveElements.add (package:flutter/src/widgets/framework.dart:2109:7)
           #64     Element.deactivateChild (package:flutter/src/widgets/framework.dart:4378:30)
           #65     Element._retakeInactiveElement (package:flutter/src/widgets/framework.dart:4264:14)
           ...     Normal element mounting (19 frames)
           #84     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4336:16)
           #85     MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6894:36)
           #86     Element.updateChild (package:flutter/src/widgets/framework.dart:3847:18)
           #87     Element.updateChildren (package:flutter/src/widgets/framework.dart:4034:32)
           #88     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6919:17)
           #89     Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #90     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #91     Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #92     ProxyElement.update (package:flutter/src/widgets/framework.dart:5810:5)
           #93     Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #94     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #95     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5644:11)
           #96     Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #97     StatefulElement.update (package:flutter/src/widgets/framework.dart:5667:5)
           #98     Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #99     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #100    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5644:11)
           #101    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #102    StatefulElement.update (package:flutter/src/widgets/framework.dart:5667:5)
           #103    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #104    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #105    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #106    ProxyElement.update (package:flutter/src/widgets/framework.dart:5810:5)
           #107    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #108    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #109    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5644:11)
           #110    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #111    StatefulElement.update (package:flutter/src/widgets/framework.dart:5667:5)
           #112    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #113    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6766:14)
           #114    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #115    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #116    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #117    ProxyElement.update (package:flutter/src/widgets/framework.dart:5810:5)
           #118    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #119    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6766:14)
           #120    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #121    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #122    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5644:11)
           #123    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #124    StatefulElement.update (package:flutter/src/widgets/framework.dart:5667:5)
           #125    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #126    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #127    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5644:11)
           #128    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #129    StatefulElement.update (package:flutter/src/widgets/framework.dart:5667:5)
           #130    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #131    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #132    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #133    ProxyElement.update (package:flutter/src/widgets/framework.dart:5810:5)
           #134    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #135    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #136    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #137    ProxyElement.update (package:flutter/src/widgets/framework.dart:5810:5)
           #138    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #139    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #140    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #141    ProxyElement.update (package:flutter/src/widgets/framework.dart:5810:5)
           #142    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #143    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #144    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5644:11)
           #145    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #146    StatefulElement.update (package:flutter/src/widgets/framework.dart:5667:5)
           #147    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #148    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #149    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #150    ProxyElement.update (package:flutter/src/widgets/framework.dart:5810:5)
           #151    Element.updateChild (package:flutter/src/widgets/framework.dart:3825:15)
           #152    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5506:16)
           #153    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5644:11)
           #154    Element.rebuild (package:flutter/src/widgets/framework.dart:5197:7)
           #155    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2905:19)
           #156    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:993:21)
           #157    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:443:5)
           #158    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1387:15)
           #159    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1312:9)
           #160    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1170:5)
           #161    _invoke (dart:ui/hooks.dart:312:13)
           #162    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:399:5)
           #163    _drawFrame (dart:ui/hooks.dart:283:31)
           (elided 2 frames from class _AssertionError)

           ════════════════════════════════════════════════════════════════════════════════════════════════════

couldn't reproduce it on b23b3da9353592d6f5d7461ddda13616b00d1815

I'll try to cherry-pick and try it on our internal code shortly

2ZeroSix avatar Feb 16 '24 17:02 2ZeroSix

Thank you, it does really fix the problem that occurs in 3+ versions

The only thing that I still need to figure out is what is triggering "buildScope" variant of exception on 2.19.6, we'll probably stick to work-around with disabled inliner till the end of the migration to 3.0.0

Anyway https://github.com/dart-lang/sdk/commit/8c5407b3ddf024dea09aa3db57cbf7c24cca6771 has not only fixed this problem for versions higher than 3.0.0, but also another one that we haven't been able to report yet!

We were only able to reproduce it in our internal codebase, and we had no luck building an example with the reproduction. All we had is this stack trace: (For future readers: the issue has been fixed in flutter 3.20+)

crash

flutter 3.7.12, dart 2.19.6, gen_snapshot, host: macos, target: android arm (same happens for ios, but android arm64/x86_64 crashes because of https://github.com/dart-lang/sdk/issues/54886)

===== CRASH =====
si_signo=Segmentation fault: 11(11), si_code=1, si_addr=0x3e149
version=2.19.6 (stable) (Tue Mar 28 13:41:04 2023 +0000) on "macos_arm"
pid=27043, thread=-1, isolate_group=isolate(0x7fce0300d000), isolate=(nil)(0x0)
os=macos, arch=arm, comp=no, sim=no
isolate_instructions=0, vm_instructions=0
  pc 0x000000010286d4bd fp 0x0000000309b99e40 dart::Class::LookupFunctionReadLocked(dart::String const&, dart::Class::MemberKind) const+0x1cd
  pc 0x000000010291dd16 fp 0x0000000309b99f00 dart::ResolveDynamicAnyArgsWithCustomLookup(dart::Zone*, dart::Class const&, dart::String const&, bool, std::_LIBCPP_ABI_NAMESPACE::function<dart::FunctionPtr (dart::Class&, dart::String const&)>)+0x296
  pc 0x000000010291d81e fp 0x0000000309b99f90 dart::ResolveDynamicForReceiverClassWithCustomLookup(dart::Class const&, dart::String const&, dart::ArgumentsDescriptor const&, bool, std::_LIBCPP_ABI_NAMESPACE::function<dart::FunctionPtr (dart::Class&, dart::String const&)>)+0x8e
  pc 0x000000010291d737 fp 0x0000000309b99ff0 dart::Resolver::ResolveDynamicForReceiverClass(dart::Class const&, dart::String const&, dart::ArgumentsDescriptor const&, bool)+0x47
  pc 0x0000000102a78309 fp 0x0000000309b9a040 dart::InstanceCallBaseInstr::ResolveForReceiverClass(dart::Class const&, bool)+0xa9
  pc 0x0000000102b329c7 fp 0x0000000309b9a0b0 dart::CallSpecializer::TryCreateICData(dart::InstanceCallInstr*)+0x227
  pc 0x0000000102b325d7 fp 0x0000000309b9a110 dart::CallSpecializer::ApplyClassIds()+0x137
  pc 0x0000000102b3e962 fp 0x0000000309b9a130 dart::CompilerPass_ApplyClassIds::DoBody(dart::CompilerPassState*) const+0x22
  pc 0x0000000102b3d4d0 fp 0x0000000309b9a200 dart::CompilerPass::Run(dart::CompilerPassState*) const+0x1b0
  pc 0x0000000102b3d6eb fp 0x0000000309b9a230 dart::CompilerPass::RunInliningPipeline(dart::CompilerPass::PipelineMode, dart::CompilerPassState*)+0x2b
  pc 0x0000000102aec37f fp 0x0000000309b9a740 dart::CallSiteInliner::TryInliningImpl(dart::Function const&, dart::Array const&, dart::InlinedCallData*, bool)+0x100f
  pc 0x0000000102ae0a56 fp 0x0000000309b9a7e0 dart::CallSiteInliner::TryInlining(dart::Function const&, dart::Array const&, dart::InlinedCallData*, bool)+0xf6
  pc 0x0000000102aef55b fp 0x0000000309b9a8d0 dart::CallSiteInliner::InlineStaticCalls()+0x56b
  pc 0x0000000102ae665f fp 0x0000000309b9a9f0 dart::CallSiteInliner::InlineCalls()+0x24f
  pc 0x0000000102ae62b1 fp 0x0000000309b9aaf0 dart::FlowGraphInliner::Inline()+0x1e1
  pc 0x0000000102b3e852 fp 0x0000000309b9ab60 dart::CompilerPass_Inlining::DoBody(dart::CompilerPassState*) const+0x52
  pc 0x0000000102b3d4d0 fp 0x0000000309b9ac30 dart::CompilerPass::Run(dart::CompilerPassState*) const+0x1b0
  pc 0x0000000102b3d9b9 fp 0x0000000309b9ac60 dart::CompilerPass::RunPipeline(dart::CompilerPass::PipelineMode, dart::CompilerPassState*)+0xa9
  pc 0x0000000102a0fb89 fp 0x0000000309b9b330 dart::PrecompileParsedFunctionHelper::Compile(dart::CompilationPipeline*)+0x5c9
  pc 0x0000000102a1068d fp 0x0000000309b9b9b0 dart::PrecompileFunctionHelper(dart::Precompiler*, dart::CompilationPipeline*, dart::Function const&, bool)+0x31d
  pc 0x0000000102a0b4c6 fp 0x0000000309b9bac0 dart::Precompiler::CompileFunction(dart::Precompiler*, dart::Thread*, dart::Zone*, dart::Function const&)+0x176
  pc 0x0000000102a08d51 fp 0x0000000309b9bb60 dart::Precompiler::ProcessFunction(dart::Function const&)+0xf1
  pc 0x0000000102a03024 fp 0x0000000309b9bbc0 dart::Precompiler::Iterate()+0x94
  pc 0x00000001029fdae9 fp 0x0000000309b9c310 dart::Precompiler::DoCompileAll()+0x1489
  pc 0x00000001029fc5db fp 0x0000000309b9c770 dart::Precompiler::CompileAll()+0xbb
  pc 0x0000000102bf1d38 fp 0x0000000309b9c8e0 Dart_Precompile+0x248
  pc 0x000000010274bf4b fp 0x0000000309b9ca70 dart::bin::main(int, char**)+0x9ab
  pc 0x000000020335a41f fp 0x0000000309b9cd00 Unknown symbol
-- End of DumpStackTrace
=== Crash occurred when compiling dart:ui__Channel@15065589__drainStep@15065589 in AOT mode in ApplyClassIds pass
*** BEGIN CFG
ApplyClassIds
==== dart:core_Iterable_get_isNotEmpty (GetterFunction)
B0[graph]:0 {
      v39 <- Constant(#null)
      v40 <- Constant(#<optimized out>)
}
B12[function entry]:2 {
      v41 <- Parameter(0)
      v42 <- Parameter(0) T{PatchClass}
}
    v43 <- InstanceCall:10( get:isEmpty<0>, v42 IC[0: ], result_type = T{bool?})
    AssertBoolean:12(v43)
    v44 <- BooleanNegate(v43)
    Return:14(v44)
*** END CFG
Dart snapshot generator failed with exit code -6
Target android_aot_release_android-arm failed: Exception: AOT snapshotter exited with code -6

2ZeroSix avatar Feb 20 '24 11:02 2ZeroSix

The only thing that I still need to figure out is what is triggering "buildScope" variant of exception on 2.19.6, we'll probably stick to work-around with disabled inliner till the end of the migration to 3.0.0

@alexmarkov it's unlikely, but maybe you know what could have fixed it between 2.19.6 and 3.0.0?

2ZeroSix avatar Feb 20 '24 13:02 2ZeroSix

@2ZeroSix thanks for confirming that the fix worked in your app. Can I go ahead and close this issue?

a-siva avatar Feb 20 '24 16:02 a-siva

@2ZeroSix thanks for confirming that the fix worked in your app. Can I go ahead and close this issue?

Yes, I have one more question above, but it does have a working work-around and fixed in main.

2ZeroSix avatar Feb 20 '24 17:02 2ZeroSix

Yes, I have one more question above, but it does have a working work-around and fixed in main.

You don't think https://github.com/dart-lang/sdk/commit/8c5407b3ddf024dea09aa3db57cbf7c24cca6771 fixed that issue?

a-siva avatar Feb 20 '24 17:02 a-siva