Skip to content

Crash on startup - sqlcipher_page_cipher says "hmac check failed for pgno=1" #7439

@a-leithner

Description

@a-leithner

Using a supported version?

  • I have searched searched open and closed issues for duplicates.
  • I am using Signal-Desktop as provided by the Signal team, not a 3rd-party package.

Overall summary

Yesterday, I upgraded from Signal 7.63.0 to 7.64.0 (keeping libringrtc at v. 2.54.1, signal-sqlcipher at 2.1.0). After that, Signal opened and functioned normally for the first half of today. After a reboot and after unlocking my KWallet (as I have been prompted for for a few months now when starting Signal as the first app), I was greeted with the "Signal could not be started" message (whose "Copy error and quit" button cf. #7355 still doesn't work, btw) and a black window in the background.

Starting from the command line, this is the output I'm seeing:

This build of Electron is provided by openSUSE and contains various modifications.
Please report problems at https://bugzilla.opensuse.org/enter_bug.cgi?classification=openSUSE and not to upstream bug trackers.
NODE_ENV production
NODE_CONFIG_DIR /usr/libexec/signal-desktop/config
NODE_CONFIG {}
ALLOW_CONFIG_MUTATIONS undefined
HOSTNAME [MY HOSTNAME]
NODE_APP_INSTANCE undefined
SUPPRESS_NO_CONFIG_WARNING undefined
SIGNAL_ENABLE_HTTP undefined
2025-08-01 17:34:34.888: ERROR CORE sqlcipher_page_cipher: hmac check failed for pgno=1
2025-08-01 17:34:34.888: ERROR CORE sqlite3Codec: error decrypting page 1 data: 1
2025-08-01 17:34:34.888: ERROR CORE sqlcipher_codec_ctx_set_error 1
2025-08-01 17:34:34.889: ERROR CORE sqlcipher_cipher_ctx_key_derive: error 1 occurred from provider kdf generating encryption key
2025-08-01 17:34:34.889: ERROR CORE sqlcipher_codec_key_derive: error occurred deriving read_ctx key
2025-08-01 17:34:34.889: ERROR CORE sqlite3Codec: error occurred during key derivation: 1
2025-08-01 17:34:34.889: ERROR CORE sqlcipher_codec_ctx_set_error 1

Now, of course this is technically not the official version of Signal Desktop, but it's built by openSUSE over at the Open Build Service where most modifications done, see the link, involve the build process only and this is not related to Electron which is the only thing "heavily modified" by openSUSE.

Taking a look into KWallet revealed that there is no data stored for Signal or at least no data being labelled as belonging to Signal but "Chrome Keys" and "Chromium Keys" which I guess could also be generated by Electron apps. However, in config.json there's "safeStorageBackend": "kwallet6" and reading #6970, I wonder if there's a problem with that. (I'm thinking of something of along the lines of Signal trying to read these Safe Storage values although they're belonging to Chrome and Chromium, both of which I've installed and used in the past.)

Downgrading of course didn't help. This are the last entries of app.log before and after the restart (i.e. with a working app and the first start with a crash):

{"level":30,"time":"2025-08-01T10:29:50.200Z","msg":"[WebsocketResources] WebSocketResources.KeepAlive(LibsignalWebSocketResource(authenticated)).send: Sending a keepalive message"}
{"level":30,"time":"2025-08-01T10:30:15.016Z","msg":"[WebsocketResources] WebSocketResources.KeepAlive(LibsignalWebSocketResource(unauthenticated)).send: Sending a keepalive message"}
{"level":30,"time":"2025-08-01T10:30:20.318Z","msg":"[WebsocketResources] WebSocketResources.KeepAlive(LibsignalWebSocketResource(authenticated)).send: Sending a keepalive message"}
{"level":40,"time":"2025-08-01T15:18:31.629Z","msg":"[setupI18nMain] intl.onWarn [@formatjs/intl] \"defaultRichTextElements\" was specified but \"message\" was not pre-compiled. \nPlease consider using \"@formatjs/cli\" to pre-compile your messages for performance.\nFor more details see https://formatjs.github.io/docs/getting-started/message-distribution"}
{"level":30,"time":"2025-08-01T15:18:31.649Z","msg":"[preconnect] libsignal net url: https://chat.signal.org"}
{"level":30,"time":"2025-08-01T15:18:31.649Z","msg":"[preconnect] libsignal net environment resolved to prod"}
{"level":30,"time":"2025-08-01T15:18:31.649Z","msg":"[preconnect] WebAPI: preconnect start"}
{"level":30,"time":"2025-08-01T15:18:31.918Z","msg":"[profiles] Profile Service initialized"}
{"level":30,"time":"2025-08-01T15:18:32.102Z","msg":"[preload] complete"}
{"level":30,"time":"2025-08-01T15:18:32.103Z","msg":"[@signalapp/libsignal-client] Initializing libsignal version:0.76.4 signal_node::logging rust/bridge/node/src/logging.rs:204"}
{"level":30,"time":"2025-08-01T15:18:32.177Z","msg":"[notifications] NotificationService initialized"}
{"level":50,"time":"2025-08-01T15:18:32.186Z","msg":"Top-level unhandled promise rejection: TypeError: Cannot destructure property 'getIsInCall' of 'window.Events' as it is undefined.\n    at IpcRenderer.<anonymous> ([REDACTED]/libexec/signal-desktop/preload.bundle.js:134:41078)\n    at IpcRenderer.emit (node:events:518:28)\n    at Object.onMessage (node:electron/js2c/renderer_init:2:10603)"}
{"level":30,"time":"2025-08-01T15:18:32.204Z","msg":"[@signalapp/libsignal-client] [preconnect] connection succeeded after 554.128ms libsignal_net::connect_state /home/abuild/rpmbuild/BUILD/libsignal-0.76.4-build/libsignal-0.76.4/rust/net/src/connect_state.rs:567"}
{"level":30,"time":"2025-08-01T15:18:32.204Z","msg":"[preconnect] WebAPI: preconnect done"}

Starting Signal with --enable-crash-reports didn't change a thing.

I'm at a loss here. I'd like to try everything to recover my Desktop data, since the mobile search pretty much sucks and I don't want to lose years worth of chat copies. I still have them on my phone though and have a Signal backup there, but still.

Any pointers or help would be highly appreciated.

Steps to reproduce

As described above:

  1. Upgrade to Signal 7.64.0
  2. Use normally once
  3. Subsequent starts crash

Expected result

Signal should start normally even after a reboot

Actual result

Signal fails with a non-descript error message and the above sqlcipher output

Screenshots

No response

Signal version

7.64.0

Operating system

openSUSE Tumbleweed

Version of Signal on your phone

No response

Link to debug log

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions