Play: user-perceived crash rate 3.64% exceeds the 1.09% bad-behavior threshold
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
Research direction
Start with the JNI entry points in libaw_sync and libaw_server, then inspect AccessibilityNodeTraversal.findNode and forEachNode. Review the open #220 panic and the reported recursive traversal failures. Done means native panics no longer abort through JNI, traversal has depth and node limits, and the Play crash metric is rechecked after v0.14.1 reaches full rollout.
Written by the indexing model from the issue text.
Description
Play Console flags the app under Technical quality → Bad behavior: user-perceived crash rate 3.64% against Google's 1.09% threshold, which reduces discoverability. Per-version crash clusters from the Play Developer Reporting API, last 7 days (2026-09-07 → 09-14):
versionCode 40 (v0.14.0b2, the bulk of installs)
| reports | users | cluster | status |
|---|---|---|---|
| 532 | 91 | BackgroundService.onCreate → ForegroundServiceStartNotAllowedException |
fixed by #257, shipped in v0.14.1 |
| 9 | 6 | AlarmReceiver.onReceive → ForegroundServiceStartNotAllowedException |
fixed by #257, shipped in v0.14.1 |
| 57 + 26 | 1 + 3 | libaw_sync.so Rust panic → SIGABRT |
open, #220 |
| 31 + 6 | 1 | Java_net_activitywatch_android_… JNI entry in libaw_server.so → SIGABRT |
open (a Rust panic unwinding across the extern "C" JNI boundary aborts the process) |
| 22 | 3 | libaw_server.so → SIGABRT |
open, same class |
| 16 | 8 | AccessibilityNodeTraversal.findNode → StackOverflowError |
open (recursive traversal, no depth bound) |
versionCode 41 (v0.14.0): no crash clusters; that release's problem was ANRs (#261).
versionCode 33 (v0.12.1, 2023): 324 reports / 61 users on ChromeWatcher.onAccessibilityEvent NPE plus 8 on ChromeWatcher.onInterrupt. The class no longer exists; only the update to 0.14.x fixes those users.
What this means for the metric: the largest cluster by far (541 reports, 97 users) is already fixed in v0.14.1, so the rate should drop substantially as it rolls out. The v0.12.1 stragglers will keep a floor until they update. The remaining actionable work:
- Native panics must not abort the process: wrap every JNI entry point in
libaw_syncandlibaw_serverwithcatch_unwindand return an error object (a Rust panic reachingextern "C"is an abort since Rust 1.81). Fixing the underlying#220panic is the second half. findNode/forEachNode: iterative traversal with a depth and node budget instead of unbounded recursion.- Re-check this metric two weeks after v0.14.1 is at 100%.
- Dominant language
- Kotlin
- Stars
- 270
- Forks
- 57
- Avg merge
- 23h 47m
- Merged PRs (30d)
- 39
Getting set up
We have not checked this project's setup files yet. Start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ActivityWatch/aw-android
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ActivityWatch/aw-android#306 ·
Maintainers usually reply within 1 day
-
AuthSettingsActivity crashes on launch (InflateException: Material attributes under AppCompat theme)Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
ActivityWatch/aw-android#210 · 7 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
ActivityWatch/aw-android#302 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 58/100
ActivityWatch/aw-android#300 · 6 comments ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
ActivityWatch/aw-android#296 ·
Maintainers usually reply within 1 day
All issues in ActivityWatch/aw-android
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
T31n/YagniLauncher#1051 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Accepted Needs Triage
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
ankidroid/Anki-Android#22114 · 5 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
solana-foundation/pay-kit#341 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
element-hq/element-x-android#7783 ·
Maintainers usually reply within 1 day