Summary
Interactive tests using the Impeller Playground trigger ASAN failures at runtime
Expected Behaviour
The interactive impeller tests should run without errors on all supported backends
Actual Behaviour
OpenGLES tests crash at runtime. ASAN (Address Sanitizer) failures are reported on an appropriately instrumented build - for example:
./impeller_unittests --enable_playground --gtest_filter='Play/RendererTest.BabysFirstTriangle/OpenGLES'
[INFO:flutter/testing/test_timeout_listener.cc(75)] Test timeout of 300 seconds per test case will be enforced.
Note: Google Test filter = Play/RendererTest.BabysFirstTriangle/OpenGLES
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from Play/RendererTest
[ RUN ] Play/RendererTest.BabysFirstTriangle/OpenGLES
=================================================================
==332411==ERROR: AddressSanitizer: heap-use-after-free on address 0x7c90e8ee3e70 at pc 0x5589370aa026 bp 0x7fff60cfdae0 sp 0x7fff60cfdad8
Steps to Reproduce
- Configure a build with Address Sanitizer
$ gn --unoptimized --asan
$ ninja -C out/host_debug_unopt/ exe.unstripped/impeller_unittests
- Run an interactive renderer test with OpenGLES
$ exe.unstripped/impeller_unittests --enable_playground --gtest_filter='Play/RendererTest.BabysFirstTriangle/OpenGLES'
System Info
Linux
flutter master (9c66d267b4d8f82e0e7c9cc6e06f4c3c3f7fe7a9)
Reproduced on
- OpenGL ES 3.2 NVIDIA 590.48.01
- OpenGL ES 3.2 Mesa 25.3.3-arch1.3
Notes
Looks a reference to the DeviceBufferGLES's backing store may be getting lost, resulting in a use after free when the underlying pointer is accessed.
Attached log
Summary
Interactive tests using the Impeller Playground trigger ASAN failures at runtime
Expected Behaviour
The interactive impeller tests should run without errors on all supported backends
Actual Behaviour
OpenGLES tests crash at runtime. ASAN (Address Sanitizer) failures are reported on an appropriately instrumented build - for example:
Steps to Reproduce
System Info
Linux
flutter master (
9c66d267b4d8f82e0e7c9cc6e06f4c3c3f7fe7a9)Reproduced on
Notes
Looks a reference to the
DeviceBufferGLES's backing store may be getting lost, resulting in a use after free when the underlying pointer is accessed.Attached log