Igalia / wolvic

A fast and secure browser for standalone virtual-reality and augmented-reality headsets.
https://wolvic.org
Mozilla Public License 2.0
796 stars 100 forks source link

TabView would crash when load github favicon #1428

Closed mrw25227 closed 4 weeks ago

mrw25227 commented 4 months ago

Steps to Reproduce

  1. open github
  2. open TabView

Current Behavior

commit:https://github.com/Igalia/wolvic/commit/89f1df3236283ce704cf12aeb8ac8383fdbc60e2 org.mozilla.components.browser-icons:121.1 would get very big size and hardware type bitmap from github it make app crash

Expected Behavior

Possible Solution

Context

Error Logs and Stack Traces

04-29 10:24:09.271 E/AndroidRuntime( 8478): java.lang.IllegalArgumentException: Software rendering doesn't support hardware bitmaps 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.graphics.BaseCanvas.onHwBitmapInSwMode(BaseCanvas.java:632) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:639) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:73) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:131) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.graphics.Canvas.drawBitmap(Canvas.java:1588) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:548) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.widget.ImageView.onDraw(ImageView.java:1436) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21979) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21853) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21851) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at androidx.recyclerview.widget.RecyclerView.drawChild(RecyclerView.java:5545) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:22100) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at androidx.recyclerview.widget.RecyclerView.draw(RecyclerView.java:4944) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21853) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21982) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21853) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21982) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at com.igalia.wolvic.ui.widgets.UIWidget.draw(UIWidget.java:274) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at com.igalia.wolvic.ui.widgets.UIWidget.draw(UIWidget.java:253) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.updateDisplayListIfDirty(View.java:20856) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21711) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.updateDisplayListIfDirty(View.java:20847) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21711) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.updateDisplayListIfDirty(View.java:20847) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21711) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.updateDisplayListIfDirty(View.java:20847) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21711) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.drawChild(ViewGroup.java:4432) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.draw(View.java:21982) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at com.android.internal.policy.DecorView.draw(DecorView.java:808) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.View.updateDisplayListIfDirty(View.java:20856) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:581) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:587) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:664) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewRootImpl.draw(ViewRootImpl.java:3765) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3493) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2777) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1743) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7772) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1041) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.Choreographer.doCallbacks(Choreographer.java:864) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.Choreographer.doFrame(Choreographer.java:798) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1026) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.os.Handler.handleCallback(Handler.java:883) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.os.Handler.dispatchMessage(Handler.java:100) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.os.Looper.loop(Looper.java:214) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at android.app.ActivityThread.main(ActivityThread.java:7397) 04-29 10:24:09.271 E/AndroidRuntime( 8478): at java.lang.reflect.Method.invoke(Native Method) 04-29 10:24:09.272 E/AndroidRuntime( 8478): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 04-29 10:24:09.272 E/AndroidRuntime( 8478): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935) ``` ```
svillar commented 4 months ago

Thanks for the report! We'll take a look

svillar commented 4 months ago

@mrw25227 I've tried this on several devices and it works fine in all of them, I don't see any crash. Could you provide more info about the platform and Wolvic version you're using?

mrw25227 commented 4 months ago

Version I used is based on versionCode 350 / versionName "1.7" and add some code for htc vive XR elite(Android 10).

I found tabview get github's favicon first time would be bitmap.config = ARGB_8888. => no crash But tabview close and open again, github's favicon it get would be changed to bitmap.config = HARDWARE. => crash

Could you try open tabview twice that tab is github website?

svillar commented 4 months ago

No crash opening multiple times, even opening github in multiple tabs. See the screencast

https://github.com/Igalia/wolvic/assets/1826122/5f3e1dec-7956-4fed-bee3-41fd0fe30b1c

Which backend are you using? OpenXR? WaveVR? If you're using the latter I suspect the problem is there or in the android platform you use because I haven't seen that crash neither in Meta, nor Pico, nor HVR, nor MagicLeap2...

mrw25227 commented 4 months ago

Thank you for trying. I use WaveVR. I would try some ohter direction for this.

By the way, I got github favicon size 3840x3840 by browser-icons:121.1 got size 180x180 by browser-icons:116.3.0 and not crash

svillar commented 4 months ago

Thank you for trying. I use WaveVR. I would try some ohter direction for this.

By the way, I got github favicon size 3840x3840 by browser-icons:121.1 got size 180x180 by browser-icons:116.3.0 and not crash

OK that's worth checking indeed, we should not require such a huge version of the favicon. Perhaps something that was fixed in newer versions...

svillar commented 4 months ago

@mrw25227 I submitted this bug report in Mozilla's bugzilla.

svillar commented 4 weeks ago

Let's close this then, as it seems a platform issue. We've also upgraded AC to v128. Please reopen if you can reproduce it in v1.7+