Skip to content

[MacOS] App crashes when using canvas.drawAtlas() on beta & master #155783

@Solido

Description

@Solido

Steps to reproduce

Create a CustomPainter
call DrawAtlas

Expected results

Draw an image

Actual results

Whole app crash with macos syslog

Code sample

// This work
canvas.drawImage(image, Offset.zero, paint);

//This Crash
    canvas.drawAtlas(
      image,
      [
        RSTransform.fromComponents(
          rotation: 0.0,
          scale: 1.0,
          anchorX: 0.0,
          anchorY: 0.0,
          translateX: 0.0,
          translateY: 0.0,
        )
      ],
      [Rect.fromLTWH(0.0, 0.0, image.width.toDouble(), image.height.toDouble())],
      [],
      BlendMode.src,
      null,
      paint,
    );

Screenshots or Video

Screenshots / Video demonstration

[Upload media here]

Logs

Thread 3 Crashed:: io.flutter.raster
0   FlutterMacOS                  	       0x104408264 flutter::DlSkCanvasDispatcher::drawAtlas(sk_sp<flutter::DlImage>, SkRSXform const*, SkRect const*, flutter::DlColor const*, int, flutter::DlBlendMode, flutter::DlImageSampling, SkRect const*, bool) + 208
1   FlutterMacOS                  	       0x1043debc0 flutter::DrawAtlasOp::dispatch(flutter::DlOpReceiver&) const + 140
2   FlutterMacOS                  	       0x1043de430 flutter::DisplayList::Dispatch(flutter::DlOpReceiver&, SkRect const&) const + 272
3   FlutterMacOS                  	       0x10440860c flutter::DlSkCanvasDispatcher::drawDisplayList(sk_sp<flutter::DisplayList>, float) + 336
4   FlutterMacOS                  	       0x1043ded40 flutter::DrawDisplayListOp::dispatch(flutter::DlOpReceiver&) const + 80
5   FlutterMacOS                  	       0x1043de3e8 flutter::DisplayList::Dispatch(flutter::DlOpReceiver&, SkRect const&) const + 200
6   FlutterMacOS                  	       0x10440500c flutter::DlSkCanvasAdapter::DrawDisplayList(sk_sp<flutter::DisplayList>, float) + 300
7   FlutterMacOS                  	       0x10488d4e8 flutter::DisplayListEmbedderViewSlice::render_into(flutter::DlCanvas*) + 80
8   FlutterMacOS                  	       0x104b649dc flutter::EmbedderExternalView::Render(flutter::EmbedderRenderTarget const&, bool) + 924
9   FlutterMacOS                  	       0x104b66648 flutter::EmbedderExternalViewEmbedder::SubmitFlutterView(long long, GrDirectContext*, std::_fl::shared_ptr<impeller::AiksContext> const&, std::_fl::unique_ptr<flutter::SurfaceFrame, std::_fl::default_delete<flutter::SurfaceFrame>>) + 2980
10  FlutterMacOS                  	       0x104a58cc0 flutter::Rasterizer::DrawToSurfaceUnsafe(long long, flutter::LayerTree&, float, std::_fl::optional<fml::TimePoint>) + 1140
11  FlutterMacOS                  	       0x104a583c4 flutter::Rasterizer::DrawToSurfacesUnsafe(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>>>) + 600
12  FlutterMacOS                  	       0x104a566ec flutter::Rasterizer::DrawToSurfaces(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>>>) + 176
13  FlutterMacOS                  	       0x104a57784 flutter::Rasterizer::DoDraw(std::_fl::unique_ptr<flutter::FrameTimingsRecorder, std::_fl::default_delete<flutter::FrameTimingsRecorder>>, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>>>) + 192
14  FlutterMacOS                  	       0x104a5b440 std::_fl::__function::__func<flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem>> const&)::$_0, std::_fl::allocator<flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem>> const&)::$_0>, void (std::_fl::unique_ptr<flutter::FrameItem, std::_fl::default_delete<flutter::FrameItem>>)>::operator()(std::_fl::unique_ptr<flutter::FrameItem, std::_fl::default_delete<flutter::FrameItem>>&&) + 100
15  FlutterMacOS                  	       0x104a56db4 flutter::Pipeline<flutter::FrameItem>::Consume(std::_fl::function<void (std::_fl::unique_ptr<flutter::FrameItem, std::_fl::default_delete<flutter::FrameItem>>)> const&) + 276
16  FlutterMacOS                  	       0x104a569d4 flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem>> const&) + 148
17  FlutterMacOS                  	       0x104a798e0 std::_fl::__function::__func<fml::internal::CopyableLambda<flutter::Shell::OnAnimatorDraw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem>>)::$_0>, std::_fl::allocator<fml::internal::CopyableLambda<flutter::Shell::OnAnimatorDraw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem>>)::$_0>>, void ()>::operator()() + 112
18  FlutterMacOS                  	       0x104334ee4 fml::MessageLoopImpl::FlushTasks(fml::FlushType) + 252
19  FlutterMacOS                  	       0x10433e28c fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*) + 52
20  CoreFoundation                	       0x194c9b6b8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 32
21  CoreFoundation                	       0x194c9b35c __CFRunLoopDoTimer + 1012
22  CoreFoundation                	       0x194c9ae6c __CFRunLoopDoTimers + 356
23  CoreFoundation                	       0x194c808a4 __CFRunLoopRun + 1856
24  CoreFoundation                	       0x194c7fae8 CFRunLoopRunSpecific + 572
25  FlutterMacOS                  	       0x10433e528 fml::MessageLoopDarwin::Run() + 188
26  FlutterMacOS                  	       0x104334ce0 fml::MessageLoopImpl::DoRun() + 60
27  FlutterMacOS                  	       0x10433c6f8 std::_fl::__function::__func<fml::Thread::Thread(std::_fl::function<void (fml::Thread::ThreadConfig const&)> const&, fml::Thread::ThreadConfig const&)::$_0, std::_fl::allocator<fml::Thread::Thread(std::_fl::function<void (fml::Thread::ThreadConfig const&)> const&, fml::Thread::ThreadConfig const&)::$_0>, void ()>::operator()() + 200
28  FlutterMacOS                  	       0x10433c1b0 fml::ThreadHandle::ThreadHandle(std::_fl::function<void ()>&&)::$_0::__invoke(void*) + 56
29  libsystem_pthread.dylib       	       0x194b9b2e4 _pthread_start + 136
30  libsystem_pthread.dylib       	       0x194b960fc thread_start + 8


Thread 3 crashed with ARM Thread State (64-bit):
    x0: 0x000000011f8e1030   x1: 0x000000011f8e1030   x2: 0x0000000000000001   x3: 0x0000000000000001
    x4: 0x0000000000000000   x5: 0x0000000000000001   x6: 0x0000000000000001   x7: 0x0000000000000000
    x8: 0x00000000437f0000   x9: 0x2cbda5f66fc10024  x10: 0x0000000000000dce  x11: 0x0000000018800401
   x12: 0x0000000008000000  x13: 0x000000011f804080  x14: 0x000000000000dcfb  x15: 0x00000000000006b8
   x16: 0xd796000100f3c080  x17: 0x0000000000000000  x18: 0x0000000000000000  x19: 0x0000000000000000
   x20: 0x000000011f8e1030  x21: 0x3fffffffffffffff  x22: 0x0000000000000001  x23: 0x0000000000000001
   x24: 0x000000011f8e1030  x25: 0x000000011f8e1034  x26: 0x0000000000000000  x27: 0x0000000000000004
   x28: 0x0000000000000008   fp: 0x000000016f538c50   lr: 0x000000010440822c
    sp: 0x000000016f538b80   pc: 0x0000000104408264 cpsr: 0x60001000
   far: 0x0000000000000000  esr: 0x92000006 (Data Abort) byte read Translation fault

Binary Images:
       0x100f08000 -        0x100f0bfff com.example.boardG (0.3.0) <9e596bee-79db-3bdb-804b-47cd8d191c2c> /Users/USER/Documents/*/flutter_app_crash.app/Contents/MacOS/flutter_app_crash
       0x100f44000 -        0x100f4bfff flutter_app_crash.debug.dylib (*) <2549a58a-6da5-3ac5-94b3-75885293c292> /Users/USER/Documents/*/flutter_app_crash.app/Contents/MacOS/flutter_app_crash.debug.dylib
       0x100f88000 -        0x100f93fff org.cocoapods.custom-mouse-cursor (0.0.1) <4716c41a-26bc-3731-bf24-b832f211c642> /Users/USER/Documents/*/flutter_app_crash.app/Contents/Frameworks/custom_mouse_cursor.framework/Versions/A/custom_mouse_cursor
       0x101018000 -        0x101047fff org.cocoapods.macos-window-utils (1.0.0) <d7419108-0ed3-33d5-90f5-05ed00c49732> /Users/USER/Documents/*/flutter_app_crash.app/Contents/Frameworks/macos_window_utils.framework/Versions/A/macos_window_utils
       0x1042bc000 -        0x106837fff io.flutter.flutter-macos (1.0) <4c4c4463-5555-3144-a165-065bfabcf5c7> /Users/USER/Documents/*/flutter_app_crash.app/Contents/Frameworks/FlutterMacOS.framework/Versions/A/FlutterMacOS
       0x103690000 -        0x10369bfff libobjc-trampolines.dylib (*) <f1242604-dcb7-30a9-a19a-182991e6e645> /usr/lib/libobjc-trampolines.dylib
       0x1036b0000 -        0x1036b3fff io.flutter.flutter.app (1.0) <4099ec1b-2b63-3ad3-b91a-58aacf1379a3> /Users/USER/Documents/*/flutter_app_crash.app/Contents/Frameworks/App.framework/Versions/A/App
       0x11a98c000 -        0x11b02bfff com.apple.AGXMetalG13X (322.7.2) <627f5ac2-6db0-3aa8-a39f-4c427fafdbe8> /System/Library/Extensions/AGXMetalG13X.bundle/Contents/MacOS/AGXMetalG13X
       0x194b59000 -        0x194b93ff7 libsystem_kernel.dylib (*) <9ac9c551-8981-3c12-8b87-06912536a522> /usr/lib/system/libsystem_kernel.dylib
       0x194c04000 -        0x1950f8fff com.apple.CoreFoundation (6.9) <89bd70cd-9dc8-3cf7-b89d-e1e6b2a51567> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
       0x1a00fe000 -        0x1a0405fff com.apple.HIToolbox (2.1.1) <5d9bac55-7f25-3f44-b27b-550cbdc0f589> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
       0x198786000 -        0x199b7afff com.apple.AppKit (6.9) <e75c43a6-6b7c-36e6-bf8d-6a61a2696986> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
       0x194812000 -        0x1948947b7 dyld (*) <6daeb662-d459-3520-a2ff-496b7f36f4c0> /usr/lib/dyld
               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???
       0x194b94000 -        0x194ba0fff libsystem_pthread.dylib (*) <ef968926-415e-31f4-a137-937bc030facb> /usr/lib/system/libsystem_pthread.dylib
       0x1949a3000 -        0x1949e3ff7 libsystem_malloc.dylib (*) <42049f35-8729-3e79-a4f7-ce8b49051e18> /usr/lib/system/libsystem_malloc.dylib
       0x19df11000 -        0x19df71fff com.apple.CoreVideo (1.8) <a38358ab-5ddb-3df6-8cad-9931b13e6aa2> /System/Library/Frameworks/CoreVideo.framework/Versions/A/C

Flutter Doctor output

[✓] Flutter (Channel beta, 3.26.0-0.1.pre, on macOS 15.1 24B5046f darwin-arm64, locale fr-FR)
    • Flutter version 3.26.0-0.1.pre on channel beta at /flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ee624bc4fd (il y a 2 semaines), 2024-09-10 17:41:06 -0500
    • Engine revision 059e4e6d8f
    • Dart version 3.6.0 (build 3.6.0-216.1.beta)
    • DevTools version 2.39.0

[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16A5230g
    • CocoaPods version 1.15.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    c: fatal crashCrashes that terminate the processc: regressionIt was better in the past than it is nowengineflutter/engine related. See also e: labels.found in release: 3.26Found to occur in 3.26has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-macBuilding on or for macOS specificallyr: fixedIssue is closed as already fixed in a newer versionteam-macosOwned by the macOS platform team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions