Issue tracker for GrapheneOS Android Open Source Project hardening work. Standalone projects like Auditor, AttestationServer and hardened_malloc have their own dedicated trackers.
Observed on Pixel 9 Pro running GrapheneOS 2024091900 and Contacts 1.7.34.
Contact picture had not been set after crash.
To reproduce:
Take or otherwise obtain large image. (observed with 50MP from Pixel Camera app)
Edit any contact in Contacts and open the photo chooser dialog.
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)
Observed on Pixel 9 Pro running GrapheneOS 2024091900 and Contacts 1.7.34.
Contact picture had not been set after crash.
To reproduce:
Crash log: