compose-multiplatform: Crash on iOS: `GrGpuResource::release()`

Describe the bug We’ve received a handful of reports of crashes on iOS via the AppStore & Firebase Crashlytics. We have not yet been able to reproduce the crash ourselves.

Affected platforms Select one of the platforms below:

  • iOS

Versions

  • Kotlin version*: 1.9.20-RC
  • Compose Multiplatform version*: 1.5.10-rc01
  • OS version(s)* (required for Desktop and iOS issues): iOS 16.6.1 ~ 17.0.3
  • OS architecture (x86 or arm64): arm64

To Reproduce We don’t have reproduction steps as of yet. We’ve seen a half-dozen of reports via the AppStore & Firebase Crashlytics.

Expected behavior The app should not crash.

Screenshots N/A

Additional context

Crashed: RenderingDispatchQueue
0  Preat                          0x10c3e80 GrGpuResource::release() + 2324312
1  Preat                          0x10d070c GrResourceCache::purgeAsNeeded() + 2375652
2  Preat                          0x10d070c GrResourceCache::purgeAsNeeded() + 2375652
3  Preat                          0x10d097c GrResourceCache::insertResource(GrGpuResource*) + 2376276
4  Preat                          0x1173b04 GrMtlBuffer::GrMtlBuffer(GrMtlGpu*, unsigned long, GrGpuBufferType, GrAccessPattern, std::__1::basic_string_view<char, std::__1::char_traits<char>>) + 3044316
5  Preat                          0x1173a10 GrMtlBuffer::Make(GrMtlGpu*, unsigned long, GrGpuBufferType, GrAccessPattern) + 3044072
6  Preat                          0x10c29dc GrGpu::createBuffer(unsigned long, GrGpuBufferType, GrAccessPattern) + 2319028
7  Preat                          0x10d57f4 GrResourceProvider::createBuffer(unsigned long, GrGpuBufferType, GrAccessPattern, GrResourceProvider::ZeroInit) + 2396364
8  Preat                          0x10d6b48 GrStagingBufferManager::allocateStagingBufferSlice(unsigned long, unsigned long) + 2401312
9  Preat                          0x1179810 GrMtlGpu::uploadToTexture(GrMtlTexture*, SkIRect, GrColorType, GrMipLevel const*, int) + 3068136
10 Preat                          0x10c2604 GrGpu::writePixels(GrSurface*, SkIRect, GrColorType, GrColorType, GrMipLevel const*, int, bool) + 2318044
11 Preat                          0x10c2118 GrGpu::createTexture(SkISize, GrBackendFormat const&, GrTextureType, GrRenderable, int, SkBudgeted, GrProtected, GrColorType, GrColorType, GrMipLevel const*, int, std::__1::basic_string_view<char, std::__1::char_traits<char>>) + 2316784
12 Preat                          0x10d4650 GrResourceProvider::createTexture(SkISize, GrBackendFormat const&, GrTextureType, GrColorType, GrRenderable, int, SkBudgeted, GrMipmapped, GrProtected, GrMipLevel const*, std::__1::basic_string_view<char, std::__1::char_traits<char>>) + 2391848
13 Preat                          0x10d4ef0 GrResourceProvider::createTexture(SkISize, GrBackendFormat const&, GrTextureType, GrColorType, GrRenderable, int, SkBudgeted, SkBackingFit, GrProtected, GrMipLevel const&, std::__1::basic_string_view<char, std::__1::char_traits<char>>) + 2394056
14 Preat                          0x10ca5dc std::__1::__function::__func<GrProxyProvider::createNonMippedProxyFromBitmap(SkBitmap const&, SkBackingFit, SkBudgeted)::$_0, std::__1::allocator<GrProxyProvider::createNonMippedProxyFromBitmap(SkBitmap const&, SkBackingFit, SkBudgeted)::$_0>, GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&) + 2350772
15 Preat                          0x10d8680 GrSurfaceProxyPriv::doLazyInstantiation(GrResourceProvider*) + 2408280
16 Preat                          0x10c923c GrProxyProvider::createProxyFromBitmap(SkBitmap const&, GrMipmapped, SkBackingFit, SkBudgeted) + 2345748
17 Preat                          0x10e12c4 make_bmp_proxy(GrProxyProvider*, SkBitmap const&, GrColorType, GrMipmapped, SkBackingFit, SkBudgeted) + 2444188
18 Preat                          0x10e0f24 GrMakeCachedBitmapProxyView(GrRecordingContext*, SkBitmap const&, std::__1::basic_string_view<char, std::__1::char_traits<char>>, GrMipmapped) + 2443260
19 Preat                          0xfa5ccc SkImage_Raster::onAsFragmentProcessor(GrRecordingContext*, SkSamplingOptions, SkTileMode const*, SkMatrix const&, SkRect const*, SkRect const*) const + 1152420
20 Preat                          0xfa1ba4 SkImage_Base::asFragmentProcessor(GrRecordingContext*, SkSamplingOptions, SkTileMode const*, SkMatrix const&, SkRect const*, SkRect const*) const + 1135740
21 Preat                          0x10a3db4 (anonymous namespace)::draw_image(GrRecordingContext*, skgpu::v1::SurfaceDrawContext*, GrClip const*, SkMatrixProvider const&, SkPaint const&, SkImage_Base const&, SkRect const&, SkRect const&, SkPoint const*, SkMatrix const&, GrQuadAAFlags, SkCanvas::SrcRectConstraint, SkSamplingOptions, SkTileMode) + 2193036
22 Preat                          0x10a580c skgpu::v1::Device::drawImageQuad(SkImage const*, SkRect const*, SkRect const*, SkPoint const*, GrQuadAAFlags, SkMatrix const*, SkSamplingOptions const&, SkPaint const&, SkCanvas::SrcRectConstraint) + 2199780
23 Preat                          0x10a1a00 skgpu::v1::Device::drawImageRect(SkImage const*, SkRect const*, SkRect const&, SkSamplingOptions const&, SkPaint const&, SkCanvas::SrcRectConstraint) + 2183896
24 Preat                          0xee25b0 SkCanvas::onDrawImageRect2(SkImage const*, SkRect const&, SkRect const&, SkSamplingOptions const&, SkPaint const*, SkCanvas::SrcRectConstraint) + 351880
25 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
26 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
27 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
28 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
29 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
30 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
31 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
32 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
33 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
34 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
35 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
36 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
37 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
38 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
39 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
40 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
41 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
42 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
43 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
44 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
45 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
46 Preat                          0xf55020 SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) + 821496
47 Preat                          0xee40a0 SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358776
48 Preat                          0xee3f98 SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) + 358512
49 Preat                          0x13f614c org_jetbrains_skia_Canvas__1nDrawPicture + 5675556
50 Preat                          0x3734e8 kfun:org.jetbrains.skia.Canvas#drawPicture(org.jetbrains.skia.Picture;org.jetbrains.skia.Matrix33?;org.jetbrains.skia.Paint?){}org.jetbrains.skia.Canvas + 62 (Native.native.kt:62)
51 Preat                          0x4cf82c kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$4$FUNCTION_REFERENCE$4.invoke#internal + 579 (Canvas.kt:579)
52 Preat                          0x4d0d4c kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$4$FUNCTION_REFERENCE$4.$<bridge-UNN>invoke(){}#internal + 428 (MetalRedrawer.kt:428)
53 Preat                          0xa37ce0 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
54 Preat                          0x4d0e0c kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$5$FUNCTION_REFERENCE$5.$<bridge-UNN>invoke(){}#internal + 15 (ObjectiveCUtils.kt:15)
55 Preat                          0xa37ce0 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
56 Preat                          0xe5df48 ___6f72672e6a6574627261696e732e636f6d706f73652e75693a75692f6f70742f6275696c644167656e742f776f726b2f356234626566333562333562396631322f636f6d706f73652f75692f75692f7372632f75696b69744d61696e2f6b6f746c696e2f616e64726f6964782f636f6d706f73652f75692f77696e646f772f4d6574616c52656472617765722e6b74_knbridge114_block_invoke + 4384530248
57 libdispatch.dylib              0x2320 _dispatch_call_block_and_release + 32
58 libdispatch.dylib              0x3eac _dispatch_client_callout + 20
59 libdispatch.dylib              0xb534 _dispatch_lane_serial_drain + 668
60 libdispatch.dylib              0xc0a4 _dispatch_lane_invoke + 384
61 libdispatch.dylib              0x16cdc _dispatch_workloop_worker_thread + 648
62 libsystem_pthread.dylib        0xddc _pthread_wqthread + 288
63 libsystem_pthread.dylib        0xb7c start_wqthread + 8

About this issue

  • Original URL
  • State: closed
  • Created 8 months ago
  • Comments: 71 (24 by maintainers)

Commits related to this issue

Most upvoted comments

@dima-avdeev-jb Thanks so much for the help. We launched on Production with CMP today. You and your team have done some awesome work. Eagerly waiting for 1.5.11.

@dima-avdeev-jb @elijah-semyonov @pjBooms This works. Have added the boolean. Testing it with this. Till now have not seen a crash. Previous crash scenarios seem to be holding stable. Sounds encouraging but we will give it some more time.

@pjBooms @elijah-semyonov The crash is still there with 0.0.0-dev1270 and without forceMainThreadRendering Stacktrace

Crashed: RenderingDispatchQueue
0  libobjc.A.dylib                0x8238 objc_loadWeakRetained + 144
1  Medial                         0x10e6c34 GrMtlPipelineState::setDepthStencilState(GrMtlRenderCommandEncoder*) + 160
2  Medial                         0x10e6b80 GrMtlPipelineState::setDrawState(GrMtlRenderCommandEncoder*, skgpu::Swizzle const&, GrXferProcessor const&) + 208
3  Medial                         0x10e53dc GrMtlOpsRenderPass::onBindPipeline(GrProgramInfo const&, SkRect const&) + 292
4  Medial                         0x1000ac0 GrOpsRenderPass::bindPipeline(GrProgramInfo const&, SkRect const&) + 164
5  Medial                         0x10a2b70 (anonymous namespace)::TextureOpImpl::onExecute(GrOpFlushState*, SkRect const&) + 132
6  Medial                         0x108e104 GrOp::execute(GrOpFlushState*, SkRect const&) + 232
7  Medial                         0x108dee4 skgpu::ganesh::OpsTask::onExecute(GrOpFlushState*) + 1036
8  Medial                         0xfed380 GrDrawingManager::executeRenderTasks(GrOpFlushState*) + 188
9  Medial                         0xfecd58 GrDrawingManager::flush(SkSpan<GrSurfaceProxy*>, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&, skgpu::MutableTextureState const*) + 1440
10 Medial                         0xfed58c GrDrawingManager::flushSurfaces(SkSpan<GrSurfaceProxy*>, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&, skgpu::MutableTextureState const*) + 168
11 Medial                         0xfe7d04 GrDirectContextPriv::flushSurfaces(SkSpan<GrSurfaceProxy*>, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&, skgpu::MutableTextureState const*) + 360
12 Medial                         0xfe6cdc GrDirectContext::flush(SkSurface*, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&) + 148
13 Medial                         0xedaaa8 SkSurface::flushAndSubmit(bool) + 84
14 Medial                         0x3ba160 kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$4$FUNCTION_REFERENCE$4.invoke#internal + 956 (Surface.kt:956)
15 Medial                         0x3bb75c kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$4$FUNCTION_REFERENCE$4.$<bridge-UNNB>invoke(kotlin.Boolean){}#internal + 441 (MetalRedrawer.kt:441)
16 Medial                         0x950eb0 kfun:kotlin.Function1#invoke(1:0){}1:1-trampoline + 1 ([K][Suspend]Functions:1)
17 Medial                         0x3bb92c kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$5$FUNCTION_REFERENCE$5.$<bridge-UNN>invoke(){}#internal + 140 (LocalUIKitInteropContext.kt:140)
18 Medial                         0x951530 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
19 Medial                         0xdb64c4 ___6f72672e6a6574627261696e732e636f6d706f73652e75693a75692f6f70742f6275696c644167656e742f776f726b2f356234626566333562333562396631322f636f6d706f73652f75692f75692f7372632f75696b69744d61696e2f6b6f746c696e2f616e64726f6964782f636f6d706f73652f75692f77696e646f772f4d6574616c52656472617765722e6b74_knbridge130_block_invoke + 200
20 libdispatch.dylib              0x2320 _dispatch_call_block_and_release + 32
21 libdispatch.dylib              0x3eac _dispatch_client_callout + 20
22 libdispatch.dylib              0xb534 _dispatch_lane_serial_drain + 668
23 libdispatch.dylib              0xc0a4 _dispatch_lane_invoke + 384
24 libdispatch.dylib              0x16cdc _dispatch_workloop_worker_thread + 648
25 libsystem_pthread.dylib        0xddc _pthread_wqthread + 288
26 libsystem_pthread.dylib        0xb7c start_wqthread + 8

@LaatonWalaBhoot Thanks so much for good assist in problem solving!

Yeah, for now you can use Compose 0.0.0-dev1260 and forceMainThreadRendering = true with custom Skiko version as well.

I am sure, that Compose 1.5.11 will contains fix with fonts. I hope fix for Crashed: RenderingDispatchQueue as well.

As for white backgroud - not sure here. First of all we want to fix and publish as fast as possible all critical bugs. White background may be fixed later… I don’t know yet.

Could be related to either skia upgrade or separate thread render commands encoding. Hard to figure out without reliable repro, I will have a closer look at it.

@elijah-semyonov Please spare me some time. In the middle of the prod release. Will update you at the earliest

@dima-avdeev-jb Font crash and lag are no longer happening with the new skiko version. That seems to be fixed. However Crashed: RenderingDispatchQueue is still there with 1.5.10 and 0.0.0-dev1260 For now moving to production with 0.0.0-dev1260 and forceMainThreadRendering = true Hope this gets resolved in 1.5.11. Would UIKitView white background also get addressed in 1.5.11?

Stacktrace:

Crashed: RenderingDispatchQueue
0  libobjc.A.dylib                0x8238 objc_loadWeakRetained + 144
1  Medial                         0x10cc520 GrMtlPipelineState::setDepthStencilState(GrMtlRenderCommandEncoder*) + 160
2  Medial                         0x10cc46c GrMtlPipelineState::setDrawState(GrMtlRenderCommandEncoder*, skgpu::Swizzle const&, GrXferProcessor const&) + 208
3  Medial                         0x10cacc8 GrMtlOpsRenderPass::onBindPipeline(GrProgramInfo const&, SkRect const&) + 292
4  Medial                         0xfe63ac GrOpsRenderPass::bindPipeline(GrProgramInfo const&, SkRect const&) + 164
5  Medial                         0x108845c (anonymous namespace)::TextureOpImpl::onExecute(GrOpFlushState*, SkRect const&) + 132
6  Medial                         0x10739f0 GrOp::execute(GrOpFlushState*, SkRect const&) + 232
7  Medial                         0x10737d0 skgpu::ganesh::OpsTask::onExecute(GrOpFlushState*) + 1036
8  Medial                         0xfd2c6c GrDrawingManager::executeRenderTasks(GrOpFlushState*) + 188
9  Medial                         0xfd2644 GrDrawingManager::flush(SkSpan<GrSurfaceProxy*>, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&, skgpu::MutableTextureState const*) + 1440
10 Medial                         0xfd2e78 GrDrawingManager::flushSurfaces(SkSpan<GrSurfaceProxy*>, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&, skgpu::MutableTextureState const*) + 168
11 Medial                         0xfcd5f0 GrDirectContextPriv::flushSurfaces(SkSpan<GrSurfaceProxy*>, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&, skgpu::MutableTextureState const*) + 360
12 Medial                         0xfcc5c8 GrDirectContext::flush(SkSurface*, SkSurfaces::BackendSurfaceAccess, GrFlushInfo const&) + 148
13 Medial                         0xec0394 SkSurface::flushAndSubmit(bool) + 84
14 Medial                         0x3b9c88 kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$4$FUNCTION_REFERENCE$4.invoke#internal + 952 (Surface.kt:952)
15 Medial                         0x3bb128 kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$4$FUNCTION_REFERENCE$4.$<bridge-UNN>invoke(){}#internal + 428 (MetalRedrawer.kt:428)
16 Medial                         0x948298 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
17 Medial                         0x3bb1e8 kfun:androidx.compose.ui.window.MetalRedrawer.$draw$lambda$5$FUNCTION_REFERENCE$5.$<bridge-UNN>invoke(){}#internal + 15 (ObjectiveCUtils.kt:15)
18 Medial                         0x948298 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
19 Medial                         0xd9bdb0 ___6f72672e6a6574627261696e732e636f6d706f73652e75693a75692f6f70742f6275696c644167656e742f776f726b2f356234626566333562333562396631322f636f6d706f73652f75692f75692f7372632f75696b69744d61696e2f6b6f746c696e2f616e64726f6964782f636f6d706f73652f75692f77696e646f772f4d6574616c52656472617765722e6b74_knbridge114_block_invoke + 200
20 libdispatch.dylib              0x2320 _dispatch_call_block_and_release + 32
21 libdispatch.dylib              0x3eac _dispatch_client_callout + 20
22 libdispatch.dylib              0xb534 _dispatch_lane_serial_drain + 668
23 libdispatch.dylib              0xc0a4 _dispatch_lane_invoke + 384
24 libdispatch.dylib              0x16cdc _dispatch_workloop_worker_thread + 648
25 libsystem_pthread.dylib        0xddc _pthread_wqthread + 288
26 libsystem_pthread.dylib        0xb7c start_wqthread + 8

@LaatonWalaBhoot It is good to test with Compose version 1.5.10 and with 0.0.0-dev1260 as well. It will help us to better understand the problem.

Anyway, we want to fix all of it in next Compose 1.5.11 release

@dima-avdeev-jb Please give me some time to confirm this. Would this also mean I do not have to use the 0.0.0-dev1260 build and can fallback to 1.5.10? If Crashed: RenderingDispatchQueue crash still appears with Skiko 0.7.88, Do I have to use 0.0.0-dev1260 for the time being?

We fixed Crash with fonts. Please take a look at this comment in another Issue: https://github.com/JetBrains/compose-multiplatform/issues/3822#issuecomment-1806367451

Can you please check it without usage of flag forceMainThreadRendering at first. We hope, that new version of Skiko will help with this Crash as well.

But, if crash Crashed: RenderingDispatchQueue will still appears, you can use forceMainThreadRendering

That’s what the problem is. I am not sure when it started but it has been there since 1.5.1 I have tried expect/actual and moko but intermittent crashes are what is a dealbreaker App is already in production hence staying with the single font for now because that is the only one working without crashes.

@GuilhE I feel your pain. I tried multiple implementations of expect/actual like how Tivi does it but none worked. Since I am using cocoa pods maybe that’s why. Spent almost a week on this. Attaching my typography code maybe this can help you. I am using MOKO for now until CMP releases font support. As you can see I am using only one flavour. Using multiple was causing lags and crashes.

@Composable
fun SansSerifCondensed() = fontFamilyResource(Res.fonts.RobotoCondensed.medium)

@Composable
fun MedialTypography(): Typography {
    val sansSerifCondensed = SansSerifCondensed()

    return Typography(
        labelLarge = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.Medium,
            letterSpacing = 0.10000000149011612.sp,
            lineHeight = 20.sp,
            fontSize = 14.sp
        ),
        labelMedium = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.Medium,
            letterSpacing = 0.5.sp,
            lineHeight = 16.sp,
            fontSize = 12.sp
        ),
        labelSmall = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.Medium,
            letterSpacing = 0.5.sp,
            lineHeight = 16.sp,
            fontSize = 11.sp
        ),
        bodyLarge = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.5.sp,
            lineHeight = 24.sp,
            fontSize = 16.sp
        ),
        bodyMedium = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.25.sp,
            lineHeight = 20.sp,
            fontSize = 14.sp
        ),
        bodySmall = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.4000000059604645.sp,
            lineHeight = 16.sp,
            fontSize = 12.sp
        ),
        headlineLarge = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.sp,
            lineHeight = 40.sp,
            fontSize = 32.sp
        ),
        headlineMedium = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.sp,
            lineHeight = 36.sp,
            fontSize = 28.sp
        ),
        headlineSmall = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.sp,
            lineHeight = 32.sp,
            fontSize = 24.sp
        ),
        displayLarge = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = (-0.25).sp,
            lineHeight = 64.sp,
            fontSize = 57.sp
        ),
        displayMedium = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.sp,
            lineHeight = 52.sp,
            fontSize = 45.sp
        ),
        displaySmall = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.sp,
            lineHeight = 44.sp,
            fontSize = 36.sp
        ),
        titleLarge = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.W400,
            letterSpacing = 0.sp,
            lineHeight = 28.sp,
            fontSize = 22.sp
        ),
        titleMedium = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.Medium,
            letterSpacing = 0.15000000596046448.sp,
            lineHeight = 24.sp,
            fontSize = 16.sp
        ),
        titleSmall = TextStyle(
            fontFamily = sansSerifCondensed,
            fontWeight = FontWeight.Medium,
            letterSpacing = 0.10000000149011612.sp,
            lineHeight = 20.sp,
            fontSize = 14.sp
        )
    )

}

@dima-avdeev-jb Did try it. Both crashes are still reproduced. 😦 While GrGpuResource::release() is rare (seems to be linked to UIKitView implementation of Lottie), Font crash is quite frequent, it might be linked to Moko resources implementation of loading font resources. Changing it to manual font loading might fix it.

@dima-avdeev-jb Can’t say this only happens on navigating back It is very very random and quite frequent as well. Sometimes happens on scrolling to the top and also while navigating to a screen.

Some changes that I have tried.

  • Not using custom fonts
  • Downgrading to compose 1.5.1
  • Ensuring isStatic to true.

I know you guys have plenty on your plate. But 2 weeks of production users getting affected would be a bit much. Is it possible to make a dev release?

@elijah-semyonov @dima-avdeev-jb Without the boolean flag We are getting this stack trace it is different than the ones we have been seeing before

Edit: This is happening with the boolean flag as well

Fatal Exception: NSInvalidArgumentException
0   CoreFoundation                 0x9cb4 __exceptionPreprocess
1   libobjc.A.dylib                0x183d0 objc_exception_throw
2   CoreFoundation                 0x1aff84 -[__NSCFString characterAtIndex:].cold.1
3   CoreFoundation                 0x1b1c58 -[NSMutableDictionary __addObject:forKey:].cold.2
4   CoreFoundation                 0x16880 -[NSMutableDictionary __addObject:forKey:]
5   Medial                         0xfd2aa8 SkFontMgr_Mac::CreateSet(__CFString const*)
6   Medial                         0xfd1944 SkFontMgr_Mac::onMatchFamily(char const*) const
7   Medial                         0xe38c08 SkFontMgr::matchFamily(char const*) const
8   Medial                         0xddad00 skia::textlayout::FontCollection::matchTypeface(SkString const&, SkFontStyle)
9   Medial                         0xdda7a4 skia::textlayout::FontCollection::findTypefaces(std::__1::vector<SkString, std::__1::allocator<SkString>> const&, SkFontStyle, std::__1::optional<skia::textlayout::FontArguments> const&)
10  Medial                         0xddded4 skia::textlayout::OneLineShaper::matchResolvedFonts(skia::textlayout::TextStyle const&, std::__1::function<skia::textlayout::OneLineShaper::Resolved (sk_sp<SkTypeface>)> const&)
11  Medial                         0xde3738 std::__1::__function::__func<skia::textlayout::OneLineShaper::shape()::$_3::operator()(skia::textlayout::SkRange<unsigned long>, SkSpan<skia::textlayout::Block>, float&, unsigned long, unsigned char) const::'lambda'(skia::textlayout::Block, SkTArray<SkShaper::Feature, true>), std::__1::allocator<skia::textlayout::OneLineShaper::shape()::$_3::operator()(skia::textlayout::SkRange<unsigned long>, SkSpan<skia::textlayout::Block>, float&, unsigned long, unsigned char) const::'lambda'(skia::textlayout::Block, SkTArray<SkShaper::Feature, true>)>, void (skia::textlayout::Block, SkTArray<SkShaper::Feature, true>)>::operator()(skia::textlayout::Block&&, SkTArray<SkShaper::Feature, true>&&)
12  Medial                         0xddda04 skia::textlayout::OneLineShaper::iterateThroughFontStyles(skia::textlayout::SkRange<unsigned long>, SkSpan<skia::textlayout::Block>, std::__1::function<void (skia::textlayout::Block, SkTArray<SkShaper::Feature, true>)> const&)
13  Medial                         0xde33b4 std::__1::__function::__func<skia::textlayout::OneLineShaper::shape()::$_3, std::__1::allocator<skia::textlayout::OneLineShaper::shape()::$_3>, float (skia::textlayout::SkRange<unsigned long>, SkSpan<skia::textlayout::Block>, float&, unsigned long, unsigned char)>::operator()(skia::textlayout::SkRange<unsigned long>&&, SkSpan<skia::textlayout::Block>&&, float&, unsigned long&&, unsigned char&&)
14  Medial                         0xdded18 skia::textlayout::OneLineShaper::iterateThroughShapingRegions(std::__1::function<float (skia::textlayout::SkRange<unsigned long>, SkSpan<skia::textlayout::Block>, float&, unsigned long, unsigned char)> const&)
15  Medial                         0xddef4c skia::textlayout::OneLineShaper::shape()
16  Medial                         0xde9744 skia::textlayout::ParagraphImpl::layout(float)
17  Medial                         0x26bfd8 kfun:org.jetbrains.skia.paragraph.Paragraph#layout(kotlin.Float){}org.jetbrains.skia.paragraph.Paragraph + 86 (Paragraph.kt:86)
18  Medial                         0x2dd044 kfun:androidx.compose.ui.text.platform.ParagraphLayouter#layoutParagraph(kotlin.Float){}org.jetbrains.skia.paragraph.Paragraph + 167 (ParagraphLayouter.skiko.kt:167)
19  Medial                         0x2e79ac kfun:androidx.compose.ui.text.platform.SkiaParagraphIntrinsics#<init>(kotlin.String;androidx.compose.ui.text.TextStyle;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.SpanStyle>>;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.Placeholder>>;androidx.compose.ui.unit.Density;androidx.compose.ui.text.font.FontFamily.Resolver){} + 80 (SkiaParagraphIntrinsics.skiko.kt:80)
20  Medial                         0x2b06e4 kfun:androidx.compose.ui.text.MultiParagraphIntrinsics#<init>(androidx.compose.ui.text.AnnotatedString;androidx.compose.ui.text.TextStyle;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.Placeholder>>;androidx.compose.ui.unit.Density;androidx.compose.ui.text.font.FontFamily.Resolver){} + 105 (ParagraphIntrinsics.kt:105)
21  Medial                         0x4aa38c kfun:androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.setLayoutDirection#internal + 261 (MultiParagraphLayoutCache.kt:261)
22  Medial                         0x4aa450 kfun:androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.layoutText#internal + 275 (MultiParagraphLayoutCache.kt:275)
23  Medial                         0x4addf4 kfun:androidx.compose.foundation.text.modifiers.TextAnnotatedStringNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult + 162 (MultiParagraphLayoutCache.kt:162)
24  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
25  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
26  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
27  Medial                         0x3064b0 kfun:androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure#internal + 646 (GraphicsLayerModifier.kt:646)
28  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
29  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
30  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
31  Medial                         0x3ee640 kfun:androidx.compose.foundation.layout.PaddingNode.measure#internal + 397 (Padding.kt:397)
32  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
33  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
34  Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
35  Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
36  Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
37  Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
38  Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
39  Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
40  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
41  Medial                         0x3f5c54 kfun:androidx.compose.foundation.layout.RowColumnMeasurementHelper#measureWithoutPlacing(androidx.compose.ui.layout.MeasureScope;androidx.compose.ui.unit.Constraints;kotlin.Int;kotlin.Int){}androidx.compose.foundation.layout.RowColumnMeasureHelperResult + 112 (RowColumnMeasurementHelper.kt:112)
42  Medial                         0x3f4dd4 kfun:androidx.compose.foundation.layout.object-2.measure#internal + 72 (RowColumnImpl.kt:72)
43  Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
44  Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
45  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
46  Medial                         0x3eea64 kfun:androidx.compose.foundation.layout.PaddingValuesModifier.measure#internal + 455 (Padding.kt:455)
47  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
48  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
49  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
50  Medial                         0x3fa6d4 kfun:androidx.compose.foundation.layout.UnspecifiedConstraintsNode.measure#internal + 1072 (Size.kt:1072)
51  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
52  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
53  Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
54  Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
55  Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
56  Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
57  Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
58  Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
59  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
60  Medial                         0x3e6600 kfun:androidx.compose.foundation.layout.$boxMeasurePolicy$lambda$6$FUNCTION_REFERENCE$2.$<bridge-NNNNU>measure@androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.MeasureScope;kotlin.collections.List<androidx.compose.ui.layout.Measurable>){}androidx.compose.ui.layout.MeasureResult#internal + 114 (Box.kt:114)
61  Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
62  Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
63  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
64  Medial                         0x3064b0 kfun:androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure#internal + 646 (GraphicsLayerModifier.kt:646)
65  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
66  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
67  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
68  Medial                         0x6f1c10 kfun:androidx.compose.material3.MinimumInteractiveComponentSizeModifier.measure#internal + 104 (InteractiveComponentSize.kt:104)
69  Medial                         0x97c97c kfun:androidx.compose.ui.layout.LayoutModifier#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 57 (LayoutModifier.kt:57)
70  Medial                         0x334648 kfun:androidx.compose.ui.node.BackwardsCompatNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult + 313 (BackwardsCompatNode.kt:313)
71  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
72  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
73  Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
74  Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
75  Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
76  Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
77  Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
78  Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
79  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
80  Medial                         0x3e92ac kfun:androidx.compose.foundation.layout.measureAndCache#internal + 731 (FlowLayout.kt:731)
81  Medial                         0x3e987c kfun:androidx.compose.foundation.layout.object-1.measure#internal + 622 (FlowLayout.kt:622)
82  Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
83  Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
84  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
85  Medial                         0x3f93b0 kfun:androidx.compose.foundation.layout.FillNode.measure#internal + 698 (Size.kt:698)
86  Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
87  Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
88  Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
89  Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
90  Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
91  Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
92  Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
93  Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
94  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
95  Medial                         0x40a0ac kfun:androidx.compose.animation.AnimatedEnterExitMeasurePolicy.measure#internal + 795 (AnimatedVisibility.kt:795)
96  Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
97  Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
98  Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
99  Medial                         0x4059b4 kfun:androidx.compose.animation.$AnimatedContent$lambda$10$lambda$6$FUNCTION_REFERENCE$32.$<bridge-NNNNNB>invoke(androidx.compose.ui.layout.MeasureScope;androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult#internal + 763 (AnimatedContent.kt:763)
100 Medial                         0x9468ac kfun:kotlin.Function3#invoke(1:0;1:1;1:2){}1:3-trampoline + 1 ([K][Suspend]Functions:1)
101 Medial                         0x3275a4 kfun:androidx.compose.ui.layout.LayoutModifierImpl#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult + 291 (LayoutModifier.kt:291)
102 Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
103 Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
104 Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
105 Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
106 Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
107 Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
108 Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
109 Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
110 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
111 Medial                         0x403d0c kfun:androidx.compose.animation.AnimatedContentMeasurePolicy.measure#internal + 814 (AnimatedContent.kt:814)
112 Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
113 Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
114 Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
115 Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
116 Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
117 Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
118 Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
119 Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
120 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
121 Medial                         0x3f5c54 kfun:androidx.compose.foundation.layout.RowColumnMeasurementHelper#measureWithoutPlacing(androidx.compose.ui.layout.MeasureScope;androidx.compose.ui.unit.Constraints;kotlin.Int;kotlin.Int){}androidx.compose.foundation.layout.RowColumnMeasureHelperResult + 112 (RowColumnMeasurementHelper.kt:112)
122 Medial                         0x3f4dd4 kfun:androidx.compose.foundation.layout.object-2.measure#internal + 72 (RowColumnImpl.kt:72)
123 Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
124 Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
125 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
126 Medial                         0x3f93b0 kfun:androidx.compose.foundation.layout.FillNode.measure#internal + 698 (Size.kt:698)
127 Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
128 Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
129 Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
130 Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
131 Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
132 Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
133 Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
134 Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
135 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
136 Medial                         0x46f03c kfun:androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl#measure(kotlin.Int;androidx.compose.ui.unit.Constraints){}kotlin.collections.List<androidx.compose.ui.layout.Placeable> + 123 (LazyLayoutMeasureScope.kt:123)
137 Medial                         0x98ace8 kfun:androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScope#measure(kotlin.Int;androidx.compose.ui.unit.Constraints){}kotlin.collections.List<androidx.compose.ui.layout.Placeable>-trampoline + 58 (LazyLayoutMeasureScope.kt:58)
138 Medial                         0x4558bc kfun:androidx.compose.foundation.lazy.LazyListMeasuredItemProvider#getAndMeasure(kotlin.Int){}androidx.compose.foundation.lazy.LazyListMeasuredItem + 48 (LazyListMeasuredItemProvider.kt:48)
139 Medial                         0x452618 kfun:androidx.compose.foundation.lazy#measureLazyList(kotlin.Int;androidx.compose.foundation.lazy.LazyListMeasuredItemProvider;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Float;androidx.compose.ui.unit.Constraints;kotlin.Boolean;kotlin.collections.List<kotlin.Int>;androidx.compose.foundation.layout.Arrangement.Vertical?;androidx.compose.foundation.layout.Arrangement.Horizontal?;kotlin.Boolean;androidx.compose.ui.unit.Density;androidx.compose.foundation.lazy.LazyListItemPlacementAnimator;kotlin.Int;kotlin.collections.List<kotlin.Int>;kotlin.Function3<kotlin.Int,kotlin.Int,kotlin.Function1<androidx.compose.ui.layout.Placeable.PlacementScope,kotlin.Unit>,androidx.compose.ui.layout.MeasureResult>){}androidx.compose.foundation.lazy.LazyListMeasureResult + 159 (LazyListMeasure.kt:159)
140 Medial                         0x44f5f8 kfun:androidx.compose.foundation.lazy.$rememberLazyListMeasurePolicy$lambda$2$FUNCTION_REFERENCE$1.$<bridge-NNNNB>invoke(androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScope;androidx.compose.ui.unit.Constraints){}androidx.compose.foundation.lazy.LazyListMeasureResult#internal + 158 (Standard.kt:158)
141 Medial                         0x9467d0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 1 ([K][Suspend]Functions:1)
142 Medial                         0x469e2c kfun:androidx.compose.foundation.lazy.layout.$LazyLayout$lambda$2$lambda$1$FUNCTION_REFERENCE$3.$<bridge-NNNNB>invoke(androidx.compose.ui.layout.SubcomposeMeasureScope;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult#internal + 89 (LazyLayout.kt:89)
143 Medial                         0x9467d0 kfun:kotlin.Function2#invoke(1:0;1:1){}1:2-trampoline + 1 ([K][Suspend]Functions:1)
144 Medial                         0x32e2e4 kfun:androidx.compose.ui.layout.LayoutNodeSubcompositionsState.object-1.measure#internal + 866 (SubcomposeLayout.kt:866)
145 Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
146 Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
147 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
148 Medial                         0x3ecb70 kfun:androidx.compose.foundation.layout.OffsetPxNode.measure#internal + 245 (Offset.kt:245)
149 Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
150 Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
151 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
152 Medial                         0x3064b0 kfun:androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure#internal + 646 (GraphicsLayerModifier.kt:646)
153 Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
154 Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
155 Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
156 Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
157 Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
158 Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
159 Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
160 Medial                         0x34df04 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 541 (LayoutNodeLayoutDelegate.kt:541)
161 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
162 Medial                         0x3e6600 kfun:androidx.compose.foundation.layout.$boxMeasurePolicy$lambda$6$FUNCTION_REFERENCE$2.$<bridge-NNNNU>measure@androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.MeasureScope;kotlin.collections.List<androidx.compose.ui.layout.Measurable>){}androidx.compose.ui.layout.MeasureResult#internal + 114 (Box.kt:114)
163 Medial                         0x97cd70 kfun:androidx.compose.ui.layout.MeasurePolicy#measure__at__androidx.compose.ui.layout.MeasureScope(kotlin.collections.List<androidx.compose.ui.layout.Measurable>;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 88 (MeasurePolicy.kt:88)
164 Medial                         0x33c504 kfun:androidx.compose.ui.node.InnerNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 126 (InnerNodeCoordinator.kt:126)
165 Medial                         0x976460 kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline + 30 (Measurable.kt:30)
166 Medial                         0x3f93b0 kfun:androidx.compose.foundation.layout.FillNode.measure#internal + 698 (Size.kt:698)
167 Medial                         0x97ed64 kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline + 64 (LayoutModifierNode.kt:64)
168 Medial                         0x33fcf0 kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable + 116 (LayoutModifierNodeCoordinator.kt:116)
169 Medial                         0x352730 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$performMeasure$lambda$0$FUNCTION_REFERENCE$10.$<bridge-UNN>invoke(){}#internal + 1500 (LayoutNodeLayoutDelegate.kt:1500)
170 Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
171 Medial                         0x218124 kfun:androidx.compose.runtime.snapshots.Snapshot.Companion#observe(kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function1<kotlin.Any,kotlin.Unit>?;kotlin.Function0<0:0>){0§<kotlin.Any?>}0:0 + 132 (Snapshot.kt:132)
172 Medial                         0x22e744 kfun:androidx.compose.runtime.snapshots.SnapshotStateObserver#observeReads(0:0;kotlin.Function1<0:0,kotlin.Unit>;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>} + 471 (SnapshotStateObserver.kt:471)
173 Medial                         0x34e268 kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.MeasurePassDelegate#remeasure(androidx.compose.ui.unit.Constraints){}kotlin.Boolean + 115 (OwnerSnapshotObserver.kt:115)
174 Medial                         0x347c28 kfun:androidx.compose.ui.node.LayoutNode#remeasure(androidx.compose.ui.unit.Constraints?){}kotlin.Boolean + 1140 (LayoutNode.kt:1140)
175 Medial                         0x347cc8 kfun:androidx.compose.ui.node.LayoutNode#remeasure$default(androidx.compose.ui.unit.Constraints?;kotlin.Int){}kotlin.Boolean + 1144 (LayoutNode.kt:1144)
176 Medial                         0x3552c0 kfun:androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure#internal + 323 (MeasureAndLayoutDelegate.kt:323)
177 Medial                         0x35579c kfun:androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded#internal + 458 (MeasureAndLayoutDelegate.kt:458)
178 Medial                         0x383140 kfun:androidx.compose.ui.platform.SkiaBasedOwner#measureAndLayout(kotlin.Boolean){} + 345 (MeasureAndLayoutDelegate.kt:345)
179 Medial                         0x3ac5d8 kfun:androidx.compose.ui.window.ComposeWindow.object-2.render#internal (ListUtils.kt)
180 Medial                         0x3c6644 kfun:androidx.compose.ui.window.SkikoUIView.object-3.render#internal + 93 (SkikoUIView.kt:93)
181 Medial                         0x3bc63c kfun:androidx.compose.ui.window.MetalRedrawer.draw#internal + 162 (MetalRedrawer.kt:162)
182 Medial                         0x3bda1c kfun:androidx.compose.ui.window.MetalRedrawer.$<init>$lambda$0$FUNCTION_REFERENCE$0.$<bridge-UNN>invoke(){}#internal + 259 (MetalRedrawer.kt:259)
183 Medial                         0x944534 kfun:kotlin.Function0#invoke(){}1:0-trampoline + 1 ([K][Suspend]Functions:1)
184 Medial                         0x3c0470 kfun:androidx.compose.ui.window.DisplayLinkProxy.$imp:handleDisplayLinkTick#internal + 473 (MetalRedrawer.kt:473)
185 QuartzCore                     0x29328 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long)
186 QuartzCore                     0x146e68 CA::Display::DisplayLink::dispatch_deferred_display_links(unsigned int)
187 UIKitCore                      0x64dd94 _UIUpdateSequenceRun
188 UIKitCore                      0xcb2894 schedulerStepScheduledMainSection
189 UIKitCore                      0xcb1df0 runloopSourceCallback
190 CoreFoundation                 0xd3128 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
191 CoreFoundation                 0xdf7b4 __CFRunLoopDoSource0
192 CoreFoundation                 0x645e8 __CFRunLoopDoSources0
193 CoreFoundation                 0x7a0d4 __CFRunLoopRun
194 CoreFoundation                 0x7f3ec CFRunLoopRunSpecific
195 GraphicsServices               0x135c GSEventRunModal
196 UIKitCore                      0x39cf58 -[UIApplication _run]
197 UIKitCore                      0x39cbbc UIApplicationMain
198 SwiftUI                        0x1bcc50 OUTLINED_FUNCTION_895
199 SwiftUI                        0x1231ec block_copy_helper.1
200 SwiftUI                        0x10d294 OUTLINED_FUNCTION_901
201 Medial                         0x8670 main (iOSApp.swift)
202 ???                            0x1a9a00dec (Missing)

@dima-avdeev-jb @elijah-semyonov @pjBooms

This works. Have added the boolean.

Can you test it without the boolean?

Yes. Will do a round of A/B with this and report back.

We see this also, it should related to the pictures