Skip to content

[Impeller] OpenGLES proc table crashes when unopt #135715

@matanlurey

Description

@matanlurey

Simple reproduction case:

$ $ENGINE/src/flutter/tools/gn --android --android-cpu=arm64 --no-stripped
$ ninja -C $ENGINE/out/android_debug_arm64
$ fl run --enable-impeller \
    --local-engine=$ENGINE/out/android_debug_arm64 \
    --local-engine-host=$ENGINE/out/host_debug_unopt_arm64

<app launches and works as expected>
$ $ENGINE/src/flutter/tools/gn --android --android-cpu=arm64 --no-stripped --unopt
$ ninja -C $ENGINE/out/android_debug_unopt_arm64
$ fl run --enable-impeller \
    --local-engine=$ENGINE/out/android_debug_unopt_arm64 \
    --local-engine-host=$ENGINE/out/host_debug_unopt_arm64

<crash, see below>
Abort message: '[FATAL:flutter/impeller/renderer/backend/gles/proc_table_gles.h(33)] Check failed: error == GL_NO_ERROR. GL Error GL_OUT_OF_MEMORY(1285) encountered on call to glPushDebugGroupKHR'
    x0  0000000000000000  x1  0000000000006d1b  x2  0000000000000006  x3  0000007c3b993860
    x4  71647164636d6471  x5  71647164636d6471  x6  71647164636d6471  x7  7f7f7f7f7f7f7f7f
    x8  00000000000000f0  x9  0000007f53a2d050  x10 0000000000000001  x11 0000007f53a76b60
    x12 00000000000052b3  x13 00000000000000b5  x14 0000007c3b992720  x15 000002f457dbf370
    x16 0000007f53ae2cf8  x17 0000007f53abf470  x18 0000007c2e356000  x19 0000000000006c31
    x20 0000000000006d1b  x21 00000000ffffffff  x22 b400007e5ca00fb0  x23 0000007c3b998800
    x24 b400007e5ca01080  x25 b400007e5ca00fc8  x26 0000000000000000  x27 00000000ffffffff
    x28 b400007e5ca4ad28  x29 0000007c3b9938e0
    lr  0000007f53a67178  sp  0000007c3b993840  pc  0000007f53a671a4  pst 0000000000001000
81 total frames
backtrace:
      #00 pc 000000000005c1a4  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: 19c32900d9d702c303d2b4164fbba76c)
      #01 pc 00000000023fdbe8  /data/app/~~KrZmJQExuyTC8S3XpXEKJw==/com.example.circle_opacity_foo-_Ib71m93tCEH_25rH_hUbA==/lib/arm64/libflutter.so (std::_LIBCPP_ABI_NAMESPACE::__throw_bad_optional_access[abi:v15000]()+8) (BuildId: 70cf12b25d86206be79f5b67ff40de138a7baec8)
      #02 pc 00000000024cca94  /data/app/~~KrZmJQExuyTC8S3XpXEKJw==/com.example.circle_opacity_foo-_Ib71m93tCEH_25rH_hUbA==/lib/arm64/libflutter.so (fml::LogMessage::~LogMessage()+340) (BuildId: 70cf12b25d86206be79f5b67ff40de138a7baec8)
      #03 pc 00000000036aa4d0  /data/app/~~KrZmJQExuyTC8S3XpXEKJw==/com.example.circle_opacity_foo-_Ib71m93tCEH_25rH_hUbA==/lib/arm64/libflutter.so (impeller::AutoErrorCheck::~AutoErrorCheck()+308) (BuildId: 70cf12b25d86206be79f5b67ff40de138a7baec8)
      #04 pc 00000000036bce30  /data/app/~~KrZmJQExuyTC8S3XpXEKJw==/com.example.circle_opacity_foo-_Ib71m93tCEH_25rH_hUbA==/lib/arm64/libflutter.so (auto impeller::GLProc<void (unsigned int, unsigned int, unsigned int, int*)>::operator()<int, unsigned int&, int, int*>(int&&, unsigned int&, int&&, int*&&) const+108) (BuildId: 70cf12b25d86206be79f5b67ff40de138a7baec8)
      #05 pc 00000000036bcf10  /data/app/~~KrZmJQExuyTC8S3XpXEKJw==/com.example.circle_opacity_foo-_Ib71m93tCEH_25rH_hUbA==/lib/arm64/libflutter.so (impeller::ProcTableGLES::PushDebugGroup(std::_LIBCPP_ABI_NAMESPACE::basic_string<char, std::_LIBCPP_ABI_NAMESPACE::char_traits<char>, std::_LIBCPP_ABI_NAMESPACE::allocator<char> > const&) const+208) (BuildId: 70cf12b25d86206be79f5b67ff40de138a7baec8)
      #06 pc 00000000036c1fc8  /data/app/~~KrZmJQExuyTC8S3XpXEKJw==/com.example.circle_opacity_foo-_Ib71m93tCEH_25rH_hUbA==/lib/arm64/libflutter.so (impeller::EncodeCommandsInReactor(impeller::RenderPassData const&, std::_LIBCPP_ABI_NAMESPACE::shared_ptr<impeller::Allocator> const&, impeller::ReactorGLES const&, std::_LIBCPP_ABI_NAMESPACE::vector<impeller::Command, std::_LIBCPP_ABI_NAMESPACE::allocator<impeller::Command> > const&)+204) (BuildId: 70cf12b25d86206be79f5b67ff40de138a7baec8)

I'll look at this as part of #130045.

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work liste: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.team-engineOwned by Engine teamtriaged-engineTriaged by Engine team

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions