alibaba / alibaba/flutter_boost

iOS OpenGL 相关闪退

Open
#938 3 comments 0 reactions 0 assignees View on GitHub
iOS
Dominant language
Dart
Stars
7.2k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

flutter 环境
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel unknown, v1.12.13+hotfix.9, on macOS 11.0.1 20B29, locale
zh-Hans-CN)

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
[!] Android Studio (version 4.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2019.1.1)
[✓] VS Code (version 1.52.0)
[!] Connected device
! No devices available

flutter_boost 版本
flutter_boost:
git:
url: 'https://github.com/alibaba/flutter_boost.git'
ref: '1.12.13'

线上包闪退日志
Thread 0 name:
Thread 0 Crashed:
0 OpenGLES 0x00000001b805f8ec +[EAGLContext setCurrentContext:] + 72 (eagl_context.m:425)
1 OpenGLES 0x00000001b805f8e0 +[EAGLContext setCurrentContext:] + 60 (eagl_context.m:419)
2 Flutter 0x00000001086cb3e4 flutter::IOSGLRenderTarget::~IOSGLRenderTarget() + 88 (ios_gl_render_target.mm:74)
3 Flutter 0x00000001086cb3e4 flutter::IOSGLRenderTarget::~IOSGLRenderTarget() + 88 (ios_gl_render_target.mm:64)
4 Flutter 0x00000001086cb3e4 std::__1::default_delete::operator()(flutter::IOSGLRenderTarget*) const + 88 (memory:2339)
5 Flutter 0x00000001086cb3e4 std::__1::unique_ptr >::reset(flutter::IOSGLRenderTarget*) + 116 (memory:2652)
6 Flutter 0x00000001086ca800 std::__1::unique_ptr >::~unique_ptr() + 8 (memory:2606)
7 Flutter 0x00000001086ca800 std::__1::unique_ptr >::~unique_ptr() + 8 (memory:2606)
8 Flutter 0x00000001086ca800 flutter::IOSSurfaceGL::~IOSSurfaceGL() + 44 (ios_surface_gl.mm:25)
9 Flutter 0x00000001086ca800 flutter::IOSSurfaceGL::~IOSSurfaceGL() + 44 (ios_surface_gl.mm:25)
10 Flutter 0x00000001086ca800 flutter::IOSSurfaceGL::~IOSSurfaceGL() + 60 (ios_surface_gl.mm:25)
11 Flutter 0x00000001086cd838 std::__1::default_delete::operator()(flutter::IOSSurface*) const + 12 (memory:2339)
12 Flutter 0x00000001086cd838 std::__1::unique_ptr >::reset(flutter::IOSSurface*) + 24 (memory:2652)
13 Flutter 0x00000001086cd838 flutter::PlatformViewIOS::SetOwnerViewController(fml::WeakPtr) + 96 (platform_view_ios.mm:50)
14 Flutter 0x00000001086adf98 -[FlutterEngine setViewController:] + 200 (FlutterEngine.mm:190)
15 Flutter 0x00000001086bdcf0 -[FlutterViewController initWithEngine:nibName:bundle:] + 348 (FlutterViewController.mm:87)
16 TaQu 0x00000001057405e0 -[FLBFlutterViewContainer init] + 304 (FLBFlutterViewContainer.m:51)
17 TaQu 0x000000010574a2cc -[FlutterRouter open:urlParams:exts:completion:] + 76 (FlutterRouter.m:54)
18 TaQu 0x000000010574a228 -[FlutterRouter runWithURL:params:] + 240 (FlutterRouter.m:49)
19 TaQu 0x00000001048b2c2c __48+[XHBQCTopicFlutterManager showReceiveCallView:]_block_invoke + 76 (XHBQCTopicFlutterManager.m:77)
20 libdispatch.dylib 0x000000018504324c _dispatch_call_block_and_release + 32 (init.c:1454)
21 libdispatch.dylib 0x0000000185044db0 _dispatch_client_callout + 20 (object.m:559)
22 libdispatch.dylib 0x00000001850527ac _dispatch_main_queue_callback_4CF + 836 (inline_internal.h:2548)
23 CoreFoundation 0x00000001853cc11c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 (CFRunLoop.c:1790)
24 CoreFoundation 0x00000001853c6120 __CFRunLoopRun + 2508 (CFRunLoop.c:3118)
25 CoreFoundation 0x00000001853c521c CFRunLoopRunSpecific + 600 (CFRunLoop.c:3242)
26 GraphicsServices 0x000000019c444784 GSEventRunModal + 164 (GSEvent.c:2259)
27 UIKitCore 0x0000000187dfe200 -[UIApplication _run] + 1072 (UIApplication.m:3266)
28 UIKitCore 0x0000000187e03a74 UIApplicationMain + 168 (UIApplication.m:4738)
29 TaQu 0x0000000102d8f18c main + 88 (main.m:16)
30 libdyld.dylib 0x00000001850856c0 start + 4

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the crash frames in Flutter's ios_gl_render_target.mm and ios_surface_gl.mm, then trace the SetOwnerViewController path through platform_view_ios.mm and FlutterEngine.mm. Reproduce the iOS crash using the reported Flutter 1.12.13+hotfix.9 and Xcode 12.2 setup. Done means the reported OpenGLES crash no longer occurs when the Flutter view container is initialized.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart, ios
Domain
computer-graphics, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.