Signal keeps crashing a second after opening
Guidelines
- [X] I have searched searched open and closed issues for duplicates
- [X] I am submitting a bug report for existing functionality that does not work as intended
- [X] This isn't a feature request or a discussion topic
Bug description
Since yesterday, signal keeps crashing a second or two after opening it. It will be able to open the list of messages (with new messages), and can click into them, however after a second or two will back out of the current screen, then eventually the list of messages and crash with Signal keeps stopping.
I tried updating to the latest 7.26.1 and this still occurs.
Something that might be related: the past few days have been having an issue with sending pictures and videos. Sometimes it's intermittent. It originally had a hard time sending videos files over 100mb (it would fail), but was able to send them by compressing them. At some point sending new videos would just not work, it would hang at "processing". (I think I may have run out of device storage at some point around here, but have since freed up device storage). Sometimes sending things would eventually work, perhaps this was after clearing device storage. I tried to "delete for me" and "delete for everyone" the failed messages that didn't send so they didnt cloud up the chat history with failed attempts. Some of these could not be removed, and I think after trying this the crashing may have started.
I tried searching through other issues and similar things people mentioned, though most of the issues were either resolved with a new release or were sightly different. Something suspect might me the job manager for sending pending messages related to the video compressing or something, but that's just a shot in the dark, as was some of the only related things right before it started continuously crashing.
Relatedly - is there a way to backup messages to another device without losing history? I currently have it linked to my computer and ipad. I haven't tried clearing cache or app data since I'm reluctant to lose anything.
Screenshots
No response
Device
No response
Android version
15
Signal version
version 7.26.1
Link to debug log
No response
I've tried to submit a debug log, but it keeps crashing before it works to submit :/
The closest I can get is taking a screenshot like this:
Also wanted to mention the crashing still occurs on airplane mode, as that was something suggested to try in other issues that were slightly related.
The only remaining way to get logs would be to use the android logcat tool. You can download it here, and then run logcat > logs.txt, reproduce the crash, and then share the log file. Apologies, I know it's a lot!
@greyson-signal thanks, I ran adb logcat > log.txt, opened the app, waited for it to crash, then stopped. Let me know if the above logs suffice.
Looks like some kind of db corruption related to deleting the messages that failed to send (per the context of my first post)?
11-23 15:34:21.358 24438 24510 E AndroidRuntime: FATAL EXCEPTION: pool-14-thread-1
11-23 15:34:21.358 24438 24510 E AndroidRuntime: Process: org.thoughtcrime.securesms, PID: 24438
11-23 15:34:21.358 24438 24510 E AndroidRuntime: org.thoughtcrime.securesms.database.SqlCipherErrorHandler$DatabaseCorruptedError_BothChecksPass
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.SqlCipherErrorHandler.onCorruption(SqlCipherErrorHandler.kt:52)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at net.zetetic.database.sqlcipher.SQLiteDatabase.onCorruption(SQLiteDatabase.java:348)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at net.zetetic.database.sqlcipher.SQLiteProgram.onCorruption(SQLiteProgram.java:117)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at net.zetetic.database.sqlcipher.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:93)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at net.zetetic.database.sqlcipher.SQLiteDatabase.delete(SQLiteDatabase.java:1794)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.SQLiteDatabase.lambda$delete$14(SQLiteDatabase.java:394)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.SQLiteDatabase.$r8$lambda$tw0Fv9xDoZzgnkzgX2fwZPNTwog(SQLiteDatabase.java:0)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.SQLiteDatabase$$ExternalSyntheticLambda1.run(R8$$SyntheticClass:0)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.SQLiteDatabase.traceSql(SQLiteDatabase.java:113)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.SQLiteDatabase.delete(SQLiteDatabase.java:394)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.SQLiteDatabase.delete(SQLiteDatabase.java:256)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.signal.core.util.DeleteBuilderPart2.run(SQLiteDatabaseExtensions.kt:493)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.MessageTable.deleteMessage(MessageTable.kt:3298)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.MessageTable.deleteMessage$default(MessageTable.kt:3288)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.database.MessageTable.deleteMessage(MessageTable.kt:3284)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at org.thoughtcrime.securesms.service.ExpiringMessageManager$ProcessTask.run(ExpiringMessageManager.java:112)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at java.lang.Thread.run(Thread.java:1012)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at [[ ↑↑ Original Trace ↑↑ ]].(:0)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at [[ ↓↓ Inferred Trace ↓↓ ]].(:0)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at Database 'signal.db' corrupted!.(:0)
11-23 15:34:21.358 24438 24510 E AndroidRuntime: at [sqlite] FullCode: 267 | ErrorCode: 11 | ExtendedErrorCode: 1 | Message: database disk image is malformed | ExtraMessage: null.(:0)
I have the same behavior on my Google Pixel 8. I did not do anything out of the ordinary but now the behavior is like this:
- Starting the app
- Select a Chat
- Crash
Following link contains my logcat: https://privatebin.net/?992297d4e722f7b5#AHtvDkqtimwVV9YQ6KqRkAXVKcHm4D8qmNXjPpwzddCD
@wpank
Looks like some kind of db corruption
Unfortunately that does seem to be the case, I'm sorry. It looks like the specific issue is that an expiring message is being deleted at startup, which is somehow triggering a SQLite corruption error. One thing you could try is turning your system clock back? A bunch of other weird things could happen as a result, but you may be able to make a backup in Settings > Chats > Backups?
@md-weber
Following link contains my logcat:
Unfortunately I'm not seeing any crashes in there :( Any chance you could try again?
@greyson-signal thanks. I went to change the system clock to be back two months. This was able to stop signal from crashing - I then enabled backups and made a backup on disk. Then reset clock to be back to automatic time.
Hmm, it looked like setting the clock back, then setting it to automatic again made it not crash for a bit (so I closed this), but now the same thing is happening again (so reopening). I think the difference since then was I received a few new messages (from chats that werent related to any I had the pending failed deleted messages. Will see if there's different logs later today 🤔.
If I set my clock back, signal won't crash, but when I set it back to automatic time it will continue to crash when opening things. I was able to get a backup.
@greyson-signal any other suggestions on what to do from here, or would there be any other helpful information I can provide?
One question is if I clear the app storage (right now android says it's 26gb), what does that all remove? Would that clear the SQL db? And since I now have a backup, if I clear the app storage and restore the backup, it should have the same state now right?
Yeah, so the idea is that setting the clock back lets you make a backup, and then after making the backup (and saving the passphrase), you can uninstall signal. Then you can reinstall it and restore from the backup file you created.
Probably same issue here with Signal 7.28.4 on Android 13. If I change the system clock to -2weeks, no more crash. Then I uninstall Signal app, and reinstall it with old backup, and no more crash.
Similar issue here, I also seem to have a corrupt signal.db, too, I get errors like the following below in adb logcat. If I have internet access disabled I seem to be able to use some functionality of the Signal app. But when the app has internet access it crashes a few seconds later. Or when I try to access a specific chat it will crash immediately, even without internet access.
The issue started to happen to me after my phone battery died a split second after I had sent a message in a group chat. That unintended, sudden shutdown seems to have corrupted this Sqlite signal.db.
Initially, the app would not crash, but my last message and the one I had directly replied to were just missing in the group chat when accessing it (but my reply was visible in the chat's overview). Then some restarts later the app would crash instead on internet
Are there any options to fix the signal.db, other than restoring from a backup?
Ideally, I would expect a signal.db to not get corrupted - similar to a modern filesystem there should be some sort of journaling feature or so?
...
02-09 13:37:07.688 26061 26225 E AndroidRuntime: FATAL EXCEPTION: signal-JobRunner-4
02-09 13:37:07.688 26061 26225 E AndroidRuntime: Process: org.thoughtcrime.securesms, PID: 26061
02-09 13:37:07.688 26061 26225 E AndroidRuntime: org.thoughtcrime.securesms.database.SqlCipherErrorHandler$DatabaseCorruptedError_NormalCheckFailsCipherCheckPasses
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.database.SqlCipherErrorHandler.onCorruption(SqlCipherErrorHandler.kt:55)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at net.zetetic.database.sqlcipher.SQLiteDatabase.onCorruption(SQLiteDatabase.java:348)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at net.zetetic.database.sqlcipher.SQLiteProgram.onCorruption(SQLiteProgram.java:117)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at net.zetetic.database.sqlcipher.SQLiteStatement.execute(SQLiteStatement.java:72)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.database.SessionTable.store(SessionTable.kt:53)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.crypto.storage.TextSecureSessionStore.storeSession(TextSecureSessionStore.java:71)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.crypto.storage.SignalServiceAccountDataStoreImpl.storeSession(SignalServiceAccountDataStoreImpl.java:137)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.signal.libsignal.internal.Native.SessionCipher_EncryptMessage(Native Method)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.signal.libsignal.protocol.SessionCipher.lambda$encrypt$0(SessionCipher.java:103)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.signal.libsignal.protocol.SessionCipher.$r8$lambda$oIHPQ6U043ChJa4HiowRDKcCNtg(SessionCipher.java:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.signal.libsignal.protocol.SessionCipher$$ExternalSyntheticLambda1.run(R8$$SyntheticClass:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.signal.libsignal.internal.FilterExceptions.filterExceptions(FilterExceptions.java:207)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.signal.libsignal.protocol.SessionCipher.encrypt(SessionCipher.java:99)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.signal.libsignal.protocol.SessionCipher.encrypt(SessionCipher.java:82)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.whispersystems.signalservice.api.crypto.SignalSessionCipher.encrypt(SignalSessionCipher.java:32)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.whispersystems.signalservice.api.crypto.EnvelopeContent$Encrypted.processSealedSender(EnvelopeContent.java:84)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.whispersystems.signalservice.api.crypto.SignalServiceCipher.encrypt(SignalServiceCipher.java:125)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessage(SignalServiceMessageSender.java:2696)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessages(SignalServiceMessageSender.java:2653)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendMessage(SignalServiceMessageSender.java:1934)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendReceipt(SignalServiceMessageSender.java:239)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob.onRun(SendDeliveryReceiptJob.java:126)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.jobs.BaseJob.run(BaseJob.java:31)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.jobmanager.JobRunner.run(JobRunner.java:88)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at org.thoughtcrime.securesms.jobmanager.JobRunner.run(JobRunner.java:51)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at [[ ↑↑ Original Trace ↑↑ ]].(:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at [[ ↓↓ Inferred Trace ↓↓ ]].(:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at Database 'signal.db' corrupted!.(:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at [sqlite] FullCode: 11 | ErrorCode: 11 | ExtendedErrorCode: 0 | Message: database disk image is malformed | ExtraMessage: null.(:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at Diagnostics results:.(:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at ===== PRAGMA integrity_check (same-connection) =====.(:0)
02-09 13:37:07.688 26061 26225 E AndroidRuntime: at *** in database main ***.(:0)
...
Have the same problem. Changing the system clock did get it to stop crashing. Oof.
It still continues to crash after reinstalling and restoring the backup
It still continues to crash after reinstalling and restoring the backup
Hi! Could you attach a debug log if possible?
I've moved on with a fresh install and no backup on my personal device to get away from the problem. Based on what happened in the app before the problem started, I think it has something to do with deleting messages in a 1:1 chat. I deleted some messages and it only gave me the "delete for me" option even though they had already been viewed by the other person, leading me to believe it should have given me the "delete for everyone" option. That is my sense of where the issues started.
I am also suddenly experiencing crashes on launch. I've tried turning system date/time back 2 weeks but still experience crashes and cannot create a backup. I have tried launching the app in Airplane mode, but it still crashes. I have also cleared the cache which was suggested in another GH Issue. I have attached a log of the crash. This is on a Pixel 7 Pro running Graphene OS release 2025020500.
confirming this problem. I have a Pixel 6a, Graphene OS build 2025031400 (Android 15). I emailed support, including several system logs and Signal logs, about a week ago. As I understood from the support person, they would send all those logs (and a bit more detailed description of the symptoms) through to the developers. So I trust developers have them already. Signal crashes spontaneously and continuously; every few minutes I get a system message that Signal has crashed. Irrespective if I open it or not. Same symptoms on wifi, or cellular, or airplane mode, or airplane mode with wifi. My Signal-logs have a few messages that say there is a memory problem. I am not sure if that is about RAM or storage; my phone has currently 33GB free storage.
updating Signal is not possible through Signal itself, since it crashes every time within seconds of opening it. I have updated twice through side-loading via signal.org/android/apk, now on 7.37.3. No change in symptoms.
I can now only use Signal through the laptop. Hope that continues working for a while; all the messaging in my life is in Signal.
I understood from the support person that I mentioned earlier, that it is probably not possible to give any feedback to me about this, since they are so busy. I was to watch updates and update every time. So this is what I do. I must say I am not very hopeful
For those on Graphene, ~I have created an issue on the Graphene OS Issue Tracker repo: https://github.com/GrapheneOS/os-issue-tracker/issues/5099~
Edit: Nvm, guess it's not a Graphene issue.
Btw. if a dev would have some use of my broken signal.db or other related files on the phone I'd also be happy to provide them privately. Just wouldn't upload that publically. Right now Signal is still in the broken state on my phone and am using Signal on my laptop only for now.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Why is this stale? It's happening even today.
I'm still having this issue. I'm trying to somehow extract that sqlite database to be able to have a closer look at it. But I'm having a hard time to get a full backup. The output I'm getting from "adb backup" on this non-rooted phone is only 47 bytes large.
I also tried to downgrade Signal first via these howtos:
- First tried the following non-root method: https://blog.knugi.com/202107/151300-Decrypting-Signal-Conversation-Database.html. But would yield this error:
$ adb install -r -d ../org.thoughtcrime.securesms-2.28.1-156-minAPI9.apk
Performing Streamed Install
adb: failed to install ../org.thoughtcrime.securesms-2.28.1-156-minAPI9.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
- Then tried this to increase the versionCode and versionName: https://gist.github.com/benvium/5923d50c30ab7c7df0f3
- Used this to self-sign it: https://stackoverflow.com/a/24833908
But now I'm getting this error:
$ adb install -r -d out/dist/org.thoughtcrime.securesms-2.28.1-156-minAPI9.apk
Performing Streamed Install
adb: failed to install out/dist/org.thoughtcrime.securesms-2.28.1-156-minAPI9.apk: Failure [-26: Package org.thoughtcrime.securesms new target SDK 22 doesn't support runtime permissions but the old target SDK 34 does.]
Edit: And if I bump the targetSdk version from 22 to 34 then I get the following error instead, so I guess this approach is a dead-end...
$ adb install -r -d out/dist/org.thoughtcrime.securesms-2.28.1-156-minAPI9.apk
Performing Streamed Install
adb: failed to install out/dist/org.thoughtcrime.securesms-2.28.1-156-minAPI9.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package org.thoughtcrime.securesms signatures do not match previously installed version; ignoring!]
Would it maybe make sense to even if the sqlite database is corrupt to not crash? And at least still allow using Signal's backup functionality, to be able to further examine those data files?
I'm also confused how this could have happened in the first place as it seems that sqlite should be able to use journals? https://sqlite.org/tempfiles.html. Or are sqlite journals somehow disabled for Signal?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue has been closed due to inactivity.