thunderbird / thunderbird/thunderbird-android
Crash after deleting currently opened folder
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 14k
- Forks
- 2.8k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 57
Description
K9 crashes after deleting the currently opened folder.
Expected behavior
Switch to the inbox instead of trying to show non-existing folder
Actual behavior
Crash (Click to expand)
03-03 21:29:37.586 19365 19406 I MessagingController: Command 'refreshFolderList' completed
03-03 21:29:39.050 2228 2318 D AutofillManagerService: onBackKeyPressed()
03-03 21:29:39.090 19365 19406 I MessagingController: Running command 'getFolderUnread:HaPe:Test', seq = 11 (foreground priority)
03-03 21:29:39.096 19365 19406 E MessagingController: Count not get unread count for account HaPe
03-03 21:29:39.096 19365 19406 E MessagingController: com.fsck.k9.mail.MessagingException: LocalFolder.open(): Folder not found: Test (-1)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.mailstore.LocalFolder$1.doDbWork(LocalFolder.java:193)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.mailstore.LocalFolder$1.doDbWork(LocalFolder.java:172)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.mailstore.LockableDatabase.execute(LockableDatabase.java:273)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.mailstore.LocalFolder.open(LocalFolder.java:172)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.mailstore.LocalFolder.getUnreadMessageCount(LocalFolder.java:354)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.controller.MessagingController.getFolderUnreadMessageCount(MessagingController.java:1658)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.controller.MessagingController$19.run(MessagingController.java:1643)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.controller.MessagingController.runInBackground(MessagingController.java:220)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.controller.MessagingController.access$000(MessagingController.java:113)
03-03 21:29:39.096 19365 19406 E MessagingController: at com.fsck.k9.controller.MessagingController$1.run(MessagingController.java:163)
03-03 21:29:39.096 19365 19406 E MessagingController: at java.lang.Thread.run(Thread.java:764)
03-03 21:29:39.097 19365 19406 I MessagingController: Command 'getFolderUnread:HaPe:Test' completed
03-03 21:29:39.101 19365 19500 W System.err: com.fsck.k9.mail.MessagingException: LocalFolder.open(): Folder not found: Test (-1)
03-03 21:29:39.105 19365 19500 W System.err: at com.fsck.k9.mailstore.LocalFolder$1.doDbWork(LocalFolder.java:193)
03-03 21:29:39.105 19365 19500 W System.err: at com.fsck.k9.mailstore.LocalFolder$1.doDbWork(LocalFolder.java:172)
03-03 21:29:39.106 19365 19500 W System.err: at com.fsck.k9.mailstore.LockableDatabase.execute(LockableDatabase.java:273)
03-03 21:29:39.106 19365 19500 W System.err: at com.fsck.k9.mailstore.LocalFolder.open(LocalFolder.java:172)
03-03 21:29:39.107 19365 19500 W System.err: at com.fsck.k9.search.SqlQueryBuilder.getFolderId(SqlQueryBuilder.java:114)
03-03 21:29:39.107 19365 19500 W System.err: at com.fsck.k9.search.SqlQueryBuilder.buildWhereClauseInternal(SqlQueryBuilder.java:37)
03-03 21:29:39.107 19365 19500 W System.err: at com.fsck.k9.search.SqlQueryBuilder.buildWhereClause(SqlQueryBuilder.java:21)
03-03 21:29:39.107 19365 19500 W System.err: at com.fsck.k9.ui.messagelist.MessageListLoader.loadMessageListForAccount(MessageListLoader.kt:102)
03-03 21:29:39.107 19365 19500 W System.err: at com.fsck.k9.ui.messagelist.MessageListLoader.getMessageList(MessageListLoader.kt:41)
03-03 21:29:39.107 19365 19500 W System.err: at com.fsck.k9.ui.messagelist.MessageListLiveData$loadMessageListAsync$1$1.invokeSuspend(MessageListLiveData.kt:33)
03-03 21:29:39.107 19365 19500 W System.err: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
03-03 21:29:39.107 19365 19500 W System.err: at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
03-03 21:29:39.107 19365 19500 W System.err: at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
03-03 21:29:39.107 19365 19500 W System.err: at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
03-03 21:29:39.108 19365 19500 W System.err: at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: FATAL EXCEPTION: main
03-03 21:29:39.173 19365 19365 E AndroidRuntime: Process: com.fsck.k9.debug, PID: 19365
03-03 21:29:39.173 19365 19365 E AndroidRuntime: com.fsck.k9.mail.MessagingException: LocalFolder.open(): Folder not found: Test (-1)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at com.fsck.k9.mailstore.LocalFolder$1.doDbWork(LocalFolder.java:193)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at com.fsck.k9.mailstore.LocalFolder$1.doDbWork(LocalFolder.java:172)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at com.fsck.k9.mailstore.LockableDatabase.execute(LockableDatabase.java:273)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at com.fsck.k9.mailstore.LocalFolder.open(LocalFolder.java:172)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at com.fsck.k9.ui.messagelist.MessageListLoader.loadHasMoreMessages(MessageListLoader.kt:181)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at com.fsck.k9.ui.messagelist.MessageListLoader.getMessageList(MessageListLoader.kt:61)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at com.fsck.k9.ui.messagelist.MessageListLiveData$loadMessageListAsync$1$1.invokeSuspend(MessageListLiveData.kt:33)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
03-03 21:29:39.173 19365 19365 E AndroidRuntime: at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)
03-03 21:29:39.180 2228 2257 W ActivityManager: Force finishing activity com.fsck.k9.debug/com.fsck.k9.activity.MessageList
03-03 21:29:39.192 2228 2318 I ActivityManager: Showing crash dialog for package com.fsck.k9.debug u0
Steps to reproduce
- Open folder in K9
- Visit folder manager
- Delete folder from other device
- Refresh folder manager
- Press back button to go back to message list
Environment
K-9 Mail version: 5.707 master (9d536163e08acb30833e1bc6dbc0b4e8c8f8ef0d)
Android version: LineageOS 16.0
Account type (IMAP, POP3, WebDAV/Exchange): IMAP
Contributor guide
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.
Research direction
Start with MessageListLoader.kt and MessageListLiveData.kt, following the crash path through LocalFolder.java and SqlQueryBuilder.java when the selected folder no longer exists. Reproduce the listed steps with an IMAP account, then verify that returning to the message list switches to the inbox without crashing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java, kotlin
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100