signalapp / Signal-Desktop

A private messenger for Windows, macOS, and Linux.
https://signal.org/download
GNU Affero General Public License v3.0
14.63k stars 2.66k forks source link

Signal Desktop will not start on Ubuntu 18.04.2 LTS #4285

Closed wnn1312 closed 4 years ago

wnn1312 commented 4 years ago

A few days ago, Signal Desktop flashed up the message that it was disconnected, even though my Internet was running fine. I closed it and clicked on the icon to restart it. Nothing happened. I tried starting it from the terminal, and again nothing happened. I rebooted and tried these same steps, and it still won't start. I have confirmed the process isn't running in the background with the task manager.

Steps to Reproduce

  1. Maybe the connection failure has something to do with it somehow?
  2. Attempt to start Signal
  3. watch it do nothing

Actual Result:

Signal doesn't run. The terminal outputs:

Set Windows Application User Model ID (AUMID) { appUserModelId: 'org.whispersystems.signal-desktop' } NODE_ENV production NODE_CONFIG_DIR /snap/signal-desktop/318/opt/Signal/resources/app.asar/config NODE_CONFIG {} ALLOW_CONFIG_MUTATIONS undefined HOSTNAME undefined NODE_APP_INSTANCE undefined SUPPRESS_NO_CONFIG_WARNING undefined SIGNAL_ENABLE_HTTP undefined userData: /home/jason/snap/signal-desktop/318/.config/Signal config/get: Successfully read user config file x-attr dependncy did not load successfully config/get: Successfully read ephemeral config file making app single instance Error org.freedesktop.DBus.Error.Failed: cannot use setting "default-url-scheme-handler": not allowed /snap/signal-desktop/318/opt/Signal/signal-desktop --use-tray-icon --no-sandbox: symbol lookup error: /snap/signal-desktop/318/gnome-platform/usr/lib/x86_64-linux-gnu/libgdk-3.so.0: undefined symbol: cairo_xlib_surface_create

Expected Result:

signal-desktop should run

(I also have it set to run at login, and it also doesn't do that.)

Signal Version:

can't access

Operating System:

18.04.2 LTS

Linked Device Version:

iOS 3.8.2.7

iOS log, obviously can't access Desktop one: https://debuglogs.org/6c4667620be8452d95f674d4ab557eaf837a7e1b57d92e84fedfefefd1af7122.zip

nro-bot commented 4 years ago

May be related to https://github.com/signalapp/Signal-Desktop/issues/4279#issuecomment-629660296 - try reverting to prev. snap if you can

scottnonnenberg-signal commented 4 years ago

First, how did you install Signal Desktop?

Second, do you perhaps have a version of libcairo on your machine that you compiled yourself? https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=631200

tmelen commented 4 years ago

Signal-desktop installation on Linux: Howto do the transition from snap to apt?

Installation of signal-desktop using snap has apperantly been dropped and is no longer supported (https://github.com/signalapp/Signal-Desktop/issues/4279#issuecomment-629828234). How do I deinstall the snap installed signal-desktop and reinstall signal-desktop using apt, not violating any of these:

scottnonnenberg-signal commented 4 years ago

@tmelen It hasn't been dropped, because we at Signal didn't create or support the snap release in the first place.

If you'd like to transition from the snap release to the officially-supported apt package, the first thing to determine is: where is the user data directory for the snap release of Signal Desktop? If it's ~/.config/Signal then all you have to do is install the apt package, because that's where it will be looking for your user data.

tmelen commented 4 years ago

Thanks @scottnonnenberg for the clearification and the tip! My impression was that snap used to be the preferred way to install Signal Desktop, but I have clearly been misled. Yes, there are plenty of directories and a few files under ~/.config/Signal:

$ ls ~/.config/Signal
 blob_storage   Dictionaries     logs                       'Session Storage'
 Cache          ephemeral.json  'Network Persistent State'   sql
'Code Cache'    GPUCache         Preferences                 temp
 config.json    IndexedDB        QuotaManager
 databases     'Local Storage'   QuotaManager-journal
$

So I did:

$ snap remove signal-desktop
signal-desktop removed
$ curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
OK
$ echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main
$ sudo apt update && sudo apt install -y signal-desktop
[...]
$ signal-desktop

Signal Desktop started with its welcome screen. In its yellow messaging box it said: "Unlinked. Relink Signal Desktop to your mobile device to continue messaging" with an accompanying Relink button. Then I closed Signal Desktop.

I wonder, when Signal Desktop is relinked, will it then get a key from the mobile device to decrypt the data under ~/.config/Signal, or will it download the stored conversations from the phone? (In the latter case I want to make sure both devices are connected to the same Local Area Network.)

scottnonnenberg-signal commented 4 years ago

@tmelen Desktop never syncs old messages from your other devices, or vice versa.

Why do you think that Desktop thinks that it's unlinked when you start up the apt version? Is that expected? Wasn't your snap-installed version linked when you started it last?

tmelen commented 4 years ago

Thanks @scottnonnenberg, for clearyfying that old conversations cannot be synced between connected devices.

I don't really know what to expect, but I do expect that backup and restore of signal-desktop data is somehow possible?

Yes, the snap installed signal-desktop was connected to the mobile device since long time ago. The mobile device still says the devices are connected, but that the PC has not been active since the infamous update to version 1.34.0 on Sunday.

If I understand correctly, the challenge is to make the apt installed version of signal-desktop start up as already connected with the mobile device? Since it started up un-linked, my first attempt failed. Right?

scottnonnenberg-signal commented 4 years ago

@tmelen Right, the idea is to start up the apt-installed version and have it look exactly like your snap instance did. Again, I know very little about what snap does to Signal Desktop, but it does seem like it should have just worked.

It did work, at least somewhat. You got your message history, but it said that it was unlinked. Usually what that means is that all the encryption information has been deleted, and you really will need to relink. But I'm not sure why that happened. Your debug log is kept around for 3 days, so we might still be able to catch those events in the log!

So you can get back to using the app, I would recommend that you link the apt-installed instance to your phone. If you get that log to me, I can worry about the why.

tmelen commented 4 years ago

Happy moment! I have just managed to get the snap installed Signal Desktop version 1.34.1 running, and the conversation history is complete.

Snap, by default, created a backup of my user data when I did 'snap remove signal-desktop' two days ago (see above). This backup was labeled Snapshot #1. By reinstalling Signal Desktop using snap today and then restoring my user data from Snapshot #1, Signal Desktop magically woked (which it didn't when the backup was created!). I don't really know what did the trick, but the commands I issued today were:

$ apt remove signal-desktop $ snap restore 1 $ snap install signal-desktop $ signal-desktop $ snap restore 1 $ signal-desktop

The first time I started Signal Desktop, it presented a QR-code and asked me to pair with a mobile device. I just closed the window. The second time I started Signal Desktop it was linked, so clearly it was essensial to restore the user data from Snapshot #1 after 'snap install signal-desktop', which makes sense. (The second time, Signal Desktop kept running after I closed the window, sending keep-alive messages roughly once a minute to the mobile device or maybe the Signal server.)

I have no idea why the problem that started all this (libgdk-3.so.0: undefined symbol: cairo_xlib_surface_create) silently went away. Also, I don't know if I could just have done 'snap remove signal-desktop; snap install signal-desktop; snap restore 1' or if it made a difference that I did 'apt install signal-desktop; apt remove signal-desktop' in between the snap remove and the snap install.

Since snap is not the preferred way of installing Signal Desktop, I still would like to switch to apt. Is there a receipe for a safe way to proceed using traditional backup and restore? I will need this anyhow the day my current PC is replaced by a new one.

tmelen commented 4 years ago

Fiddling around, I found the directory below. Seems like a good candidate to backup and restore to ~/.config/

$ ls -aF ~/snap/signal-desktop/321/.config/Signal/
 ./                     ephemeral.json              shared_proto_db/
 ../                    GPUCache/                   SingletonCookie@
 attachments.noindex/   IndexedDB/                  SingletonLock@
 blob_storage/         'Local Storage'/             sql/
 Cache/                 logs/                       SS@
'Code Cache'/          'Network Persistent State'   stickers.noindex/
 config.json            Preferences                 temp/
 databases/             QuotaManager                VideoDecodeStats/
 Dictionaries/          QuotaManager-journal
 drafts.noindex/       'Session Storage'/
EvanHahn-Signal commented 4 years ago

@tmelen That seems right.

Given that I think your issue is resolved and that this was a problem with an unofficially-distributed Signal app, I'm going to close this issue. Happy to discuss further even on a closed issue, and also happy to reopen if you think that's wrong.