Skip to content

Thread Performance Checker warns on iOS: Thread running at QOS_CLASS_USER_INTERACTIVE waiting on a thread without a QoS class specified. #142841

@jmagman

Description

@jmagman

I saw this while debugging platform view performance running the example from https://github.com/lucalooz/flutter_ads_list_perf.

Breakpoint can be turned on in Xcode:
Screenshot 2024-02-02 at 2 35 23 PM

On the raster thread:

Thread Performance Checker: Thread running at QOS_CLASS_USER_INTERACTIVE waiting on a thread without a QoS class specified. Investigate ways to avoid priority inversions
PID: 992, TID: 370445
Backtrace
=================================================================
3   Flutter                             0x000000010ba78240 _ZN3fml17PlatformSemaphore4WaitEv + 72
4   Flutter                             0x000000010ba781ec _ZN3fml9Semaphore4WaitEv + 28
5   Flutter                             0x000000010bff4290 _ZNK8impeller8Renderer6RenderENSt3_fl10unique_ptrINS_7SurfaceENS1_14default_deleteIS3_EEEERKNS1_8functionIFbRNS_12RenderTargetEEEE + 316
6   Flutter                             0x000000010cad2b90 _ZZN7flutter23GPUSurfaceMetalImpeller28AcquireFrameFromCAMetalLayerERK7SkISizeEN3$_0clERNS_12SurfaceFrameEPNS_8DlCanvasE + 1568
7   Flutter                             0x000000010cad24a8 _ZNK3fml8internal14CopyableLambdaIZN7flutter23GPUSurfaceMetalImpeller28AcquireFrameFromCAMetalLayerERK7SkISizeE3$_0EclIJRNS2_12SurfaceFrameEPNS2_8DlCanvasEEEEDaDpOT_ + 52
8   Flutter                             0x000000010cad2468 _ZNSt3_fl8__invokeB6v15000IRN3fml8internal14CopyableLambdaIZN7flutter23GPUSurfaceMetalImpeller28AcquireFrameFromCAMetalLayerERK7SkISizeE3$_0EEJRNS4_12SurfaceFrameEPNS4_8DlCanvasEEEEDTclclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSG_DpOSH_ + 40
9   Flutter                             0x000000010cad2410 _ZNSt3_fl28__invoke_void_return_wrapperIbLb0EE6__callIJRN3fml8internal14CopyableLambdaIZN7flutter23GPUSurfaceMetalImpeller28AcquireFrameFromCAMetalLayerERK7SkISizeE3$_0EERNS6_12SurfaceFrameEPNS6_8DlCanvasEEEEbDpOT_ + 40
10  Flutter                             0x000000010cad23dc _ZNSt3_fl10__function12__alloc_funcIN3fml8internal14CopyableLambdaIZN7flutter23GPUSurfaceMetalImpeller28AcquireFrameFromCAMetalLayerERK7SkISizeE3$_0EENS_9allocatorISB_EEFbRNS5_12SurfaceFrameEPNS5_8DlCanvasEEEclB6v15000ESF_OSH_ + 44
11  Flutter                             0x000000010cad115c _ZNSt3_fl10__function6__funcIN3fml8internal14CopyableLambdaIZN7flutter23GPUSurfaceMetalImpeller28AcquireFrameFromCAMetalLayerERK7SkISizeE3$_0EENS_9allocatorISB_EEFbRNS5_12SurfaceFrameEPNS5_8DlCanvasEEEclESF_OSH_ + 44
12  Flutter                             0x000000010c5e1314 _ZNKSt3_fl10__function12__value_funcIFbRN7flutter12SurfaceFrameEPNS2_8DlCanvasEEEclB6v15000ES4_OS6_ + 76
13  Flutter                             0x000000010c5e0d4c _ZNKSt3_fl8functionIFbRN7flutter12SurfaceFrameEPNS1_8DlCanvasEEEclES3_S5_ + 44
14  Flutter                             0x000000010c5e0c40 _ZN7flutter12SurfaceFrame13PerformSubmitEv + 100
15  Flutter                             0x000000010c5e0b9c _ZN7flutter12SurfaceFrame6SubmitEv + 120
16  Flutter                             0x000000010ae107ec _ZN7flutter30FlutterPlatformViewsController11SubmitFrameEP15GrDirectContextRKNSt3_fl10shared_ptrINS_10IOSContextEEENS3_10unique_ptrINS_12SurfaceFrameENS3_14default_deleteISA_EEEE + 1792
17  Flutter                             0x000000010ae83b18 _ZN7flutter23IOSExternalViewEmbedder17SubmitFlutterViewEP15GrDirectContextRKNSt3_fl10shared_ptrIN8impeller11AiksContextEEENS3_10unique_ptrINS_12SurfaceFrameENS3_14default_deleteISB_EEEE + 312
18  Flutter                             0x000000010c1cf830 _ZN7flutter10Rasterizer19DrawToSurfaceUnsafeExRNS_9LayerTreeEfNSt3_fl8optionalIN3fml9TimePointEEE + 1916
19  Flutter                             0x000000010c1cea88 _ZN7flutter10Rasterizer20DrawToSurfacesUnsafeERNS_20FrameTimingsRecorderENSt3_fl6vectorINS3_10unique_ptrINS_13LayerTreeTaskENS3_14default_deleteIS6_EEEENS3_9allocatorIS9_EEEE + 976
20  Flutter                             0x000000010c1e94e0 _ZZN7flutter10Rasterizer14DrawToSurfacesERNS_20FrameTimingsRecorderENSt3_fl6vectorINS3_10unique_ptrINS_13LayerTreeTaskENS3_14default_deleteIS6_EEEENS3_9allocatorIS9_EEEEENK3$_1clEv + 80
21  Flutter                             0x000000010c1e9484 _ZNSt3_fl8__invokeB6v15000IRZN7flutter10Rasterizer14DrawToSurfacesERNS1_20FrameTimingsRecorderENS_6vectorINS_10unique_ptrINS1_13LayerTreeTaskENS_14default_deleteIS7_EEEENS_9allocatorISA_EEEEE3$_1JEEEDTclclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSG_DpOSH_ + 24
22  Flutter                             0x000000010c1e943c _ZNSt3_fl28__invoke_void_return_wrapperIvLb1EE6__callIJRZN7flutter10Rasterizer14DrawToSurfacesERNS3_20FrameTimingsRecorderENS_6vectorINS_10unique_ptrINS3_13LayerTreeTaskENS_14default_deleteIS9_EEEENS_9allocatorISC_EEEEE3$_1EEEvDpOT_ + 24
23  Flutter                             0x000000010c1e9418 _ZNSt3_fl10__function12__alloc_funcIZN7flutter10Rasterizer14DrawToSurfacesERNS2_20FrameTimingsRecorderENS_6vectorINS_10unique_ptrINS2_13LayerTreeTaskENS_14default_deleteIS8_EEEENS_9allocatorISB_EEEEE3$_1NSC_ISF_EEFvvEEclB6v15000Ev + 28
24  Flutter                             0x000000010c1e8500 _ZNSt3_fl10__function6__funcIZN7flutter10Rasterizer14DrawToSurfacesERNS2_20FrameTimingsRecorderENS_6vectorINS_10unique_ptrINS2_13LayerTreeTaskENS_14default_deleteIS8_EEEENS_9allocatorISB_EEEEE3$_1NSC_ISF_EEFvvEEclEv + 28
25  Flutter                             0x000000010b00dd28 _ZNKSt3_fl10__function12__value_funcIFvvEEclB6v15000Ev + 60
26  Flutter                             0x000000010b00dce0 _ZNKSt3_fl8functionIFvvEEclEv + 24
27  Flutter                             0x000000010ba78894 _ZNK3fml10SyncSwitch7ExecuteERKNS0_8HandlersE + 84
28  Flutter                             0x000000010c1cc7d4 _ZN7flutter10Rasterizer14DrawToSurfacesERNS_20FrameTimingsRecorderENSt3_fl6vectorINS3_10unique_ptrINS_13LayerTreeTaskENS3_14default_deleteIS6_EEEENS3_9allocatorIS9_EEEE + 600
29  Flutter                             0x000000010c1cdabc _ZN7flutter10Rasterizer6DoDrawENSt3_fl10unique_ptrINS_20FrameTimingsRecorderENS1_14default_deleteIS3_EEEENS1_6vectorINS2_INS_13LayerTreeTaskENS4_IS8_EEEENS1_9allocatorISA_EEEE + 496
30  Flutter                             0x000000010c1dfb2c _ZZN7flutter10Rasterizer4DrawERKNSt3_fl10shared_ptrINS_8PipelineINS_9FrameItemEEEEEENK3$_0clENS1_10unique_ptrIS4_NS1_14default_deleteIS4_EEEE + 124
31  Flutter                             0x000000010c1dfa9c _ZNSt3_fl8__invokeB6v15000IRZN7flutter10Rasterizer4DrawERKNS_10shared_ptrINS1_8PipelineINS1_9FrameItemEEEEEE3$_0JNS_10unique_ptrIS5_NS_14default_deleteIS5_EEEEEEEDTclclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSG_DpOSH_ + 56
32  Flutter                             0x000000010c1dfa34 _ZNSt3_fl28__invoke_void_return_wrapperIvLb1EE6__callIJRZN7flutter10Rasterizer4DrawERKNS_10shared_ptrINS3_8PipelineINS3_9FrameItemEEEEEE3$_0NS_10unique_ptrIS7_NS_14default_deleteIS7_EEEEEEEvDpOT_ + 32
33  Flutter                             0x000000010c1dfa08 _ZNSt3_fl10__function12__alloc_funcIZN7flutter10Rasterizer4DrawERKNS_10shared_ptrINS2_8PipelineINS2_9FrameItemEEEEEE3$_0NS_9allocatorISB_EEFvNS_10unique_ptrIS6_NS_14default_deleteIS6_EEEEEEclB6v15000EOSH_ + 36
34  Flutter                             0x000000010c1de928 _ZNSt3_fl10__function6__funcIZN7flutter10Rasterizer4DrawERKNS_10shared_ptrINS2_8PipelineINS2_9FrameItemEEEEEE3$_0NS_9allocatorISB_EEFvNS_10unique_ptrIS6_NS_14default_deleteIS6_EEEEEEclEOSH_ + 36
35  Flutter                             0x000000010c1e01bc _ZNKSt3_fl10__function12__value_funcIFvNS_10unique_ptrIN7flutter9FrameItemENS_14default_deleteIS4_EEEEEEclB6v15000EOS7_ + 68
36  Flutter                             0x000000010c1dfea0 _ZNKSt3_fl8functionIFvNS_10unique_ptrIN7flutter9FrameItemENS_14default_deleteIS3_EEEEEEclES6_ + 32
37  Flutter                             0x000000010c1ccf50 _ZN7flutter8PipelineINS_9FrameItemEE7ConsumeERKNSt3_fl8functionIFvNS3_10unique_ptrIS1_NS3_14default_deleteIS1_EEEEEEE + 268
38  Flutter                             0x000000010c1ccb94 _ZN7flutter10Rasterizer4DrawERKNSt3_fl10shared_ptrINS_8PipelineINS_9FrameItemEEEEE + 408
39  Flutter                             0x000000010c260e54 _ZZN7flutter5Shell14OnAnimatorDrawENSt3_fl10shared_ptrINS_8PipelineINS_9FrameItemEEEEEEN3$_0clEv + 96
40  Flutter                             0x000000010c260d2c _ZNK3fml8internal14CopyableLambdaIZN7flutter5Shell14OnAnimatorDrawENSt3_fl10shared_ptrINS2_8PipelineINS2_9FrameItemEEEEEE3$_0EclIJEEEDaDpOT_ + 32
41  Flutter                             0x000000010c260d00 _ZNSt3_fl8__invokeB6v15000IRN3fml8internal14CopyableLambdaIZN7flutter5Shell14OnAnimatorDrawENS_10shared_ptrINS4_8PipelineINS4_9FrameItemEEEEEE3$_0EEJEEEDTclclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSE_DpOSF_ + 24
42  Flutter                             0x000000010c260cb8 _ZNSt3_fl28__invoke_void_return_wrapperIvLb1EE6__callIJRN3fml8internal14CopyableLambdaIZN7flutter5Shell14OnAnimatorDrawENS_10shared_ptrINS6_8PipelineINS6_9FrameItemEEEEEE3$_0EEEEEvDpOT_ + 24
43  Flutter                             0x000000010c260c94 _ZNSt3_fl10__function12__alloc_funcIN3fml8internal14CopyableLambdaIZN7flutter5Shell14OnAnimatorDrawENS_10shared_ptrINS5_8PipelineINS5_9FrameItemEEEEEE3$_0EENS_9allocatorISD_EEFvvEEclB6v15000Ev + 28
44  Flutter                             0x000000010c25fac4 _ZNSt3_fl10__function6__funcIN3fml8internal14CopyableLambdaIZN7flutter5Shell14OnAnimatorDrawENS_10shared_ptrINS5_8PipelineINS5_9FrameItemEEEEEE3$_0EENS_9allocatorISD_EEFvvEEclEv + 28
45  Flutter                             0x000000010b00dd28 _ZNKSt3_fl10__function12__value_funcIFvvEEclB6v15000Ev + 60
46  Flutter                             0x000000010b00dce0 _ZNKSt3_fl8functionIFvvEEclEv + 24
47  Flutter                             0x000000010ba68684 _ZN3fml15MessageLoopImpl10FlushTasksENS_9FlushTypeE + 160
48  Flutter                             0x000000010ba68594 _ZN3fml15MessageLoopImpl18RunExpiredTasksNowEv + 28
49  Flutter                             0x000000010ba88350 _ZN3fml17MessageLoopDarwin11OnTimerFireEP16__CFRunLoopTimerPS0_ + 36
50  CoreFoundation                      0x00000001c7fe532c 42CCFC7B-FF32-3D25-8F01-CCB2AD843A8B + 844588
51  CoreFoundation                      0x00000001c7fa19a8 42CCFC7B-FF32-3D25-8F01-CCB2AD843A8B + 567720
52  CoreFoundation                      0x00000001c7f45548 42CCFC7B-FF32-3D25-8F01-CCB2AD843A8B + 189768
53  CoreFoundation                      0x00000001c7f92fa0 42CCFC7B-FF32-3D25-8F01-CCB2AD843A8B + 507808
54  CoreFoundation                      0x00000001c7f97eb0 CFRunLoopRunSpecific + 612
55  GraphicsServices                    0x000000020218d368 GSEventRunModal + 164
56  UIKitCore                           0x00000001ca48d668 CF21AD9C-EFBF-3961-A7C0-54BD30CEFEA9 + 3806824
57  UIKitCore                           0x00000001ca48d2cc UIApplicationMain + 340
58  Runner                              0x000000010053859c main + 64
59  dyld                                0x00000001e6890960 4B042F28-0D14-30EC-A1DE-3DBB10866AD7 + 88416

Once fixed it would be nice to detect this in the scenario_app so it doesn't regress.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work liste: impellerImpeller rendering backend issues and features requestsplatform-iosiOS applications specificallyr: fixedIssue is closed as already fixed in a newer versionteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions