Skip to content

Flutter WebView JVM crash when height is large/ wrapped within ListView or CustomScrollView #45243

@VadimOsovsky

Description

@VadimOsovsky

Steps to Reproduce

  1. Create Listview
  2. Put Container(height: 10000.0, child: WebView( ... )) to the Listview's children
  3. Run
  4. Enjoy JVM shutdown and device reboot

Target Platform:
Android
Target OS version/browser:
api 28
Devices:
Xiaomi MI8

logs
E/MethodChannel#flutter/platform_views(25723): Failed to handle method call
E/MethodChannel#flutter/platform_views(25723): java.lang.RuntimeException: InputChannel is not initialized.
E/MethodChannel#flutter/platform_views(25723): 	at android.view.InputEventReceiver.nativeInit(Native Method)
E/MethodChannel#flutter/platform_views(25723): 	at android.view.InputEventReceiver.<init>(InputEventReceiver.java:80)
E/MethodChannel#flutter/platform_views(25723): 	at android.view.ViewRootImpl$WindowInputEventReceiver.<init>(ViewRootImpl.java:7457)
E/MethodChannel#flutter/platform_views(25723): 	at android.view.ViewRootImpl.setView(ViewRootImpl.java:917)
E/MethodChannel#flutter/platform_views(25723): 	at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
E/MethodChannel#flutter/platform_views(25723): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
E/MethodChannel#flutter/platform_views(25723): 	at android.app.Dialog.show(Dialog.java:329)
E/MethodChannel#flutter/platform_views(25723): 	at android.app.Presentation.show(Presentation.java:249)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.plugin.platform.VirtualDisplayController.<init>(VirtualDisplayController.java:92)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.plugin.platform.VirtualDisplayController.create(VirtualDisplayController.java:52)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.plugin.platform.PlatformViewsController$1.createPlatformView(PlatformViewsController.java:97)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:87)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:51)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:222)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:96)
E/MethodChannel#flutter/platform_views(25723): 	at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:656)
E/MethodChannel#flutter/platform_views(25723): 	at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#flutter/platform_views(25723): 	at android.os.MessageQueue.next(MessageQueue.java:326)
E/MethodChannel#flutter/platform_views(25723): 	at android.os.Looper.loop(Looper.java:165)
E/MethodChannel#flutter/platform_views(25723): 	at android.app.ActivityThread.main(ActivityThread.java:6806)
E/MethodChannel#flutter/platform_views(25723): 	at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#flutter/platform_views(25723): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
E/MethodChannel#flutter/platform_views(25723): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
E/flutter (25723): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(error, InputChannel is not initialized., null)
E/flutter (25723): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (25723): #1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:316:33)
E/flutter (25723): <asynchronous suspension>
E/flutter (25723): #2      AndroidViewController._create (package:flutter/src/services/platform_views.dart:640:54)
E/flutter (25723): <asynchronous suspension>
E/flutter (25723): #3      AndroidViewController.setSize (package:flutter/src/services/platform_views.dart:557:14)
E/flutter (25723): <asynchronous suspension>
E/flutter (25723): #4      RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:174:29)
E/flutter (25723): <asynchronous suspension>
E/flutter (25723): #5      RenderAndroidView.performResize (package:flutter/src/rendering/platform_view.dart:155:5)
E/flutter (25723): #6      RenderObject.layout (package:flutter/src/rendering/object.dart:1686:9)
E/flutter (25723): #7      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #8      RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #9      RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:259:13)
E/flutter (25723): #10     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #11     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:510:15)
E/flutter (25723): #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #13     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:744:15)
E/flutter (25723): #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #15     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:206:11)
E/flutter (25723): #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #17     _RenderSingleChildViewport.performLayout (package:flutter/src/widgets/single_child_scroll_view.dart:497:13)
E/flutter (25723): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #19     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #21     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #22     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #23     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #24     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #25     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #26     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #27     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #28     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #29     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #31     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #32     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #33     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #34     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #35     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter (25723): #36     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #37     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:142:11)
E/flutter (25723): #38     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:444:7)
E/flutter (25723): #39     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:212:7)
E/flutter (25723): #40     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:356:14)
E/flutter (25723): #41     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
E/flutter (25723): #42     RenderProxyBoxMixin.performLayout (package
Lost connection to device.

Analyzing mail_client...                                                

warning • The parameter 'darkThemeEnabled' is required • lib/modules/auth/repository/auth_api.dart:37:18 • missing_required_param
   info • Avoid using braces in interpolation when not needed • lib/modules/mail/screens/message_view/components/message_body.dart:74:25 • unnecessary_brace_in_string_interps
   info • Avoid using braces in interpolation when not needed • lib/modules/mail/screens/message_view/components/message_body.dart:75:23 • unnecessary_brace_in_string_interps
   info • Duplicate import • lib/modules/mail/screens/message_view/components/message_view_app_bar.dart:2:8 • duplicate_import
   info • Duplicate import • lib/modules/mail/screens/message_view/components/message_view_app_bar.dart:3:8 • duplicate_import
   info • The value of the field '_pageCtrl' isn't used • lib/modules/mail/screens/message_view/message_view_android.dart:39:18 • unused_field
   info • The declaration '_getWebColor' isn't referenced • lib/utils/mail_utils.dart:173:17 • unused_element

7 issues found. (ran in 7.0s)
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.6, on Mac OS X 10.15 19A583, locale en-RU)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.1)
[!] Android Studio (version 3.5)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] IntelliJ IDEA Ultimate Edition (version 2019.2.4)
[✓] VS Code (version 1.38.1)
[✓] Connected device (1 available)

! Doctor found issues in 1 category.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work lista: platform-viewsEmbedding Android/iOS views in Flutter appsc: crashStack traces logged to the consolec: fatal crashCrashes that terminate the processfound in release: 1.20Found to occur in 1.20found in release: 1.21Found to occur in 1.21has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: webviewThe WebView pluginpackageflutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyplatform-views: vdIssues specific to the Android VirtualDisplay platform views backendr: fixedIssue is closed as already fixed in a newer version

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions