Skip to content

Transform animation with BackdropFilter is causing a crash (null pointer dereference) #95211

@RobinLbt

Description

@RobinLbt

I was looking for the culprit for a few days, but with the absence of readable logs I had to check every pieces on my code.

I finally found it: Transform with perspective and backdrop filter don't go well together

Steps to Reproduce

  1. Execute flutter run on the code sample
  2. Tap on the red container to trigger the animation
  3. The app should crash

Expected results:

It was working fine a few months ago, but now it crashes on the Android emulator as well as on my Samsung Note 9
I'm debugging the app on W10

Code sample
class TestScreen extends StatefulWidget {
  TestScreen({Key? key}) : super(key: key);

  @override
  _TestScreenState createState() => _TestScreenState();
}

class _TestScreenState extends State<TestScreen>
    with SingleTickerProviderStateMixin {
  late AnimationController handler;
  late var rotation;

  @override
  void initState() {
    super.initState();
    handler =
        AnimationController(vsync: this, duration: Duration(milliseconds: 140));

    rotation = Tween(begin: 0, end: pi / 2)
        .animate(CurvedAnimation(parent: handler, curve: Curves.decelerate));
  }

  @override
  void dispose() {
    handler.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        child: AnimatedBuilder(
          animation: handler,
          builder: (context, child) {
            return Transform(
              transform: Matrix4.identity()
                ..setEntry(3, 2, 0.001)
                ..rotateY(1.0 * rotation.value),
              alignment: Alignment.center,
              child: BackdropFilter(
                filter: ImageFilter.blur(sigmaX: 1.0, sigmaY: 1.0),
                child: GestureDetector(
                    onTap: () => handler.forward(),
                    child:
                        Container(height: 40, width: 200, color: Colors.red)),
              ),
            );
          },
        ),
      ),
    );
  }
}
Logs
F/libc    (32300): Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x2c in tid 32361 (1.raster), pid 32300 (example.app)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/sdk_gphone_x86_arm/generic_x86_arm:11/RSR1.201013.001/6903271:userdebug/dev-keys'
Revision: '0'
ABI: 'x86'
Timestamp: 2021-12-13 20:09:04+0000
pid: 32300, tid: 32361, name: 1.raster  >>> com.example.app <<<
uid: 10170
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x2c
Cause: null pointer dereference
    eax c3976b01  ebx c58e054c  ecx c58e054c  edx 00000015
    edi 00000000  esi c3976c20
    ebp c3976be8  esp c3976b00  eip c50fab14
backtrace:
      #00 pc 01574b14  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #25 pc 01830074  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #26 pc 0181f4ab  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #27 pc 0181f998  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #28 pc 01840916  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #29 pc 0183f1dd  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #30 pc 0183fea9  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #31 pc 018413a0  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #32 pc 01437be5  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #33 pc 0183f6bd  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #34 pc 0183f3b5  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #35 pc 01850124  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #36 pc 014315a9  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #37 pc 014356cd  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/ccom.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #38 pc 014355de  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #39 pc 0143d9ec  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #40 pc 0143da1a  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #41 pc 00019337  /system/lib/libutils.so (android::SimpleLooperCallback::handleEvent(int, int, void*)+39) (BuildId: ab4be013cda31e8c45d48aa23a89d0f8)
      #42 pc 0001a367  /system/lib/libutils.so (android::Looper::pollInner(int)+1127) (BuildId: ab4be013cda31e8c45d48aa23a89d0f8)
      #43 pc 00019e96  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+118) (BuildId: ab4be013cda31e8c45d48aa23a89d0f8)
      #44 pc 000133f5  /system/lib/libandroid.so (ALooper_pollOnce+101) (BuildId: f98006d4d736575082b552ff24b66f6c)
      #45 pc 0143d92f  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #46 pc 0143558c  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #47 pc 014350b4  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #48 pc 0143a7d7  /data/app/~~SFBGw7wmUz22XEPc2KQi6Q==/com.example.app-1qQaZRxISvjXwsFMEQURbw==/lib/x86/libflutter.so (BuildId: 442f36a8362548d1b15ca165b3a08e7fe298ee75)
      #49 pc 000e6974  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+100) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
      #50 pc 00078567  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
Lost connection to device.

[√] Flutter (Channel master, 2.6.0-12.0.pre.999, on Microsoft Windows [version 10.0.19042.1348], locale fr-FR)
    • Flutter version 2.6.0-12.0.pre.999 at C:\src\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 895beb04bb (3 days ago), 2021-12-10 18:54:10 -0800
    • Engine revision 79f750d4a5
    • Dart version 2.16.0 (build 2.16.0-85.0.dev)
    • DevTools version 2.9.1

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at C:\Users\robin\AppData\Local\Android\sdk
    • Platform android-31, build-tools 30.0.2
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 4.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] VS Code (version 1.63.0)
    • VS Code at C:\Users\robin\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.29.0

[√] Connected device (3 available)
    • sdk gphone x86 arm (mobile) • emulator-5554 • android-x86    • Android 11 (API 30) (emulator)
    • Chrome (web)                • chrome        • web-javascript • Google Chrome 93.0.4577.82
    • Edge (web)                  • edge          • web-javascript • Microsoft Edge 96.0.1054.34

Metadata

Metadata

Assignees

No one assigned

    Labels

    a: animationAnimation APIsc: fatal crashCrashes that terminate the processf: material designflutter/packages/flutter/material repository.found in release: 2.6Found to occur in 2.6frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-androidAndroid applications specificallyr: 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