Skip to content

Crash caused by DrawableUtils on Session Replay #2599

Open
@adramdani-deloitte

Description

@adramdani-deloitte

Stack trace

The crash usually comes with this stack dump

Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 21787 (datadog-drawabl), pid 21646 (myapp)
        Cmdline: com.myapp
        pid: 21646, tid: 21787, name: datadog-drawabl  >>> com.myapp <<<
        #13 pc 000000000025302c  [anon:dalvik-classes26.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.google.android.material.shape.ShapeAppearancePathProvider.calculatePath+0)
        #19 pc 0000000000250c1c  [anon:dalvik-classes26.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.google.android.material.shape.MaterialShapeDrawable.calculatePathForSize+0)
        #24 pc 0000000000250b9c  [anon:dalvik-classes26.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.google.android.material.shape.MaterialShapeDrawable.calculatePath+0)
        #32 pc 00000000004df230  [anon:dalvik-classes25.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.datadog.android.sessionreplay.internal.utils.DrawableUtils.drawOnCanvas+0)
        #37 pc 00000000004df104  [anon:dalvik-classes25.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.datadog.android.sessionreplay.internal.utils.DrawableUtils.access$drawOnCanvas+0)
        #42 pc 00000000004dee20  [anon:dalvik-classes25.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.datadog.android.sessionreplay.internal.utils.DrawableUtils$createBitmapOfApproxSizeFromDrawable$1.onSuccess$lambda$0+0)
        #47 pc 00000000004ded98  [anon:dalvik-classes25.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.datadog.android.sessionreplay.internal.utils.DrawableUtils$createBitmapOfApproxSizeFromDrawable$1.$r8$lambda$KM5fqvVrfqCeggp4FNtAik4G8SQ+0)
        #52 pc 00000000004ded00  [anon:dalvik-classes25.dex extracted in memory from /data/app/~~AJffAsABtzd_oiMowoQPpg==/com.myapp-JdRALgjL2L71v6LfQW2ifA==/base.apk] (com.datadog.android.sessionreplay.internal.utils.DrawableUtils$createBitmapOfApproxSizeFromDrawable$1$$ExternalSyntheticLambda0.run+0) 

But sometimes it also shows index out of bounds

[_dd.sdk_core.default]: Uncaught exception during the task execution
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
  at jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
  at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
  at jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
  at java.util.Objects.checkIndex(Objects.java:359)
  at java.util.ArrayList.get(ArrayList.java:434)
  at com.google.android.material.shape.ShapePath.applyToPath(ShapePath.java:243)
  at com.google.android.material.shape.ShapeAppearancePathProvider.appendEdgePath(ShapeAppearancePathProvider.java:202)
  at com.google.android.material.shape.ShapeAppearancePathProvider.calculatePath(ShapeAppearancePathProvider.java:135)
  at com.google.android.material.shape.MaterialShapeDrawable.calculatePathForSize(MaterialShapeDrawable.java:1140)
  at com.google.android.material.shape.MaterialShapeDrawable.calculatePath(MaterialShapeDrawable.java:1201)
  at com.google.android.material.shape.MaterialShapeDrawable.draw(MaterialShapeDrawable.java:954)
  at com.datadog.android.sessionreplay.internal.utils.DrawableUtils.drawOnCanvas(DrawableUtils.kt:117)
  at com.datadog.android.sessionreplay.internal.utils.DrawableUtils.access$drawOnCanvas(DrawableUtils.kt:26)
  at com.datadog.android.sessionreplay.internal.utils.DrawableUtils$createBitmapOfApproxSizeFromDrawable$1.onSuccess$lambda$0(DrawableUtils.kt:59)
  at com.datadog.android.sessionreplay.internal.utils.DrawableUtils$createBitmapOfApproxSizeFromDrawable$1.$r8$lambda$KM5fqvVrfqCeggp4FNtAik4G8SQ(Unknown Source:0)
  at com.datadog.android.sessionreplay.internal.utils.DrawableUtils$createBitmapOfApproxSizeFromDrawable$1$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:487)
  at java.util.concurrent.FutureTask.run(FutureTask.java:264)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
  at java.lang.Thread.run(Thread.java:1012)
Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xffffffffffffffff in tid 3247 (datadog-drawabl), pid 2826 (myapp)

Or path must start at 0 0

FATAL EXCEPTION: main
Process: com.myapp, PID: 5606
java.lang.IllegalArgumentException: The Path must start at (0,0) and end at (1,1)
  at android.view.animation.PathInterpolator.initPath(PathInterpolator.java:170)
  at android.view.animation.PathInterpolator.initCubic(PathInterpolator.java:160)
  at android.view.animation.PathInterpolator.parseInterpolatorFromTypeArray(PathInterpolator.java:144)
  at android.view.animation.PathInterpolator.<init>(PathInterpolator.java:106)
  at android.view.animation.AnimationUtils.createInterpolatorFromXml(AnimationUtils.java:454)
  at android.view.animation.AnimationUtils.loadInterpolator(AnimationUtils.java:367)
  at com.android.internal.policy.DecorView.<init>(DecorView.java:719)
  at com.android.internal.policy.PhoneWindow.generateDecor(PhoneWindow.java:2474)
  at com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:2907)
  at com.android.internal.policy.PhoneWindow.getDecorView(PhoneWindow.java:2216)
  at androidx.activity.ComponentDialog.initViewTreeOwners(ComponentDialog.kt:123)
  at androidx.activity.ComponentDialog.setContentView(ComponentDialog.kt:108)
  at androidx.fragment.app.DialogFragment$4.onChanged(DialogFragment.java:404)
  at androidx.fragment.app.DialogFragment$4.onChanged(DialogFragment.java:389)
  at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
  at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
  at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
  at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
  at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3129)
  at androidx.fragment.app.DialogFragment.performCreateView(DialogFragment.java:775)
  at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:557)
  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:272)
  at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943)
  at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845)
  at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
  at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:565)
  at android.os.Handler.handleCallback(Handler.java:942)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loopOnce(Looper.java:226)
  at android.os.Looper.loop(Looper.java:313)
  at android.app.ActivityThread.main(ActivityThread.java:8762)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

Reproduction steps

I cannot give a barebone code example, but this only happens on one activity with two recycler view and material card view item. Other views with recycler view and material card view is fine

Volume

Only happens on dev, I'm currently integrating DataDog for the first time

Affected SDK versions

2.18.0

Latest working SDK version

~

Does the crash manifest in the latest SDK version?

Yes

Kotlin / Java version

1.9.24

Gradle / AGP version

8.5.0

Other dependencies versions

  • com.google.android.material:material:1.4.0
  • com.datadoghq:dd-sdk-android-gradle-plugin:1.15.0
  • com.datadoghq:dd-sdk-android-session-replay:2.18.0

Device Information

My device is Samsung M52 One UI 5.1 Android 13

Other relevant information

Sometimes the log shows error when inflating material card view or material chip, but I didn't capture the logs for those crashes

Metadata

Metadata

Assignees

Labels

crashSDK induced crash

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions