dessalines / thumb-key

A privacy-conscious Android keyboard made for your thumbs
GNU Affero General Public License v3.0
1.04k stars 217 forks source link

Crash on certain Layouts #618

Closed gustav-langer closed 10 months ago

gustav-langer commented 10 months ago

Thumb-Key Version 2.6.6

Describe the bug When selected, some keyboard layouts crash the app. The layouts I found were english composed, english two-hands numbers-symbols and math. Sometimes english composed crashed immediately when clicking 'save', but this was not reproducible. Math crashes only when uppercase is selected.

To Reproduce Steps to reproduce the behavior:

  1. Go to the settings
  2. Enable any of the mentioned layouts
  3. Click on any text field to bring up the keyboard
  4. If it isn't already, select the layout
  5. Crash
Screwtapello commented 10 months ago

I can reproduce this behaviour, just with:

adb logcat produces the following unhelpful backtrace:

01-14 11:41:12.516 19369 19369 E AndroidRuntime: FATAL EXCEPTION: main
01-14 11:41:12.516 19369 19369 E AndroidRuntime: Process: com.dessalines.thumbkey, PID: 19369
01-14 11:41:12.516 19369 19369 E AndroidRuntime: java.util.NoSuchElementException: Char sequence is empty.
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at c0.b.g(SourceFile:175)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at c0.b.h(SourceFile:138)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at c0.b.i(SourceFile:266)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at s4.d.a0(SourceFile:217)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at m0.c.a0(SourceFile:59)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.b0.L(SourceFile:359)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.b0.V(SourceFile:29)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at androidx.compose.material3.b5.a(SourceFile:65)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at q.x.a(SourceFile:257)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at q.x.a0(SourceFile:112)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at m0.c.a0(SourceFile:59)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at a0.n.M(SourceFile:5)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at d5.a.f(SourceFile:177)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at androidx.compose.material3.v1.a(SourceFile:1234)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at c0.b.w(SourceFile:99)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at s4.e.a(SourceFile:48)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at x.h0.a(SourceFile:42)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at x.h0.a0(SourceFile:40)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.b0.L(SourceFile:359)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.b0.T(SourceFile:58)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.b0.q(SourceFile:173)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.b0.K(SourceFile:32)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.h0.w(SourceFile:19)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.p2.r(SourceFile:103)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at f0.m2.f0(SourceFile:389)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at androidx.compose.ui.platform.z0.doFrame(Unknown Source:6)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at androidx.compose.ui.platform.x0.doFrame(SourceFile:48)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:965)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.view.Choreographer.doCallbacks(Choreographer.java:791)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.view.Choreographer.doFrame(Choreographer.java:722)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.os.Handler.handleCallback(Handler.java:883)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:100)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:214)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:7386)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
01-14 11:41:12.516 19369 19369 E AndroidRuntime:    Suppressed: v6.g: [f0.t1@d8b319e, androidx.compose.ui.platform.y1@b96747f, r1{Cancelling}@fc87c4c, y0@d044495]

I'm using v2.6.6 from F-Droid; the previous F-Droid release v2.6.4 worked fine.

I don't know if it's possible to create a build of Thumb-Key that hasn't been obfuscated, or some way to apply debug symbols to that traceback to figure out what's gone wrong.

dessalines commented 10 months ago

Verified.