googlemaps / android-maps-compose

Jetpack Compose composables for the Maps SDK for Android
https://developers.google.com/maps/documentation/android-sdk/maps-compose
Apache License 2.0
1.16k stars 142 forks source link

java.lang.IllegalArgumentException: Unmanaged descriptor #414

Open Psijic opened 1 year ago

Psijic commented 1 year ago

This bug wasn't solved. Got it today. Just use a lot of markers in clustering - wait for them to start show on the map and then switch screens (navigate) before all of them became rendered.

 java.lang.IllegalArgumentException: Unmanaged descriptor
  at com.google.maps.api.android.lib6.common.m.b(:com.google.android.gms.dynamite_mapsdynamite@233414047@23.34.14 (190800-0):10)
  at com.google.maps.api.android.lib6.impl.w.c(:com.google.android.gms.dynamite_mapsdynamite@233414047@23.34.14 (190800-0):18)
  at com.google.maps.api.android.lib6.impl.cw.u(:com.google.android.gms.dynamite_mapsdynamite@233414047@23.34.14 (190800-0):11)
  at com.google.android.gms.maps.model.internal.p.bb(:com.google.android.gms.dynamite_mapsdynamite@233414047@23.34.14 (190800-0):347)
  at m.fi.onTransact(:com.google.android.gms.dynamite_mapsdynamite@233414047@23.34.14 (190800-0):21)
  at android.os.Binder.transact(Binder.java:1164)
  at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@18.1.0:2)
  at com.google.android.gms.internal.maps.zzy.zzs(com.google.android.gms:play-services-maps@@18.1.0:3)
  at com.google.android.gms.maps.model.Marker.setIcon(com.google.android.gms:play-services-maps@@18.1.0:2)
  at com.google.maps.android.clustering.view.DefaultClusterRenderer.onClusterUpdated(DefaultClusterRenderer.java:937)
  at com.google.maps.android.clustering.view.DefaultClusterRenderer$CreateMarkerTask.perform(DefaultClusterRenderer.java:1053)
  at com.google.maps.android.clustering.view.DefaultClusterRenderer$CreateMarkerTask.access$2300(DefaultClusterRenderer.java:992)
  at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.performNextTask(DefaultClusterRenderer.java:707)
  at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.handleMessage(DefaultClusterRenderer.java:678)
  at android.os.Handler.dispatchMessage(Handler.java:106)
  at android.os.Looper.loopOnce(Looper.java:201)
  at android.os.Looper.loop(Looper.java:288)
  at android.app.ActivityThread.main(ActivityThread.java:7872)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Code:

    val events by viewModel.eventsLocalDto.filtered.collectAsStateWithLifecycle()
    val selectedEvent by viewModel.selectedEvent.collectAsStateWithLifecycle()

    Clustering(
        items = events,
        onClusterItemClick = {
            Timber.v("Marker clicked: ${it.name}")
            viewModel.selectEvent(it)
            true
        },
    )

    if (selectedEvent is EventItem) (selectedEvent as EventItem).latLng.let {
        val selectedMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)
        Marker(state = MarkerState(it), zIndex = 0.5f, icon = selectedMarker)
    }

selectedEvent wasn't even used here. So, all markers had default view and their count was: 32632.

milosfec commented 1 year ago

I have the same issue and it's easy to reproduce. I have 200+ markers. By quickly tapping on the 200+ circle, map zooms in low res. Before it renders high res map and draw all markers, I navigate back to the previous screen. Within a second app crashes with the mentioned error.

milosfec commented 1 year ago

Just tested with the latest release 3.0.0 and the issue is still there.

milosfec commented 1 year ago

I found the cause of the crash in my case:

val cameraPositionState = rememberCameraPositionState()
GoogleMap(
    modifier = Modifier.fillMaxSize(),
    cameraPositionState = cameraPositionState,
) {
    Clustering(
        items = items,
        clusterItemContent = { mapDataClass ->
            ClusterItemContent(
                mapDataClass = mapDataClass,
                isCameraMoving = cameraPositionState.isMoving,
            )
        },
    )
}

Looks like cameraPositionState changes when the screen is already leaving composition. Without using cameraPositionState for clusterItemContent, the app won't crash.

I even found a workaround: var isScreenClosing by remember { mutableStateOf(false) } I set this boolean to true before navigating. Then I updated clusterItemContent:

clusterItemContent = { mapDataClass ->
    if (!isScreenClosing) {
        ClusterItemContent(
            mapDataClass = mapDataClass,
            isCameraMoving = cameraPositionState.isMoving,
        )
    }
},

With this I wasn't able to replicate the crash anymore.

Anyway, I'm not 100% confident with this workaround. It doesn't cover scenarios when navigation changes outside of the screen with map.

Proper fix should be that this library shouldn't try to update marker icons while it's being released.

Psijic commented 1 year ago

What is isScreenClosing? Some flag toggled in Disposable?

milosfec commented 1 year ago

@Psijic it's just a var I created that I'm setting to true before navigating out of the screen. That way I can prevent recomposition of clusterItemContent. It's not perfect, because when navigation is changed outside of the screen, then the screen has no idea and it can still crash. It's safer to prevent using cameraPositionState inside clusterItemContent...

I'm going to check the source code of DefaultClusterRenderer looking for a better solution.

mosmb commented 1 year ago

Got this crash too. I'm not using Cluster but simply MarkerComposable

kikoso commented 1 year ago

Hi folks,

The following PR might fix this issue. The Clustering was not being disposed, so probably with a large number of markers the process to deal with items in a cluster could be somehow taking longer, and by the time an item is going to be updated the map does not longer exist. I will let you know when it is merged and maybe you folks can take a look.

https://github.com/googlemaps/android-maps-compose/pull/458

0xffrom commented 11 months ago

Same problem, appeared when upgrading from 2.14.0 to 4.1.1. I only use markers without clustering.

  1. com.google.maps.android:maps-compose: 4.1.1
  2. com.google.android.gms:play-services-maps: 18.2.0
  3. com.google.android.gms:play-services-base: 18.2.0
Fatal Exception: java.lang.IllegalArgumentException
Unmanaged descriptor

com.google.maps.api.android.lib6.common.p.a (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:10)
com.google.maps.api.android.lib6.impl.ab.a (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:17)
com.google.maps.api.android.lib6.impl.el.V (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:6)
com.google.maps.api.android.lib6.phoenix.bj.v (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:7)
com.google.maps.api.android.lib6.phoenix.bj.h (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:153)
com.google.maps.api.android.lib6.impl.es.run (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:54)
android.os.Handler.handleCallback (Handler.java:971)
android.os.Handler.dispatchMessage (Handler.java:107)
android.os.Looper.loopOnce (Looper.java:206)
android.os.Looper.loop (Looper.java:296)
android.app.ActivityThread.main (ActivityThread.java:9159)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:591)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1018) 
0xffrom commented 11 months ago

@kikoso, hi! Has the problem been fixed in 4.3.0?

kikoso commented 11 months ago

Hi @0xffrom .

The latest version (4.3.0) includes a fix that disposes of clusters, which was not happening in previous versions.

If you aren't using Clustering, this is likely another issue. Could you provide another code snippet with the relevant code block? (for instance, the region where you are adding the Marker to the Map).

milosfec commented 11 months ago

@kikoso I've retested with version 4.3.0 and I wasn't able to reproduce the crash. I believe the clustering issue is now gone, thank you!

kikoso commented 11 months ago

Thanks for letting us know, @milosfec !

wangela commented 11 months ago

Closing this as fixed by #458 in v4.3.0. Please re-open if it recurs in v4.3.0 or later.

bigmeco commented 10 months ago

Hello, I am facing this problem on version v4.3.0, when the number of markers in the cluster exceeds 100 elements

android.net.ConnectivityManager$TooManyRequestsException
at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4165)
at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4357)
at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4364)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4746)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4716)
at m.fbc.h(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:41)
at m.fbc.<init>(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:140)
at com.google.maps.api.android.lib6.impl.hz.<init>(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:7)
at com.google.android.gms.maps.internal.CreatorImpl.c(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:1157)
at com.google.android.gms.maps.internal.CreatorImpl.logInitialization(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:16)
at com.google.android.gms.maps.internal.i.bp(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:75)
at m.bcb.onTransact(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:21)
at android.os.Binder.transact(Binder.java:1188)
at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@18.2.0:2)
at com.google.android.gms.maps.internal.zze.zzl(com.google.android.gms:play-services-maps@@18.2.0:4)
at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.2.0:12)
at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.2.0:1)
at com.google.android.gms.maps.zzai.zzb(com.google.android.gms:play-services-maps@@18.2.0:2)
at com.google.android.gms.maps.zzai.createDelegate(com.google.android.gms:play-services-maps@@18.2.0:1)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.1.0:6)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate(com.google.android.gms:play-services-base@@18.1.0:1)
at com.google.android.gms.maps.MapView.onCreate(com.google.android.gms:play-services-maps@@18.2.0:4)
at com.google.maps.android.compose.GoogleMapKt.lifecycleObserver$lambda$11(GoogleMap.kt:207)
at com.google.maps.android.compose.GoogleMapKt.$r8$lambda$Vm6abttjyrD0BNPAw0a-nOgtk1E(Unknown Source:0)
at com.google.maps.android.compose.GoogleMapKt$$ExternalSyntheticLambda0.onStateChanged(Unknown Source:4)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192)
at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:182)
at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:178)
at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:82)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1137)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:828)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:849)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1041)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:520)
hanna-h commented 9 months ago

Hi @wangela ,

Firebase Analytics indicates that this issue is still happening in the newest release of our app, which uses version 4.3.0.

Fatal Exception: java.lang.IllegalArgumentException: Unmanaged descriptor
       at com.google.maps.api.android.lib6.common.m.b(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):10)
       at com.google.maps.api.android.lib6.impl.w.c(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):18)
       at com.google.maps.api.android.lib6.impl.cw.u(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):11)
       at com.google.android.gms.maps.model.internal.r.bb(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):347)
       at m.ee.onTransact(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):21)
       at android.os.Binder.transact(Binder.java:1173)
       at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@18.2.0:2)
       at com.google.android.gms.internal.maps.zzab.zzt(com.google.android.gms:play-services-maps@@18.2.0:3)
       at com.google.android.gms.maps.model.Marker.setIcon(com.google.android.gms:play-services-maps@@18.2.0:2)
       at com.google.maps.android.clustering.view.DefaultClusterRenderer.onClusterUpdated(DefaultClusterRenderer.java:972)
       at com.google.maps.android.clustering.view.DefaultClusterRenderer$CreateMarkerTask.perform(DefaultClusterRenderer.java:1091)
       at com.google.maps.android.clustering.view.DefaultClusterRenderer$CreateMarkerTask.access$1900(DefaultClusterRenderer.java:1027)
       at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.performNextTask(DefaultClusterRenderer.java:738)
       at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.handleMessage(DefaultClusterRenderer.java:710)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loopOnce(Looper.java:238)
       at android.os.Looper.loop(Looper.java:357)
       at android.app.ActivityThread.main(ActivityThread.java:8194)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957)
fngbala-luna commented 9 months ago

Hi everyone, I am also facing the issue with the 4.3.0 I never managed to reproduce it during development, however, our users experience it.

Fatal Exception: android.net.ConnectivityManager$TooManyRequestsException:
       at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4165)
       at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4357)
       at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4364)
       at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4746)
       at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4716)
       at m.fbc.h(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:41)
       at m.fbc.e(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:1)
       at com.google.maps.api.android.lib6.impl.p.b(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:27)
       at com.google.maps.api.android.lib6.impl.cm.aY(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:3)
       at com.google.maps.api.android.lib6.impl.cm.D(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:32)
       at com.google.maps.api.android.lib6.impl.eh.l(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:3)
       at com.google.android.gms.maps.internal.s.bp(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:14)
       at m.bcb.onTransact(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:21)
       at android.os.Binder.transact(Binder.java:1188)
       at com.google.android.gms.internal.maps.zza.zzc(zza.java:2)
       at com.google.android.gms.maps.internal.zzl.onStart(zzl.java:2)
       at com.google.android.gms.maps.zzah.onStart(com.google.android.gms:play-services-maps@@18.2.0:1)
       at com.google.android.gms.dynamic.zaf.zab(com.google.android.gms:play-services-base@@18.3.0:1)
       at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.3.0:1)
       at com.google.android.gms.dynamic.DeferredLifecycleHelper.onStart(DeferredLifecycleHelper.java:1)
       at com.google.android.gms.maps.MapView.onStart(MapView.java:1)
       at com.google.maps.android.compose.GoogleMapKt.lifecycleObserver$lambda$11(GoogleMap.kt:211)
       at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:322)
       at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:199)
       at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:182)
       at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:178)
       at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:82)
       at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1137)
       at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:828)
       at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:849)
       at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1041)
       at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
       at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
       at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:520)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcomposeInto(SubcomposeLayout.kt:721)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:694)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:685)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:669)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SubcomposeLayout.kt:1014)
       at androidx.compose.material3.BottomSheetScaffoldKt$BottomSheetScaffoldLayout$1$1.invoke-0kLqBqw(BottomSheetScaffold.kt:347)
       at androidx.compose.material3.BottomSheetScaffoldKt$BottomSheetScaffoldLayout$1$1.invoke(BottomSheetScaffold.kt:329)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:866)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$p(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
       at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1.measure-3p2s80s(Box.kt:114)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.foundation.layout.FillNode.measure-3p2s80s(Size.kt:698)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$p(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
       at androidx.compose.animation.AnimatedEnterExitMeasurePolicy.measure-3p2s80s(AnimatedVisibility.kt:795)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.ui.graphics.BlockGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:578)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$1.invoke-3p2s80s(AnimatedContent.kt:763)
       at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$1.invoke(AnimatedContent.kt:762)
       at androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s(LayoutModifier.kt:291)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$p(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
       at androidx.compose.animation.AnimatedContentMeasurePolicy.measure-3p2s80s(AnimatedContent.kt:814)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.animation.AnimatedContentTransitionScopeImpl$SizeModifier.measure-3p2s80s(AnimatedContent.kt:598)
       at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:311)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:646)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
       at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
       at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$p(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
       at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1140)
       at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.kt:1131)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:323)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:458)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$getRoot$p(MeasureAndLayoutDelegate.kt)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:344)
       at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:879)
       at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.kt:223)
       at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1127)
       at android.view.View.draw(View.java:23469)
       at android.view.View.updateDisplayListIfDirty(View.java:22297)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
       at android.view.View.updateDisplayListIfDirty(View.java:22248)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
       at android.view.View.updateDisplayListIfDirty(View.java:22248)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
       at android.view.View.updateDisplayListIfDirty(View.java:22248)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
       at android.view.View.updateDisplayListIfDirty(View.java:22248)
       at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:682)
       at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:688)
       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:790)
       at android.view.ViewRootImpl.draw(ViewRootImpl.java:4898)
       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4593)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3759)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2453)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9468)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1405)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1413)
       at android.view.Choreographer.doCallbacks(Choreographer.java:1040)
       at android.view.Choreographer.doFrame(Choreographer.java:930)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1388)
       at android.os.Handler.handleCallback(Handler.java:942)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:240)
       at android.os.Looper.loop(Looper.java:351)
       at android.app.ActivityThread.main(ActivityThread.java:8423)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
adilovmaksat commented 7 months ago

we need to reopen issue , if it still exists in current versions

hanna-h commented 5 months ago

Any update on this? Can this ticket be reopened please? It blocks us from using the Compose map in our app.

kociubin commented 1 week ago

I'm also having the issue with a large number of markers on the screen.

Musfick commented 1 day ago

I am also facing the same issue

kikoso commented 1 day ago

Reopening this issue to further investigate it.

Do you folks have any code snippet we can use to reproduce it?