bitwarden / bitwarden/android

[BWA-228] The system crashed while viewing a password item.

Open
#6,486 11 comments 0 reactions 0 assignees View on GitHub
app:password-manager bug
Dominant language
Kotlin
Stars
9.4k
Forks
1.1k
Avg merge
1d 14h
Merged PRs (30d)
67

Description

### Steps To Reproduce

The system crashed while viewing a password item.

### Expected Result

I used the third-party client Keyguard to check this password item, and it didn't crash! I asked Chatgpt, and Bitwarden mentioned a UI bug on the Android side (Jetpack Compose's LazyColumn key conflict)! Compose doesn't allow it, throwing an exception directly → App crashes.

### Actual Result

Then I checked the password item, and I tried to check two identical tags. I only saw two blank tags. I deleted one of the blank tags, and then it stopped crashing! It's really funny!

### Screenshots or Videos

java.lang.IllegalArgumentException: Key "customField_TextField(id=953827747, name=, value=​, isCopyable=false)" was already used. If you are using LazyColumn/Row please make sure you provide a unique key for each item.
at d4.a.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:3)
at e4.j0.n0(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:156)
at v1.l0.d(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:30)
at u1.m.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:32)
at u1.n.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:783)
at t2.q.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1121)
at e4.l0.c(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:71)
at g4.t.H(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:38)
at o3.o0.measure-3p2s80s(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at g4.a0.H(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:11)
at v1.r.measure-3p2s80s(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at g4.a0.H(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:11)
at s1.d0.measure-3p2s80s(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:106)
at g4.a0.H(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:11)
at s1.d0.measure-3p2s80s(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:106)
at g4.a0.H(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:11)
at g4.a1.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:127)
at f3.v.d(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:314)
at g4.b1.E0(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:147)
at g4.i0.P(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:18)
at g4.y0.c(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:3)
at g4.y0.k(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:126)
at h4.v.t(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:8)
at g4.i0.k(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:41)
at pl.i.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:531)
at o1.n.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:17)
at o1.p2.c(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:260)
at o1.n2.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:423)
at o1.l2.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:38)
at np.n3.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:899)
at k1.d.l(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:55)
at k1.f1.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:25)
at f3.n.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:35)
at a2.b.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:740)
at androidx.lifecycle.d1.l(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:49)
at t2.s1.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:58)
at h4.v0.doFrame(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:7)
at h4.t0.doFrame(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:48)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1797)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1808)
at android.view.Choreographer.doCallbacks(Choreographer.java:1300)
at android.view.Choreographer.doFrame(Choreographer.java:1167)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1767)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:249)
at android.os.Looper.loop(Looper.java:337)
at android.app.ActivityThread.main(ActivityThread.java:9410)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:614)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1005)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [h4.h2@3fb322e, h4.w0@8d291cf, s1{Cancelling}@f2f575c, u0@ee6a65]

### Additional Context

_No response_

### Build Version

2026.1.1

### What server are you connecting to?

US

### Self-host Server Version

_No response_

### Environment Details

Redmi K60 Ultra
Android 15

### Issue Tracking Info

- [x] I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.