thunderbird / thunderbird/thunderbird-android

Crash after deleting currently opened folder

Open
#4,584 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: crash
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
  1. Open folder in K9
  2. Visit folder manager
  3. Delete folder from other device
  4. Refresh folder manager
  5. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.