Igalia / wolvic

A fast and secure browser for standalone virtual-reality and augmented-reality headsets.

Home Page:https://wolvic.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TabView would crash when load github favicon

mrw25227 opened this issue · comments

Steps to Reproduce

  1. open github
  2. open TabView

Current Behavior

commit:89f1df3
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) ``` ```

Thanks for the report! We'll take a look

@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?

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?

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

output.mp4

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...

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

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...

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

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+