block / block/radiography

NullPointerException when scanning Compose trees that contains `AnimatedContent()`

Open
#193 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
899
Forks
55
PR merge metrics
No merged PRs in 30d

Description

We are having `java.lang.NullPointerException` when scanning Compose trees that contains `AnimatedContent()`. Found it was caused by a recent change in the [PR](https://github.com/block/radiography/pull/184). The NullPointerException is gone once reverted the change in the file [CompositionContexts.kt](https://github.com/block/radiography/pull/184/changes#diff-4de8f6ed70c34d6afe23415ef6e30d8de12b28be31f06a59dbd22588c2f85a24).

Versions:
- radiography:2.8
- Compose 1.10.0

> java.lang.NullPointerException
> at androidx.compose.ui.node.DelegatableNodeKt.requireCoordinator-64DMado(DelegatableNode.kt:342)
> at androidx.compose.ui.graphics.BlockGraphicsLayerModifier.applySemantics(GraphicsLayerModifier.kt:737)
> at radiography.ScannableView$ComposeView.getSemanticsConfigurations(ScannableView.kt:90)
...
> at radiography.Radiography$renderScannableViewTree$1.invoke(Radiography.kt:128)
> at radiography.Radiography$renderScannableViewTree$1.invoke(Radiography.kt:114)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:29)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderTreeString(RenderTreeString.kt:17)
> at radiography.Radiography.renderScannableViewTree$radiography_release(Radiography.kt:114)
> at radiography.Radiography.scanFromLooperThread(Radiography.kt:97)
> at radiography.Radiography.scan(Radiography.kt:61)
> at radiography.Radiography.scan$default(Radiography.kt:42)

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the NullPointerException while scanning a Compose tree containing AnimatedContent() on radiography 2.8 with Compose 1.10.0. Read CompositionContexts.kt and follow the stack through ScannableView$ComposeView.getSemanticsConfigurations(), Radiography.kt, and RenderTreeString.kt. Done means scanning the tree completes without the reported exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.