GrapheneOS / os-issue-tracker

Issue tracker for GrapheneOS Android Open Source Project hardening work. Standalone projects like Auditor, AttestationServer and hardened_malloc have their own dedicated trackers.
https://grapheneos.org/
361 stars 21 forks source link

Contacts crashes when choosing 50MP image for contact picture #4084

Open schuelermine opened 1 month ago

schuelermine commented 1 month ago

Observed on Pixel 9 Pro running GrapheneOS 2024091900 and Contacts 1.7.34.

Contact picture had not been set after crash.

To reproduce:

  1. Take or otherwise obtain large image. (observed with 50MP from Pixel Camera app)
  2. Edit any contact in Contacts and open the photo chooser dialog.
  3. Select image taken in step 1.

Crash log:

type: crash
osVersion: google/caiman/caiman:14/AD1A.240905.004/2024091900:user/release-keys
package: com.android.contacts:10734
process: com.android.contacts
processUptime: 37144 + 256 ms

java.lang.RuntimeException: Canvas: trying to draw too large(200540160bytes) bitmap.
    at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:266)
    at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:94)
    at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:549)
    at android.widget.ImageView.onDraw(ImageView.java:1446)
    at android.view.View.draw(View.java:24626)
    at android.view.View.updateDisplayListIfDirty(View.java:23492)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.updateDisplayListIfDirty(View.java:23483)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.updateDisplayListIfDirty(View.java:23483)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.draw(View.java:24629)
    at android.widget.ScrollView.draw(ScrollView.java:2019)
    at android.view.View.updateDisplayListIfDirty(View.java:23492)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.draw(View.java:24629)
    at android.view.View.updateDisplayListIfDirty(View.java:23492)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.updateDisplayListIfDirty(View.java:23483)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.updateDisplayListIfDirty(View.java:23483)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.updateDisplayListIfDirty(View.java:23483)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.updateDisplayListIfDirty(View.java:23483)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.updateDisplayListIfDirty(View.java:23483)
    at android.view.View.draw(View.java:24356)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4576)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4337)
    at android.view.View.draw(View.java:24629)
    at com.android.internal.policy.DecorView.draw(DecorView.java:827)
    at android.view.View.updateDisplayListIfDirty(View.java:23492)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:694)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:700)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:798)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:5336)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4998)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4116)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2741)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9960)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1406)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415)
    at android.view.Choreographer.doCallbacks(Choreographer.java:1015)
    at android.view.Choreographer.doFrame(Choreographer.java:945)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
    at android.os.Handler.handleCallback(Handler.java:959)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loopOnce(Looper.java:232)
    at android.os.Looper.loop(Looper.java:317)
    at android.app.ActivityThread.main(ActivityThread.java:8623)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
    at com.android.internal.os.ExecInit.main(ExecInit.java:50)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:369)
thestinger commented 1 month ago

We'll have to fix this ourselves.