Signal Desktop 7.18 fails with "Unhandled Promise Rejection"

After the 2024-07-29/2024-08-08 stable updates my Signal Desktop 7.18.0-1 upon start reports that “a database failure” happened (I’m not using it every day) - button “copy fault and terminate” gives:

Unhandled Promise Rejection

Error: Not initialized
    at MainSQL.close ([REDACTED]/ts/sql/main.js:104:13)
    at BrowserWindow.<anonymous> ([REDACTED]/app/main.js:690:15)

The pop-up offers for immediate fix “erase the data and restart.”
While this happens on my asrock desktop, I can start Signal Desktop on my hp laptop with this same database - the Signal folder is symlinked to a folder in a Veracrypt container on a USB storage that I attach when needed - thus the database is not faulty.
So it’s rather something with the computer or the system.
Please, advise, if possible - could it be caused by the CPU (Celeron J1900) lacking some capabilities, other hardware, by timing or rather by a dependency (which maybe the package installer didn’t check)?

Thank you,
Dirk

Signal app.log:

{"level":30,"time":"2024-08-12T11:14:26.810Z","msg":"Profile Service initialized"}
{"level":30,"time":"2024-08-12T11:14:27.413Z","msg":"libsignal net environment resolved to [Production]"}
{"level":30,"time":"2024-08-12T11:14:27.490Z","msg":"preload complete"}
{"level":30,"time":"2024-08-12T11:14:27.492Z","msg":"@signalapp/libsignal-client Initializing libsignal version:0.52.3 signal_node::logging rust/bridge/node/src/logging.rs:206"}
{"level":30,"time":"2024-08-12T11:14:27.492Z","msg":"@signalapp/libsignal-client Initializing connection manager for Prod... libsignal_bridge_types::net rust/bridge/shared/types/src/net.rs:70"}
{"level":30,"time":"2024-08-12T11:14:27.652Z","msg":"NotificationService initialized"}
{"level":50,"time":"2024-08-12T11:14:27.674Z","msg":"Top-level unhandled promise rejection: TypeError: Cannot destructure property 'getIsInCall' of 'window.Events' as it is undefined.\n    at IpcRenderer.<anonymous> ([REDACTED]/resources/app.asar/preload.bundle.js:68:24607)\n    at IpcRenderer.emit (node:events:519:28)\n    at Object.onMessage (node:electron/js2c/renderer_init:2:8837)"}

main.log:

{"level":30,"time":"2024-08-12T11:14:22.036Z","msg":"got fast localeOverride setting null"}
{"level":30,"time":"2024-08-12T11:14:22.039Z","msg":"app.ready: hour cycle preference: UnknownPreference"}
{"level":30,"time":"2024-08-12T11:14:22.039Z","msg":"app.ready: preferred system locales: de-DE, de"}
{"level":30,"time":"2024-08-12T11:14:22.040Z","msg":"locale: Supported locales: af-ZA, ar, az-AZ, bg-BG, bn-BD, bs-BA, ca, cs, da, de, el, en, es, et-EE, eu, fa-IR, fi, fr, ga-IE, gl-ES, gu-IN, he, hi-IN, hr-HR, hu, id, it, ja, ka-GE, kk-KZ, km-KH, kn-IN, ko, ky-KG, lt-LT, lv-LV, mk-MK, ml-IN, mr-IN, ms, my, nb, nl, pa-IN, pl, pt-BR, pt-PT, ro-RO, ru, sk-SK, sl-SI, sq-AL, sr, sv, sw, ta-IN, te-IN, th, tl-PH, tr, ug, uk-UA, ur, vi, yue, zh-CN, zh-HK, zh-Hant"}
{"level":30,"time":"2024-08-12T11:14:22.041Z","msg":"locale: Preferred locales: de-DE, de"}
{"level":30,"time":"2024-08-12T11:14:22.041Z","msg":"locale: Locale Override: null"}
{"level":30,"time":"2024-08-12T11:14:22.048Z","msg":"locale: Matched locale: de"}
{"level":40,"time":"2024-08-12T11:14:22.191Z","msg":"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.io/docs/getting-started/message-distribution"}
{"level":30,"time":"2024-08-12T11:14:22.192Z","msg":"locale: Text info direction for de: ltr"}
{"level":30,"time":"2024-08-12T11:14:22.195Z","msg":"getSQLKey: decrypting key"}
{"level":30,"time":"2024-08-12T11:14:22.197Z","msg":"getSystemTraySetting got value DoNotUseSystemTray"}
{"level":30,"time":"2024-08-12T11:14:22.197Z","msg":"getSystemTraySetting returning DoNotUseSystemTray"}
{"level":30,"time":"2024-08-12T11:14:22.201Z","msg":"app ready"}
{"level":30,"time":"2024-08-12T11:14:22.202Z","msg":"starting version 7.18.0"}
{"level":30,"time":"2024-08-12T11:14:22.202Z","msg":"media access status [object Undefined] [object Undefined]"}
{"level":30,"time":"2024-08-12T11:14:22.212Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2024-08-12T11:14:22.222Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2024-08-12T11:14:22.222Z","msg":"got fast spellcheck setting false"}
{"level":30,"time":"2024-08-12T11:14:22.224Z","msg":"Initializing BrowserWindow config: {\"show\":false,\"width\":1360,\"height\":703,\"minWidth\":300,\"minHeight\":200,\"autoHideMenuBar\":false,\"titleBarStyle\":\"default\",\"backgroundColor\":\"#3a76f0\",\"webPreferences\":{\"devTools\":false,\"spellcheck\":false,\"enableBlinkFeatures\":\"CSSPseudoDir,CSSLogical\",\"enablePreferredSizeMode\":true,\"nodeIntegration\":false,\"nodeIntegrationInWorker\":false,\"sandbox\":false,\"contextIsolation\":true,\"preload\":\"[REDACTED]/preload.bundle.js\",\"backgroundThrottling\":true,\"disableBlinkFeatures\":\"Accelerated2dCanvas,AcceleratedSmallCanvases\"},\"icon\":\"[REDACTED]/images/signal-logo-desktop-linux.png\",\"x\":0,\"y\":28}"}
{"level":30,"time":"2024-08-12T11:14:22.371Z","msg":"spellcheck: user locales: [\"de-DE\",\"de\"]"}
{"level":30,"time":"2024-08-12T11:14:22.371Z","msg":"spellcheck: available spellchecker languages: [\"af\",\"bg\",\"ca\",\"cs\",\"cy\",\"da\",\"de\",\"de-DE\",\"el\",\"en\",\"en-AU\",\"en-CA\",\"en-GB\",\"en-GB-oxendict\",\"en-US\",\"es\",\"es-419\",\"es-AR\",\"es-ES\",\"es-MX\",\"es-US\",\"et\",\"fa\",\"fo\",\"fr\",\"fr-FR\",\"he\",\"hi\",\"hr\",\"hu\",\"hy\",\"id\",\"it\",\"it-IT\",\"ko\",\"lt\",\"lv\",\"nb\",\"nl\",\"pl\",\"pt\",\"pt-BR\",\"pt-PT\",\"ro\",\"ru\",\"sh\",\"sk\",\"sl\",\"sq\",\"sr\",\"sv\",\"ta\",\"tg\",\"tr\",\"uk\",\"vi\"]"}
{"level":30,"time":"2024-08-12T11:14:22.371Z","msg":"spellcheck: setting languages to: [\"de-DE\",\"de\"]"}
{"level":40,"time":"2024-08-12T11:14:23.113Z","msg":"MainSQL: Database log code=26: file is not a database in \"PRAGMA journal_mode = WAL\""}
{"level":30,"time":"2024-08-12T11:14:23.113Z","msg":"MainSQL: migrateDatabase: Migration without cipher change failed"}
{"level":40,"time":"2024-08-12T11:14:23.351Z","msg":"MainSQL: Database log code=26: statement aborts at 2: [PRAGMA user_version] file is not a database"}
{"level":50,"time":"2024-08-12T11:14:23.352Z","msg":"MainSQL: Database startup error: SqliteError: file is not a database\n    at Database.pragma ([REDACTED]/node_modules/@signalapp/better-sqlite3/lib/methods/pragma.js:11:31)\n    at getUserVersion ([REDACTED]/ts/sql/util.js:132:13)\n    at migrateSchemaVersion ([REDACTED]/ts/sql/Server.js:394:54)\n    at openAndMigrateDatabase ([REDACTED]/ts/sql/Server.js:425:3)\n    at openAndSetUpSQLCipher ([REDACTED]/ts/sql/Server.js:440:14)\n    at Object.initialize ([REDACTED]/ts/sql/Server.js:476:16)\n    at MessagePort.<anonymous> ([REDACTED]/ts/sql/mainWorker.js:84:35)\n    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:820:20)\n    at MessagePort.<anonymous> (node:internal/per_context/messageport:23:28)"}
{"level":50,"time":"2024-08-12T11:14:23.353Z","msg":"MainSQL: runCorruptionChecks: not running the check, no writable instance Error: getUnsafeWritableInstance: globalWritableInstance not set!\n    at getUnsafeWritableInstance ([REDACTED]/ts/sql/Server.js:605:11)\n    at Object.runCorruptionChecks ([REDACTED]/ts/sql/Server.js:4828:10)\n    at respond ([REDACTED]/ts/sql/mainWorker.js:40:29)\n    at MessagePort.<anonymous> ([REDACTED]/ts/sql/mainWorker.js:115:5)"}
{"level":50,"time":"2024-08-12T11:14:23.354Z","msg":"Failed to get zoom factor {}"}
{"level":30,"time":"2024-08-12T11:14:25.071Z","msg":"got fast theme-setting value system"}
{"level":50,"time":"2024-08-12T11:14:27.652Z","msg":"sql.initialize was unsuccessful; returning early"}
{"level":30,"time":"2024-08-12T11:14:27.654Z","msg":"close event {\"readyForShutdown\":false,\"shouldQuit\":false}"}
{"level":30,"time":"2024-08-12T11:14:27.654Z","msg":"maybeRequestCloseConfirmation: Checking to see if close confirmation is needed"}
{"level":50,"time":"2024-08-12T11:15:20.762Z","msg":"onDatabaseError: Quitting application"}
{"level":30,"time":"2024-08-12T11:15:20.765Z","msg":"main window closed event"}
{"level":30,"time":"2024-08-12T11:15:20.766Z","msg":"quit event {\"hasEventBeenPrevented\":false,\"windowCount\":0,\"mainWindowExists\":false}"}
{"level":50,"time":"2024-08-12T11:15:20.775Z","msg":"Error occurred in handler for 'sql-channel': {}"}
{"level":50,"time":"2024-08-12T11:15:20.776Z","msg":"maybeRequestCloseConfirmation: Response never received; continuing with close."}
{"level":50,"time":"2024-08-12T11:15:20.779Z","msg":"Unhandled Promise Rejection: Error: Not initialized\n    at MainSQL.close ([REDACTED]/ts/sql/main.js:104:13)\n    at BrowserWindow.<anonymous> ([REDACTED]/app/main.js:690:15)"}

asrock inxi -Fz:

System:
  Kernel: 6.10.3-1-MANJARO arch: x86_64 bits: 64
  Desktop: Xfce v: 4.18.1 Distro: Manjaro Linux
Machine:
  Type: Desktop Mobo: ASRock model: Q1900B-ITX serial: <superuser required>
    UEFI: American Megatrends v: P2.20 date: 02/12/2019
CPU:
  Info: quad core model: Intel Celeron J1900 bits: 64 type: MCP cache:
    L2: 2 MiB
  Speed (MHz): avg: 1333 min/max: 1333/2416 cores: 1: 1333 2: 1333 3: 1333
    4: 1333
Graphics:
  Device-1: Intel Atom Processor Z36xxx/Z37xxx Series Graphics & Display
    driver: i915 v: kernel
  Display: x11 server: X.Org v: 21.1.13 driver: X: loaded: modesetting
    dri: crocus gpu: i915 resolution: 1360x768~60Hz
  API: EGL v: 1.5 drivers: crocus,swrast
    platforms: gbm,x11,surfaceless,device
  API: OpenGL v: 4.5 compat-v: 4.2 vendor: intel mesa v: 24.1.5-manjaro1.1
    renderer: Mesa Intel HD Graphics (BYT)
Audio:
  Device-1: Intel Atom Processor Z36xxx/Z37xxx Series High Definition Audio
    driver: snd_hda_intel
  API: ALSA v: k6.10.3-1-MANJARO status: kernel-api
  Server-1: PulseAudio v: 17.0 status: active
Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    driver: r8169
  IF: enp2s0 state: up speed: 100 Mbps duplex: full mac: <filter>
  Device-2: ASIX AX88179 Gigabit Ethernet driver: cdc_ncm type: USB
  IF: enp0s20u1u2c2 state: down mac: <filter>
Drives:
  Local Storage: total: 465.76 GiB used: 395.72 GiB (85.0%)
  ID-1: /dev/sda vendor: SanDisk model: SDSSDH3 250G size: 232.89 GiB
  ID-2: /dev/sdb vendor: SanDisk model: Ultra Luxe size: 232.88 GiB
    type: USB
Partition:
  ID-1: / size: 232.54 GiB used: 214.47 GiB (92.2%) fs: btrfs dev: /dev/sda3
  ID-2: /boot/efi size: 319.3 MiB used: 308 KiB (0.1%) fs: vfat
    dev: /dev/sda2
  ID-3: /home size: 232.54 GiB used: 214.47 GiB (92.2%) fs: btrfs
    dev: /dev/sda3
  ID-4: /var/log size: 232.54 GiB used: 214.47 GiB (92.2%) fs: btrfs
    dev: /dev/sda3
Swap:
  ID-1: swap-1 type: file size: 6 GiB used: 1.11 GiB (18.5%)
    file: /@swapfile/swapfile
Sensors:
  System Temperatures: cpu: 55.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 4 GiB note: est. available: 3.54 GiB used: 2.38 GiB (67.4%)
  Processes: 268 Uptime: 1h 28m Shell: Bash inxi: 3.3.35

hp inxi -Fz:

System:
  Kernel: 6.10.3-1-MANJARO arch: x86_64 bits: 64
  Desktop: Xfce v: 4.18.1 Distro: Manjaro Linux
Machine:
  Type: Laptop System: HP product: HP EliteBook 840 G5 v: N/A
    serial: <superuser required>
  Mobo: HP model: 83B2 v: KBC Version 04.6E.00 serial: <superuser required>
    UEFI: HP v: Q78 Ver. 01.25.00 date: 06/16/2023
Battery:
  ID-1: BAT0 charge: 36.7 Wh (100.0%) condition: 36.7/50.2 Wh (73.1%)
CPU:
  Info: quad core model: Intel Core i5-8350U bits: 64 type: MT MCP cache:
    L2: 1024 KiB
  Speed (MHz): avg: 450 min/max: 400/1700 cores: 1: 400 2: 400 3: 400 4: 400
    5: 400 6: 400 7: 400 8: 800
Graphics:
  Device-1: Intel UHD Graphics 620 driver: i915 v: kernel
  Display: x11 server: X.Org v: 21.1.13 driver: X: loaded: modesetting
    dri: iris gpu: i915 s-res: 1368x768 resolution: 1920x1080
  API: EGL v: 1.5 drivers: iris,swrast platforms: gbm,x11,surfaceless,device
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: intel mesa v: 24.1.5-manjaro1.1
    renderer: Mesa Intel UHD Graphics 620 (KBL GT2)
Audio:
  Device-1: Intel Sunrise Point-LP HD Audio driver: snd_hda_intel
  API: ALSA v: k6.10.3-1-MANJARO status: kernel-api
  Server-1: PulseAudio v: 17.0 status: active
Network:
  Device-1: Intel Ethernet I219-LM driver: e1000e
  IF: enp0s31f6 state: down mac: <filter>
  Device-2: Intel Wireless 8265 / 8275 driver: iwlwifi
  IF: wlp1s0 state: up mac: <filter>
Drives:
  Local Storage: total: 471.35 GiB used: 237.87 GiB (50.5%)
  ID-1: /dev/nvme0n1 vendor: Samsung model: MZVLB256HAHQ-000H1
    size: 238.47 GiB
  ID-2: /dev/sda vendor: SanDisk model: Ultra Luxe size: 232.88 GiB
    type: USB
Partition:
  ID-1: / size: 63.94 GiB used: 56.55 GiB (88.4%) fs: btrfs
    dev: /dev/nvme0n1p4
  ID-2: /boot/efi size: 96 MiB used: 72.6 MiB (75.6%) fs: vfat
    dev: /dev/nvme0n1p1
  ID-3: /home size: 63.94 GiB used: 56.55 GiB (88.4%) fs: btrfs
    dev: /dev/nvme0n1p4
  ID-4: /var/log size: 63.94 GiB used: 56.55 GiB (88.4%) fs: btrfs
    dev: /dev/nvme0n1p4
Swap:
  ID-1: swap-1 type: file size: 3 GiB used: 0 KiB (0.0%)
    file: /@swapfile/swapfile
Sensors:
  System Temperatures: cpu: 37.0 C pch: 33.5 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 8 GiB note: est. available: 7.6 GiB used: 1.37 GiB (18.1%)
  Processes: 290 Uptime: 1h 28m Shell: Bash inxi: 3.3.35

Why the redaction ?

Unhandled Promise Rejection

A promise is temporary value used by async operations until the actual da is returned.

Error: Not initialized

But the promise never returns because - what ever it is supposed to return - is not initialized - that is why it fails - the developer(s) forgot to account for what the user may do - in your case symlinking it to an arbitrary location … instead they are assuming valid data in the relevant folder and when there is none - the app collapses

    at MainSQL.close ([REDACTED]/ts/sql/main.js:104:13)
    at BrowserWindow.<anonymous> ([REDACTED]/app/main.js:690:15)

And it appears the promise has somthing to do with your data - most likely it is using a sqlite database and that database is either inaccessible or damaged.

You cannot know if the database is faulty - you assume it is not - something is going awry when acessing the database inside the encrypted container - so what if it is faulty ?

One way of testing is to copy the data out of the container and place it in the expected location - that means removing the symlink and replace it with a real folder - and your unencrypted data.

Then see if you can open the app.

If you can reproduce the behavior without the redirected folder - then you have found a bug - report upstream to signal developers at Signal · GitHub

If you cannot reproduce than you know that your container is flawed in some way …

Thank you for looking into it.

This is the output that came from the Signal Error message box through the clipboard. When I try to start Signal on my asrock PC, a pop-up window notifies me of “a database failure” suggesting to report to Signal support and offering two buttons: “copy fault and exit” or “erase data and restart.” So I pressed “copy fault and exit,” then pasted this from the clipboard - Signal itself produced the “[REDACTED]” text.

I use the same USB storage with the same Veracrypt containter on whichever computer I’m on (same story with the mail client folder). When I stuck on the error message pop-up, I did not erase my data, but exited from Signal, unmounted everything, then moved my USB stick to the other computer, mounted again, and Signal does start with the same data which appear to be faulty on the first computer.
The point is that before the system update(s) this worked on both.

Finally now I copied everything from the container to the local drive and ran a checksum test over all the files for additional safety - same result - failure to start Signal. I’ll run a memtest later - but Signal Desktop is the only application that shows a questionable behaviour.

The cited app.log and main.log files are from ~/.config/Signal/logs/ (the Signal.org support site advises to include them with a report if Signal fails to start).
The part below from main.log seems the most related, although I’d not feel able to trace something in the sources (manually added line breaks, “[REDACTED]” by Signal):

{"level":40,
"time":"2024-08-12T11:14:23.113Z",
"msg":"MainSQL: Database log code=26: file is not a database in \"PRAGMA journal_mode = WAL\""}
{"level":30,
"time":"2024-08-12T11:14:23.113Z",
"msg":"MainSQL: migrateDatabase: Migration without cipher change failed"}
{"level":40,
"time":"2024-08-12T11:14:23.351Z",
"msg":"MainSQL: Database log code=26: statement aborts at 2: [PRAGMA user_version] file is not a database"}
{"level":50,
"time":"2024-08-12T11:14:23.352Z",
"msg":"MainSQL: Database startup error: SqliteError: file is not a database\n
    at Database.pragma ([REDACTED]/node_modules/@signalapp/better-sqlite3/lib/methods/pragma.js:11:31)\n
    at getUserVersion ([REDACTED]/ts/sql/util.js:132:13)\n
    at migrateSchemaVersion ([REDACTED]/ts/sql/Server.js:394:54)\n
    at openAndMigrateDatabase ([REDACTED]/ts/sql/Server.js:425:3)\n
    at openAndSetUpSQLCipher ([REDACTED]/ts/sql/Server.js:440:14)\n
    at Object.initialize ([REDACTED]/ts/sql/Server.js:476:16)\n
    at MessagePort.<anonymous> ([REDACTED]/ts/sql/mainWorker.js:84:35)\n
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:820:20)\n
    at MessagePort.<anonymous> (node:internal/per_context/messageport:23:28)"}
{"level":50,
"time":"2024-08-12T11:14:23.353Z",
"msg":"MainSQL: runCorruptionChecks: not running the check, no writable instance Error: getUnsafeWritableInstance: globalWritableInstance not set!\n
    at getUnsafeWritableInstance ([REDACTED]/ts/sql/Server.js:605:11)\n
    at Object.runCorruptionChecks ([REDACTED]/ts/sql/Server.js:4828:10)\n
    at respond ([REDACTED]/ts/sql/mainWorker.js:40:29)\n
    at MessagePort.<anonymous> ([REDACTED]/ts/sql/mainWorker.js:115:5)"}
{"level":50,
"time":"2024-08-12T11:14:23.354Z",
"msg":"Failed to get zoom factor {}"}
{"level":30,
"time":"2024-08-12T11:14:25.071Z",
"msg":"got fast theme-setting value system"}
{"level":50,
"time":"2024-08-12T11:14:27.652Z",
"msg":"sql.initialize was unsuccessful; returning early"}
{"level":30,
"time":"2024-08-12T11:14:27.654Z",
"msg":"close event {\"readyForShutdown\":false,\"shouldQuit\":false}"}
{"level":30,
"time":"2024-08-12T11:14:27.654Z",
"msg":"maybeRequestCloseConfirmation: Checking to see if close confirmation is needed"}
{"level":50,
"time":"2024-08-12T11:15:20.762Z",
"msg":"onDatabaseError: Quitting application"}
{"level":30,
"time":"2024-08-12T11:15:20.765Z",
"msg":"main window closed event"}
{"level":30,
"time":"2024-08-12T11:15:20.766Z",
"msg":"quit event {\"hasEventBeenPrevented\":false,\"windowCount\":0,\"mainWindowExists\":false}"}
{"level":50,
"time":"2024-08-12T11:15:20.775Z",
"msg":"Error occurred in handler for 'sql-channel': {}"}
{"level":50,
"time":"2024-08-12T11:15:20.776Z",
"msg":"maybeRequestCloseConfirmation: Response never received; continuing with close."}
{"level":50,
"time":"2024-08-12T11:15:20.779Z",
"msg":"Unhandled Promise Rejection: Error: Not initialized\n
    at MainSQL.close ([REDACTED]/ts/sql/main.js:104:13)\n
    at BrowserWindow.<anonymous> ([REDACTED]/app/main.js:690:15)"}

Nice feature - I admit that :slight_smile:

Could it be your computers do not use the exact same signal version?

From the message it looks like signal want so migrate the data to a new version

  • but is not able to ?

Thus throwing the error - file is not a database

  • simply because the app doesn’t know better ?

I think you are better of discussing this in an upstream issue

  • initially I think it is an error in the encrypted volume
  • you are able to use that same encrypted volume on another system
  • this could indicate a signal version difference between the two systems

No, all are the same Manjaro xfce stable with all updates, all have sym-linked the same folder to ~/.config/Signal/ (one at a time, of course).

But Signal starts normally only on the hp notebook - I tried another system on the asrock desktop booted from USB instead of the internal disk, then on a dell notebook booted from USB - failed on both.
Now I may only suspect that Signal decided to write something outside that path which is essential for the database access, or it dislikes something on the older hardware (the hp is the only with NVMe and 4 core 8 thread CPU), or something different yet. (I may still try other kernel versions e.g.)

I found that I’m not the only one with this problem:

So I hope there will be a solution from Signal…

Thank you

The explanation appears to be that starting this August (2024) Signal Desktop uses a system resource to encrypt a key that’s required for accessing the database in the Signal folder (Manjaro - ~/.config/Signal/). Thus it’s no more possible to roam with the same profile folder from one computer to another or just restore it after a system re-installation.
(Perhaps, I’ll need to read more when I’ll find the time, maybe there’s a way around that I can learn.)

referring to

As I read it, the fact that just the posession of the Signal profile folder was sufficient for accessing the history, plus receiving and sending messages, was this way repaired for being a security issue.
Unfortunately this raises again the question of how to back up and restore the desktop database.

Update: Reading on I learned that Signal-desktop now uses a “safeStorage” API of the (Linux/…) system / desktop environment to secure the key used for accessing the database. Thus I understand that the Signal folder (Signal-desktop’s history) remains accessible only on the one single system on which this was established so that the key can be decrypted correctly. (Not sure whether I can manage to run code in Electron Fiddle…) I really hope that the Signal developers may establish a supported way for backup and restore…

Greetings

I have been thinking something - and what you describe - matches my thoughts.

You stored the data in an encrypted folder - so in some way you were already on the right track.

I thought that if I could exfil any persons signal data folder - technically I would be very close to impersonate that person on signal. Even if I didn’t want to impersonate - having access to these data - I would be easier to monitor that persons communication - perhaps even listen in.

The fact that they made the security detached from the data is huge step in workgin against targeted surveillance.