MrMannWood / launcher

Apache License 2.0
47 stars 9 forks source link

Launcher crashes on search starting with letter "b" #35

Closed Cromagnonaut closed 1 year ago

Cromagnonaut commented 2 years ago

When I am searching for an app starting with the letter "b" the launcher crashes. Other letters are working fine.

Device: GrapheneOS (Android 13) on Google Pixel 4a

adminvulcano commented 2 years ago

I have the exact same problem, but with the letter "r". More precisely: When searching for an app and entering "r" as the first letter, the app crashes. r's after the first letter work fine.

Device: Samsung S20+ with Android 12.

MrMannWood commented 1 year ago

I've reviewed the code and have no idea what could be causing this without seeing a stack trace. I'm adding a simple try/catch to prevent outright crashing, and would love it if you could ensure that you allow logging to disk, and then report using the tool in the settings screen next time this happens.

adminvulcano commented 1 year ago

The logs show the following error after a crash:

04 19 at 16:45:24:383 E/null: An uncaught exception occurred on thread main
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable$ConstantState android.graphics.drawable.Drawable.getConstantState()' on a null object reference
    at m3.i.f(Unknown Source:27)
    at v3.h.p(Unknown Source:100)
    at androidx.databinding.ViewDataBinding.q(Unknown Source:19)
    at androidx.databinding.ViewDataBinding.r(Unknown Source:4)
    at androidx.databinding.ViewDataBinding$b.run(SourceFile:11)
    at androidx.databinding.d.doFrame(SourceFile:2)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1299)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1309)
    at android.view.Choreographer.doCallbacks(Choreographer.java:923)
    at android.view.Choreographer.doFrame(Choreographer.java:847)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1283)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:226)
    at android.os.Looper.loop(Looper.java:313)
    at android.app.ActivityThread.main(ActivityThread.java:8757)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
MrMannWood commented 1 year ago

Thanks for the stack! The only place where I'm calling getConstantState is here. It looks to me like I'm already null-checking where this could throw from, so I'm wondering if it's being optimized out.

I'm adding some additional protections against this: here

adminvulcano commented 1 year ago

I just updated to version 1.4.9 and it runs perfectly fine! Thanks a lot for the help, I really appreciate the simplicity and speed of your launcher :D