Illegal cast exception in Wasm mode
The page can be refreshed fine when using JS + canvaskit. This was found on flutter version edb4c84317d94962dd82d6f7f69ef666a91f020a.
Repro steps:
- Run
dt serve - Connect DevTools to a Flutter application and then open the Logging page.
- Ensure the wasm setting is enabled (DevTools settings), and either manually refresh or let the toggling of the wasm setting refresh the page.
@eyebrowsoffire
Another illegal cast bug that is WASM-only
Repro steps:
- Run DevTools
dt serve --no-strip-wasm - Before connecting to an app app, open the CPU profiler page.
- Load an offline data file to the CPU profiler page and click Load Data. The below data file can be used to repro. dart_devtools_2024-10-07_14_46_30.420.json
I debugged this. It's an issue with omitting bounds checks, which we do by default with -O4. Adding -E --no-omit-bounds-checks fixes the issue.
The illegal cast happens here:
Big stack trace
illegal cast
$FilterTag.parse (list.dart:29)
$defaultScreens closure at file:///usr/local/google/home/omersa/dart/devtools/packages/devtools_app/lib/src/app.dart:687:31 (filter.dart:70)
$closure wrapper at file:///usr/local/google/home/omersa/dart/devtools/packages/devtools_app/lib/src/app.dart:687:31 trampoline (main.dart.wasm:0x3bffc9)
$DevToolsScreen.controllerProvider closure at file:///usr/local/google/home/omersa/dart/devtools/packages/devtools_app/lib/src/app.dart:553:15 (app.dart:554)
$_CreateInheritedProviderState.value (main.dart.wasm:0x361a2e)
$_InheritedProviderScopeElement.value (inherited_provider.dart:590)
$Provider.of (provider.dart:303)
$LoggingScreen.buildStatus (logging_screen.dart:34)
$StatusLine.build closure at file:///usr/local/google/home/omersa/dart/devtools/packages/devtools_app/lib/src/framework/status_line.dart:52:16 (status_line.dart:79)
$closure wrapper at file:///usr/local/google/home/omersa/dart/devtools/packages/devtools_app/lib/src/framework/status_line.dart:52:16 trampoline (main.dart.wasm:0x325958)
$_ValueListenableBuilderState.build (value_listenable_builder.dart:141)
$StatefulElement.build (framework.dart:5743)
$ComponentElement.performRebuild (framework.dart:5631)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatelessElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$Element.updateChildren (framework.dart:4090)
$MultiChildRenderObjectElement.update (framework.dart:7074)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$SingleChildRenderObjectElement.update (framework.dart:6921)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$SingleChildRenderObjectElement.update (framework.dart:6921)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$SingleChildRenderObjectElement.update (framework.dart:6921)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$SingleChildRenderObjectElement.update (framework.dart:6921)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$StatefulElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatelessElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$ProxyElement.update (framework.dart:5347)
$_InheritedProviderScopeElement.update (inherited_provider.dart:523)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatelessElement.update (framework.dart:5347)
$Element.updateChild (framework.dart:3941)
$ComponentElement.performRebuild (framework.dart:5656)
$StatefulElement.performRebuild (framework.dart:5794)
$BuildOwner.buildScope (framework.dart:5347)
$_LayoutBuilderElement._rebuildWithConstraints (layout_builder.dart:239)
$_LayoutBuilderElement._rebuildWithConstraints tear-off trampoline (main.dart.wasm:0x260a98)
$RenderObject.invokeLayoutCallback (object.dart:2738)
$_RenderLayoutBuilder.performLayout (layout_builder.dart:286)
$PipelineOwner.flushLayout (object.dart:2465)
$PipelineOwner.flushLayout (object.dart:1075)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (binding.dart:609)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback tear-off trampoline (main.dart.wasm:0x386638)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._invokeFrameCallback (binding.dart:1397)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleDrawFrame (binding.dart:1318)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleDrawFrame (binding.dart:1176)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleDrawFrame tear-off trampoline (main.dart.wasm:0x1e0acd)
$_rootRun (zone.dart:1414)
$_rootRun tear-off trampoline (main.dart.wasm:0x4e5a5f)
$_CustomZone.run (zone.dart:1317)
$_CustomZone.runGuarded (zone.dart:1225)
$invoke (platform_dispatcher.dart:1410)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 (platform_dispatcher.dart:310)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 trampoline (main.dart.wasm:0x4ed402)
$_1725 (main.dart.wasm:0x1b6ad8)
(anonymous) (main.dart.mjs:245)
requestAnimationFrame
_1013 (main.dart.mjs:244)
$DomWindowExtension|requestAnimationFrame (main.dart.wasm:0x2b5854)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 (initialization.dart:154)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 trampoline (main.dart.wasm:0x4ed42a)
$EnginePlatformDispatcher.scheduleFrame (platform_dispatcher.dart:781)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrame (binding.dart:942)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrameCallback (binding.dart:609)
$Ticker.scheduleTick (ticker.dart:291)
$Ticker._tick (ticker.dart:280)
$Ticker._tick tear-off trampoline (main.dart.wasm:0x259344)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._invokeFrameCallback (binding.dart:1397)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame closure at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 (binding.dart:1240)
$closure wrapper at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 trampoline (main.dart.wasm:0x1e0f85)
$_CompactLinkedIdentityHashMap&_HashFieldBase&MapMixin&_HashBase&_IdenticalAndIdentityHashCode&_LinkedHashMapMixin.forEach (compact_hash.dart:642)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame (binding.dart:1238)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame (binding.dart:1155)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame tear-off trampoline (main.dart.wasm:0x1e0da9)
$_rootRunUnary (zone.dart:1430)
$_CustomZone.runUnary (main.dart.wasm:0x4e5256)
$_CustomZone.runUnaryGuarded (zone.dart:1233)
$invoke1 (platform_dispatcher.dart:1425)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 (platform_dispatcher.dart:287)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 trampoline (main.dart.wasm:0x4ed402)
$_1725 (main.dart.wasm:0x1b6ad8)
(anonymous) (main.dart.mjs:245)
requestAnimationFrame
_1013 (main.dart.mjs:244)
$DomWindowExtension|requestAnimationFrame (main.dart.wasm:0x2b5854)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 (initialization.dart:154)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 trampoline (main.dart.wasm:0x4ed42a)
$EnginePlatformDispatcher.scheduleFrame (platform_dispatcher.dart:781)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrame (binding.dart:942)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrameCallback (binding.dart:609)
$Ticker.scheduleTick (ticker.dart:291)
$Ticker._tick (ticker.dart:280)
$Ticker._tick tear-off trampoline (main.dart.wasm:0x259344)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._invokeFrameCallback (binding.dart:1397)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame closure at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 (binding.dart:1240)
$closure wrapper at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 trampoline (main.dart.wasm:0x1e0f85)
$_CompactLinkedIdentityHashMap&_HashFieldBase&MapMixin&_HashBase&_IdenticalAndIdentityHashCode&_LinkedHashMapMixin.forEach (compact_hash.dart:642)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame (binding.dart:1238)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame (binding.dart:1155)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame tear-off trampoline (main.dart.wasm:0x1e0da9)
$_rootRunUnary (zone.dart:1430)
$_CustomZone.runUnary (main.dart.wasm:0x4e5256)
$_CustomZone.runUnaryGuarded (zone.dart:1233)
$invoke1 (platform_dispatcher.dart:1425)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 (platform_dispatcher.dart:287)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 trampoline (main.dart.wasm:0x4ed402)
$_1725 (main.dart.wasm:0x1b6ad8)
(anonymous) (main.dart.mjs:245)
requestAnimationFrame
_1013 (main.dart.mjs:244)
$DomWindowExtension|requestAnimationFrame (main.dart.wasm:0x2b5854)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 (initialization.dart:154)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 trampoline (main.dart.wasm:0x4ed42a)
$EnginePlatformDispatcher.scheduleFrame (platform_dispatcher.dart:781)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrame (binding.dart:942)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrameCallback (binding.dart:609)
$Ticker.scheduleTick (ticker.dart:291)
$Ticker._tick (ticker.dart:280)
$Ticker._tick tear-off trampoline (main.dart.wasm:0x259344)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._invokeFrameCallback (binding.dart:1397)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame closure at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 (binding.dart:1240)
$closure wrapper at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 trampoline (main.dart.wasm:0x1e0f85)
$_CompactLinkedIdentityHashMap&_HashFieldBase&MapMixin&_HashBase&_IdenticalAndIdentityHashCode&_LinkedHashMapMixin.forEach (compact_hash.dart:642)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame (binding.dart:1238)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame (binding.dart:1155)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame tear-off trampoline (main.dart.wasm:0x1e0da9)
$_rootRunUnary (zone.dart:1430)
$_CustomZone.runUnary (main.dart.wasm:0x4e5256)
$_CustomZone.runUnaryGuarded (zone.dart:1233)
$invoke1 (platform_dispatcher.dart:1425)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 (platform_dispatcher.dart:287)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 trampoline (main.dart.wasm:0x4ed402)
$_1725 (main.dart.wasm:0x1b6ad8)
(anonymous) (main.dart.mjs:245)
requestAnimationFrame
_1013 (main.dart.mjs:244)
$DomWindowExtension|requestAnimationFrame (main.dart.wasm:0x2b5854)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 (initialization.dart:154)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 trampoline (main.dart.wasm:0x4ed42a)
$EnginePlatformDispatcher.scheduleFrame (platform_dispatcher.dart:781)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrame (binding.dart:942)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrameCallback (binding.dart:609)
$Ticker.scheduleTick (ticker.dart:291)
$Ticker._tick (ticker.dart:280)
$Ticker._tick tear-off trampoline (main.dart.wasm:0x259344)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._invokeFrameCallback (binding.dart:1397)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame closure at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 (binding.dart:1240)
$closure wrapper at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 trampoline (main.dart.wasm:0x1e0f85)
$_CompactLinkedIdentityHashMap&_HashFieldBase&MapMixin&_HashBase&_IdenticalAndIdentityHashCode&_LinkedHashMapMixin.forEach (compact_hash.dart:642)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame (binding.dart:1238)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame (binding.dart:1155)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame tear-off trampoline (main.dart.wasm:0x1e0da9)
$_rootRunUnary (zone.dart:1430)
$_CustomZone.runUnary (main.dart.wasm:0x4e5256)
$_CustomZone.runUnaryGuarded (zone.dart:1233)
$invoke1 (platform_dispatcher.dart:1425)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 (platform_dispatcher.dart:287)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 trampoline (main.dart.wasm:0x4ed402)
$_1725 (main.dart.wasm:0x1b6ad8)
(anonymous) (main.dart.mjs:245)
requestAnimationFrame
_1013 (main.dart.mjs:244)
$DomWindowExtension|requestAnimationFrame (main.dart.wasm:0x2b5854)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 (initialization.dart:154)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 trampoline (main.dart.wasm:0x4ed42a)
$EnginePlatformDispatcher.scheduleFrame (platform_dispatcher.dart:781)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrame (binding.dart:942)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrameCallback (binding.dart:609)
$Ticker.scheduleTick (ticker.dart:291)
$Ticker._tick (ticker.dart:280)
$Ticker._tick tear-off trampoline (main.dart.wasm:0x259344)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._invokeFrameCallback (binding.dart:1397)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame closure at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 (binding.dart:1240)
$closure wrapper at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/scheduler/binding.dart:1238:25 trampoline (main.dart.wasm:0x1e0f85)
$_CompactLinkedIdentityHashMap&_HashFieldBase&MapMixin&_HashBase&_IdenticalAndIdentityHashCode&_LinkedHashMapMixin.forEach (compact_hash.dart:642)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.handleBeginFrame (binding.dart:1238)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame (binding.dart:1155)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding._handleBeginFrame tear-off trampoline (main.dart.wasm:0x1e0da9)
$_rootRunUnary (zone.dart:1430)
$_CustomZone.runUnary (main.dart.wasm:0x4e5256)
$_CustomZone.runUnaryGuarded (zone.dart:1233)
$invoke1 (platform_dispatcher.dart:1425)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 (platform_dispatcher.dart:287)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:154:39 trampoline (main.dart.wasm:0x4ed402)
$_1725 (main.dart.wasm:0x1b6ad8)
(anonymous) (main.dart.mjs:245)
requestAnimationFrame
_1013 (main.dart.mjs:244)
$DomWindowExtension|requestAnimationFrame (main.dart.wasm:0x2b5854)
$initializeEngineServices closure at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 (initialization.dart:154)
$closure wrapper at org-dartlang-sdk:///lib/_engine/engine/initialization.dart:149:27 trampoline (main.dart.wasm:0x4ed42a)
$EnginePlatformDispatcher.scheduleFrame (platform_dispatcher.dart:781)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.scheduleFrame (binding.dart:942)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding.ensureVisualUpdate (binding.dart:895)
$_WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding._handleBuildScheduled tear-off trampoline (binding.dart:1064)
$BuildOwner.scheduleBuildFor (framework.dart:2921)
$Element.markNeedsBuild (framework.dart:5208)
$State.setState (framework.dart:1224)
$_ButtonStyleState.handleStatesControllerChange (button_style_button.dart:316)
$_ButtonStyleState.handleStatesControllerChange tear-off trampoline (main.dart.wasm:0x26c447)
$ChangeNotifier.notifyListeners (change_notifier.dart:437)
$WidgetStatesController.update (widget_state.dart:1133)
$_InkResponseState._startNewSplash (ink_well.dart:1156)
$_InkResponseState.handleTapDown (ink_well.dart:1124)
$_InkResponseState.handleTapDown tear-off trampoline (main.dart.wasm:0x2db8f8)
$TapGestureRecognizer.handleTapDown closure at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/gestures/tap.dart:628:45 (tap.dart:628)
$closure wrapper at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/gestures/tap.dart:628:45 trampoline (main.dart.wasm:0x23f2a9)
$GestureRecognizer.invokeCallback (recognizer.dart:351)
$TapGestureRecognizer.handleTapDown (tap.dart:628)
$BaseTapGestureRecognizer._checkDown (tap.dart:304)
$BaseTapGestureRecognizer.acceptGesture (tap.dart:281)
$GestureArenaManager._tryToResolveArena closure at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/gestures/arena.dart:251:25 (arena.dart:271)
$closure wrapper at file:///usr/local/google/home/omersa/dart/flutter/packages/flutter/lib/src/gestures/arena.dart:251:25 trampoline (main.dart.wasm:0x23fa8c)
$_rootRun (zone.dart:1406)
$_rootRun tear-off trampoline (main.dart.wasm:0x4e5a5f)
$_CustomZone.run (zone.dart:1317)
$_CustomZone.runGuarded (zone.dart:1225)
$_CustomZone.bindCallbackGuarded closure at org-dartlang-sdk:///dart-sdk/lib/async/zone.dart:1265:12 (zone.dart:1265)
$closure wrapper at org-dartlang-sdk:///dart-sdk/lib/async/zone.dart:1265:12 trampoline (main.dart.wasm:0x4e5b57)
$_rootRun (zone.dart:1414)
$_rootRun tear-off trampoline (main.dart.wasm:0x4e5a5f)
$_CustomZone.run (zone.dart:1317)
$_CustomZone.runGuarded (zone.dart:1225)
$_CustomZone.bindCallbackGuarded closure at org-dartlang-sdk:///dart-sdk/lib/async/zone.dart:1265:12 (zone.dart:1265)
$closure wrapper at org-dartlang-sdk:///dart-sdk/lib/async/zone.dart:1265:12 trampoline (main.dart.wasm:0x4e5b57)
$_startMicrotaskLoop (schedule_microtask.dart:40)
$_startMicrotaskLoop tear-off trampoline (main.dart.wasm:0x1cea39)
$_invokeCallback (internal_patch.dart:107)
(anonymous) (main.dart.mjs:729)
This is where the issue manifests itself but it may not be the place where the omitted bounds check would catch the error.
I will now try to find where the bound check is failing and see if it's easy to fix.
Seeing another illegal cast exception from a different location:
Repro steps:
- from tip of trunk, run
dt serve - open the logging page
I don't think fixing these issues one by one on the DevTools side is the best solution here. The same code should work for JS and Wasm, and should not need Wasm-only hacks to prevent crashes.
@osa1 @eyebrowsoffire @sigmundch can we come up with a solution on the wasm side that creates consistent behavior between js and wasm?
SDK issue for discrepancies between dart2js and dart2wasm: https://github.com/dart-lang/sdk/issues/56949.