signalapp / signalapp/Signal-iOS

Instant crash after startup, bug travels across devices, backup fails, subscription impossible

Open
#6,350 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Swift
Stars
12.2k
Forks
3.5k
PR merge metrics
No merged PRs in 30d

Description

  • I have searched open and closed issues for duplicates
  • I am submitting a bug report for existing functionality that does not work as intended
  • This isn't a feature request or a discussion topic

Bug description

The app crashes directly on startup. I have done a full migration to a new iPhone but the issue persists.
Several app-updates in the meantime did not fix the issue either.

I am suspecting a corrupted SQLite DB that traveled with me to the new phone. The crashlog shows SQLite error 19: Optional("Optional(\"FOREIGN KEY constraint failed\").

If I reset the date of my phone to a date before the crashes started, I can open the app and also get the crash logs (see below).
I am part of a group with automatic message deletion set up. When I reset the clock of my phone so that the app starts and then manually try to delete this group, the app crashes as well. So I am assuming the trigger for the crash is the deletion of one or more messages in that group chat. The automatic message deletion runs directly on startup with the current date for this message and then crashes the app.

I tried singing up for- or creating a backup but this results in a crash. I currently see no way forward to recover my data. Help is greatly appreciated! When I can access my data again, the first thing I'll do is to subscribe to the backup service. 🙂

Steps to reproduce
  • deletion of the group chat (either automatically on startup or manually with the date-workaround)
  • starting the backup-flow

Actual result: app terminates immediately - no way to recover backup-logs after the crash without resetting the date

Expected result: app/backup starts and groups can be deleted

Device info

Tested on two devices with multiple iOS versions
Device: iPhone X (old) - iPhone 14 (current)
iOS version: tested with 16.7.16 (old phone) and 26.0 - 27.0 (current)
Signal version: 8.29

Link to debug log
2026/03/31 09:51:50:749 INF💛 [rust/bridge/shared/types/src/net/chat.rs:445]: connecting authenticated chat
2026/03/31 09:51:50:754 INF💛 [rust/net/src/connect_state.rs:517]: [authenticated] starting connection attempt with 1 routes
2026/03/31 09:51:50:755 INF💛 [rust/net/src/connect_state.rs:517]: [unauthenticated] starting connection attempt with 1 routes
2026/03/31 09:51:50:972 ERR❤️ [OWSSwiftUtils:68 owsFail]: 0 SignalServiceKit 0x…b08 block_destroy_helper.16 + 180316
1 SignalServiceKit 0x…12c objectdestroy.62Tm + 2860
2 SignalServiceKit 0x…370 objectdestroy.62Tm + 7536
3 SignalServiceKit 0x…d14 objectdestroy.62Tm + 1812
4 SignalServiceKit 0x…3d0 __swift_memcpy584_8 + 26060
5 SignalServiceKit 0x…754 block_destroy_helper + 17108
6 SignalServiceKit 0x…648 block_destroy_helper + 20936
7 SignalServiceKit 0x…968 block_destroy_helper + 17640
8 SignalServiceKit 0x…664 block_destroy_helper + 20964
9 SignalServiceKit 0x…240 block_destroy_helper + 19904
10 SignalServiceKit 0x…69c block_destroy_helper + 21020
11 SignalServiceKit 0x…05c swift_willThrowTyped + 22056
12 SignalServiceKit 0x…87c objectdestroy.29Tm + 328
13 SignalServiceKit 0x…3fc swift_willThrowTyped + 18888
14 SignalServiceKit 0x…da8 objectdestroy.15Tm + 56280
15 SignalServiceKit 0x…618 block_destroy_helper + 168
16 GRDB 0x…934 __swift_memcpy171_8 + 61084
17 SignalServiceKit 0x…314 objectdestroy.15Tm + 90436
18 GRDB 0x…c5c __swift_memcpy105_8 + 8376
19 GRDB 0x…560 block_destroy_helper + 32
20 libswiftDispatch.dylib 0x…a78 xxxx-xx-xx-xxx688 + 6776
21 libswiftDispatch.dylib 0x…e3c xxxx-xx-xx-xxx688 + 44604
22 libswiftDispatch.dylib 0x…6fc xxxx-xx-xx-xxx688 + 5884
23 libswiftDispatch.dylib 0x…aa0 xxxx-xx-xx-xxx688 + 6816
24 libswiftDispatch.dylib 0x…d44 xxxx-xx-xx-xxx688 + 7492
25 libdispatch.dylib 0x…7fc xxxx-xx-xx-xxxA83 + 112636
26 libdispatch.dylib 0x…8c0 xxxx-xx-xx-xxxA83 + 71872
27 libswiftDispatch.dylib 0x…c80 xxxx-xx-xx-xxx688 + 7296
28 libswiftDispatch.dylib 0x…bb4 xxxx-xx-xx-xxx688 + 7092
29 libswiftDispatch.dylib 0x…914 xxxx-xx-xx-xxx688 + 6420
30 libswiftDispatch.dylib 0x…b38 xxxx-xx-xx-xxx688 + 6968
31 libswiftDispatch.dylib 0x…634 $sSo17OS_dispatch_queueC8DispatchE4sync7executexxyKXE_tKlF + 64
32 GRDB 0x…ca0 __swift_memcpy105_8 + 4348
33 GRDB 0x…878 objectdestroyTm + 7436
34 SignalServiceKit 0x…bf0 objectdestroy.15Tm + 55840
35 SignalServiceKit 0x…e04 swift_willThrowTyped + 21456
36 SignalServiceKit 0x…848 objectdestroy.29Tm + 276
37 SignalServiceKit 0x…1d0 keypath_setTm + 32944
38 SignalServiceKit 0x…af0 swift_willThrowTyped + 20668
39 SignalServiceKit 0x…ed0 swift_willThrowTyped + 25756
40 SignalServiceKit 0x…1f1 __swift_mutable_project_boxed_opaque_existential_1Tm + 6525
41 SignalServiceKit 0x…fad block_destroy_helper.3 + 87121
42 SignalServiceKit 0x…5d1 __swift_allocate_boxed_opaque_existential_0 + 409
43 SignalServiceKit 0x…b6d __swift_memcpy169_8 + 7421
44 SignalServiceKit 0x…355 block_destroy_helper.3 + 83961
45 SignalServiceKit 0x…595 block_destroy_helper.3 + 80441
46 SignalServiceKit 0x…d45 swift_willThrowTyped + 25361
47 SignalServiceKit 0x…475 swift_willThrowTyped + 27201
48 SignalServiceKit 0x…fad block_destroy_helper.3 + 87121
49 SignalServiceKit 0x…061 block_destroy_helper + 7137
50 SignalServiceKit 0x…8a1 block_destroy_helper + 5153
51 SignalServiceKit 0x…1f1 __swift_mutable_project_boxed_opaque_existential_1Tm + 6525
52 SignalServiceKit 0x…1f1 __swift_mutable_project_boxed_opaque_existential_1Tm + 6525
53 SignalServiceKit 0x…535 block_destroy_helper.3 + 84441
54 SignalServiceKit 0x…5d1 __swift_allocate_boxed_opaque_existential_0 + 409
55 libswift_Concurrency.dylib 0x…7d1 xxxx-xx-xx-xxx832 + 444369
2026/03/31 09:51:50:972 ERR❤️ [Database+Execute:20 executeWithCachedStatement]: Failing for unexpected throw: SQLite error 19: Optional("Optional(\"FOREIGN KEY constraint failed\") (extended result code: 787)") (extended result code: 787)

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 by reproducing the group-deletion and backup flows described in the issue, using the supplied debug log as the initial evidence. Investigate the SQLite foreign-key constraint failure reported during startup and deletion; done means the app no longer crashes and group deletion and backup startup work normally.

Written by the indexing model from the issue text.

Assessment

Tech stack
sqlite, swift
Domain
databases, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.