devtools icon indicating copy to clipboard operation
devtools copied to clipboard

Illegal cast exception in Wasm mode

Open kenzieschmoll opened this issue 1 year ago • 2 comments

The page can be refreshed fine when using JS + canvaskit. This was found on flutter version edb4c84317d94962dd82d6f7f69ef666a91f020a.

Repro steps:

  1. Run dt serve
  2. Connect DevTools to a Flutter application and then open the Logging page.
  3. Ensure the wasm setting is enabled (DevTools settings), and either manually refresh or let the toggling of the wasm setting refresh the page.

Screenshot 2024-10-17 at 12 45 26 PM

@eyebrowsoffire

kenzieschmoll avatar Oct 17 '24 19:10 kenzieschmoll

Another illegal cast bug that is WASM-only Screenshot 2024-10-21 at 1 52 53 PM

Repro steps:

  1. Run DevTools dt serve --no-strip-wasm
  2. Before connecting to an app app, open the CPU profiler page.
  3. 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

kenzieschmoll avatar Oct 21 '24 20:10 kenzieschmoll

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.

osa1 avatar Oct 23 '24 09:10 osa1

Seeing another illegal cast exception from a different location: Screenshot 2024-10-23 at 2 20 54 PM

Repro steps:

  1. from tip of trunk, run dt serve
  2. 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?

kenzieschmoll avatar Oct 23 '24 21:10 kenzieschmoll

SDK issue for discrepancies between dart2js and dart2wasm: https://github.com/dart-lang/sdk/issues/56949.

osa1 avatar Oct 24 '24 09:10 osa1