Skip to content

Session Replay IllegalArgumentException: width and height must be > 0 when launching in-app review prompt #4802

@sausti

Description

@sausti

Integration

sentry-android

Build System

Gradle

AGP Version

8.11.1

Proguard

Enabled

Version

8.21.0

Steps to Reproduce

This crash occurs whenever the Google Play In-App Review prompt is shown (See Google's overview here) with Sentry's Session Replay enabled.

Unfortunately, creating a minimally reproducible app to share is not possible, given for one to show this prompt per Google (See its test in-app reviews documentation), they must:

  1. Have an app that is published on Google Play or, at a minimum, on an internal testing track
  2. Have not already reviewed the published app
  3. Have an account that is able to review the app. A personal Gmail account that is allowlisted to test in Google Play's internal test track is easiest here, as if your organization is using Google Workspace accounts they often do not have permissions to leave a review.

Once those requirements are met, this is reproducible by:

  1. Enabling Sentry's Session Replay for Android in a Compose UI app
  2. Launching the in-app review flow (See documentation)
  3. Seeing the crash

Expected Result

The in-app review prompt should display without crashing.

Actual Result

The following exception occurs when the Google Play review prompt is shown:

FATAL EXCEPTION: main
Process: com.bennyapp.benny, PID: 4961

java.lang.IllegalArgumentException: width and height must be > 0
    at android.graphics.Bitmap.createBitmap(Bitmap.java:1239)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:1205)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:1153)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:1112)
    at io.sentry.android.replay.ScreenshotRecorder.<init>(ScreenshotRecorder.kt:52)
    at io.sentry.android.replay.WindowRecorder.onConfigurationChanged(WindowRecorder.kt:181)
    at io.sentry.android.replay.ReplayIntegration.onConfigurationChanged(ReplayIntegration.kt:491)
    at io.sentry.android.replay.ReplayIntegration.onWindowSizeChanged(ReplayIntegration.kt:482)
    at io.sentry.android.replay.WindowRecorder$determineWindowSize$1.onPreDraw(WindowRecorder.kt:151)
    at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1179)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4417)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3076)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10643)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1570)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
    at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
    at android.view.Choreographer.doFrame(Choreographer.java:1108)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
    at android.os.Handler.handleCallback(Handler.java:995)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loopOnce(Looper.java:248)
    at android.os.Looper.loop(Looper.java:338)
    at android.app.ActivityThread.main(ActivityThread.java:9067)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)

This crashes our app and leaves the review prompt shown:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions