Open TheBlueMatt opened 4 years ago
What kind of graphics hardware is being used by Electron in that environment? Sounds like it has something to do with that, given that the default background color for our windows is blue. What happens when you start Signal Desktop with --disable-software-rasterizer
and --disable-gpu
?
I have the same issue, as @TheBlueMatt, running my signal-client in a docker-environment. Starting with the following options, results in the picture below:
--no-sandbox --disable-software-rasterizer --disable-gpu
Somehow, these lines from the logs, look suspicious to me, without having any deeper knowledge of the code or electron itself.
{"name":"log","hostname":"c066199424cb","pid":7549,"level":40,"msg":"(electron) The default value of app.allowRendererProcessReuse is deprecated, it is currently \"false\". It will change to be \"true\" in Electron 9. For more information please check https://github.com/electron/electron/issues/18397","time":"2020-03-13T10:52:07.915Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":40,"msg":"(electron) 'setAutoHideMenuBar function' is deprecated and will be removed. Please use 'autoHideMenuBar property' instead.","time":"2020-03-13T10:52:12.358Z","v":0}
The complete logs from the docker-container:
Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
Set Windows Application User Model ID (AUMID) { appUserModelId: 'org.whispersystems.signal-desktop' }
NODE_ENV production
NODE_CONFIG_DIR /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/signal/.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
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"app ready","time":"2020-03-13T10:52:07.724Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"starting version 1.32.1","time":"2020-03-13T10:52:07.725Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"updateSchema:\n Current user_version: 19;\n Most recent db schema: 19;\n SQLite version: 3.30.1;\n SQLCipher version: 4.3.0 community;\n (deprecated) schema_version: 94;\n","time":"2020-03-13T10:52:07.773Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"Initializing BrowserWindow config: {\"show\":true,\"width\":800,\"height\":610,\"minWidth\":680,\"minHeight\":550,\"autoHideMenuBar\":false,\"backgroundColor\":\"#2090EA\",\"vibrancy\":\"appearance-based\",\"webPreferences\":{\"nodeIntegration\":false,\"nodeIntegrationInWorker\":false,\"contextIsolation\":false,\"preload\":\"/opt/Signal/resources/app.asar/preload.js\",\"nativeWindowOpen\":true},\"icon\":\"/opt/Signal/resources/app.asar/images/icon_256.png\",\"x\":598,\"y\":155}","time":"2020-03-13T10:52:07.802Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":40,"msg":"(electron) The default value of app.allowRendererProcessReuse is deprecated, it is currently \"false\". It will change to be \"true\" in Electron 9. For more information please check https://github.com/electron/electron/issues/18397","time":"2020-03-13T10:52:07.915Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"Begin ensuring permissions","time":"2020-03-13T10:52:07.979Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"Ensuring file permissions for 2 files","time":"2020-03-13T10:52:07.999Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"Finish ensuring permissions in 30ms","time":"2020-03-13T10:52:08.011Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":40,"msg":"(electron) 'systemPreferences.isDarkMode()' is deprecated and will be removed. Please use 'nativeTheme.shouldUseDarkColors' instead.","time":"2020-03-13T10:52:08.424Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":40,"msg":"(electron) 'isMenuBarAutoHide function' is deprecated and will be removed. Please use 'autoHideMenuBar property' instead.","time":"2020-03-13T10:52:08.488Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"Updating BrowserWindow config: {\"maximized\":false,\"autoHideMenuBar\":false,\"fullscreen\":false,\"width\":800,\"height\":610,\"x\":602,\"y\":184}","time":"2020-03-13T10:52:08.488Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"config/set: Saving ephemeral config to disk","time":"2020-03-13T10:52:08.489Z","v":0}
(node:7600) Electron: Loading non-context-aware native module in renderer: '/tmp/.org.chromium.Chromium.ieJin4'. This is deprecated, see https://github.com/electron/electron/issues/18397.
(node:7600) Electron: Loading non-context-aware native module in renderer: '/tmp/.org.chromium.Chromium.ieJin4'. This is deprecated, see https://github.com/electron/electron/issues/18397.
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:10.607Z","msg":"x-attr dependncy did not load successfully","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:10.801Z","msg":"Detected non-English locale on Linux. Disabling spell check.","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:10.801Z","msg":"preload complete","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":40,"msg":"(electron) 'setAutoHideMenuBar function' is deprecated and will be removed. Please use 'autoHideMenuBar property' instead.","time":"2020-03-13T10:52:12.358Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"msg":"updater/start: Updates disabled - not starting new version checks","time":"2020-03-13T10:52:12.368Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:11.644Z","msg":"pre-main prep time: 5 ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:11.886Z","msg":"background page reloaded","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:11.886Z","msg":"environment: production","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:11.945Z","msg":"SQL channel job 1 (getItemById) succeeded in 57ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:11.945Z","msg":"Storage fetch","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.240Z","msg":"SQL channel job 2 (getAllItems) succeeded in 295ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.276Z","msg":"SQL channel job 3 (createOrUpdateItem) succeeded in 34ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.335Z","msg":"SQL channel job 4 (createOrUpdateItem) succeeded in 59ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.336Z","msg":"SQL channel job 5 (createOrUpdateItem) succeeded in 60ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.336Z","msg":"Starting background data migration. Target version: 10","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.337Z","msg":"ConversationController: starting initial fetch","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.340Z","msg":"ConversationController: done with initial fetch","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.345Z","msg":"SignalProtocolStore: Finished caching sessions data","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.345Z","msg":"SignalProtocolStore: Finished caching identityKeys data","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.346Z","msg":"SignalProtocolStore: Finished caching signedPreKeys data","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.346Z","msg":"SignalProtocolStore: Finished caching preKeys data","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.351Z","msg":"Cleanup: starting...","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.352Z","msg":"Initializing network observer every 5000ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.353Z","msg":"Build expires: 2020-06-04T22:56:08.000Z","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.354Z","msg":"Cleanup: Found 0 messages for cleanup","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.354Z","msg":"Cleanup: complete","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.354Z","msg":"listening for registration events","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.385Z","msg":"opening provisioning socket https://textsecure-service.whispersystems.org","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.405Z","msg":"SQL channel job 18 (getNextExpiringMessage) succeeded in 47ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.408Z","msg":"SQL channel job 19 (getNextTapToViewMessageToAgeOut) succeeded in 50ms","v":0}
{"name":"log","hostname":"c066199424cb","pid":7549,"level":30,"time":"2020-03-13T10:52:12.881Z","msg":"provisioning socket open","v":0}
I'm seeing the same issue. I run the desktop from a mint 18 system. Tried with production and beta, same result.
All: Please provide the details of your graphics hardware and linux kernel. Please also try running with this extra command, see if it makes a difference: --enable-logging
. The goal is to get us an error message, warning, or common configuration we can use to start an investigation.
Another thing that would help is trying stable and develop-channel chromium builds. Electron shares most of its underlying technology with chromium.
This is exactly the same issue that was mentioned by @maysara in issue 3281 (the blue screen issue). Funnily the white screen issue appeared, once the blue screen issue was fixed.
I tried various Docker setups and I was able to reproduce it with all of them (maybe it's time for an official Docker image?). So I guess you will be able to reproduce it as well, with one of them.
So you could try this
$ docker run -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e XAUTHORITY=/tmp/xauth --device /dev/snd -v /dev/shm:/dev/shm -v $XAUTHORITY:/tmp/xauth --hostname 'sigaldebug' --name signal --privileged rdvde/signal -c '--no-sandbox --enable-logging --disable-software-rasterizer --disable-gpu'
Search for Dockerfiles
on GitHub by searching "signal-desktop" language:Dockerfile
(or click this link) and order by Recently Indexed
to ensure not to get an outdated one.
In my case I found this one (but it really doesn't matter — I really tried a lot in case there's any difference)
Add your preferred debugging parameters, so that it looks like --no-sandbox --enable-logging --disable-software-rasterizer --disable-gpu
for example.
Build the image by executing docker build -t signal_debug .
Ensure Docker can use your host X server: xhost +local:docker
Run
$ docker run -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e XAUTHORITY=/tmp/xauth --device /dev/snd -v /dev/shm:/dev/shm -v $XAUTHORITY:/tmp/xauth -v $XAUTHORITY:/user/.Xauthority --privileged --name signal signal_debug -c '--no-sandbox --enable-logging --disable-software-rasterizer --disable-gpu'
Another thing that would help is trying stable and develop-channel chromium builds.
EDIT: Chromium does not appear to have this issue when following this post. It even works perfectly fine after switching to FROM debian:stable-slim
. So the version should be the same. I'm not quite sure what the difference is, though. :thinking:
Seems that running electron apps inside Docker has had problems in the past: https://github.com/electron/electron/issues/16892
No open issues, though. The person who entered that bug didn't come back and update it for more recent versions of Electron. I think it might be time for some of you in this thread to assemble a simple repro with just basic Electron instead of Signal Desktop, and then we can pursue a fix from the Electron folks.
And, one thing you might try is updating Electron to 8.1.x or 9.x to see if that makes a difference.
Hmm. I'm not set up to do full builds of electron, but I'm happy to test builds against newer versions of electron if that helps. I assume there was an electron upgrade between 1.31.0 and 1.32.1 (which we could at least use as info for an upstream bug?). Indeed, no combo of --disable-gpu and --disable-software-rasterizer changed anything for me.
Sure, no need to do builds of Signal Desktop or Electron. It would be valuable for is if you run plain Electron, no user-land code, in that same configuration - the dockerfile listed here might be an interesting starting point: https://github.com/electron/electron/issues/16892
All: Please provide the details of your graphics hardware and linux kernel. Please also try running with this extra command, see if it makes a difference:
--enable-logging
. The goal is to get us an error message, warning, or common configuration we can use to start an investigation.
Hi,
My context is:
I ssh into the linux machine (ssh -Y) so I can get terms on the freebsd desktop. I was able therefore to use signal via the freebsd-desktop. This used to work. Now I get the signal window with a blank screen.
If I run signal-desktop on the linux machine locally, signal works as expected. Maybe some issue with xorg? electron is not installed on the linux machine - it was installed as per the instructions on the signal website.
Right, I also don't have an electron (or nvm) toolchain installed anywhere. We could at least open an issue upstream so they can advise - what version of electron is used in signal-desktop so that I can do so?
Currently 8.0.3: https://github.com/signalapp/Signal-Desktop/blob/development/package.json#L209
Soon to be 8.1.1.
Reported upstream as https://github.com/electron/electron/issues/22775 so for those who also see this issue it likely makes sense to track that/help debug there.
Same thing happened to me. If I downgrade the package to 1.31.0, everything works again. Something definitely changed in 1.32.1 that makes it not work.
v1.31.0
was on Electron 6.1.4
and v1.32.1
is on Electron 8.0.3
. That's the change.
i have the same issue running in lxc container, after upgrade to deb 1.31.1 i have just white(ish) screen using ssh -X to run it "remotely"
getting few warnings on run
$ Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
Set Windows Application User Model ID (AUMID) { appUserModelId: 'org.whispersystems.signal-desktop' }
NODE_ENV production
NODE_CONFIG_DIR /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/ghormoon/.config/Signal
config/get: Successfully read user config file
x-attr dependncy did not load successfully
config/get: Successfully read ephemeral config file
ATTENTION: default value of option force_s3tc_enable overridden by environment.
(node:520) Electron: Loading non-context-aware native module in renderer: '/tmp/.org.chromium.Chromium.9lwRqy'. This is deprecated, see https://github.com/electron/electron/issues/18397.
(node:520) Electron: Loading non-context-aware native module in renderer: `'/tmp/.org.chromium.Chromium.9lwRqy'. This is deprecated, see https://github.com/electron/electron/issues/18397.
after downgrade to 1.31.0 and "chmod 4755 /opt/Signal/chrome-sandbox" it works again
after downgrade to 1.31.0 and "chmod 4755 /opt/Signal/chrome-sandbox" it works again
The answer why's that, is just in the comment above yours:
v1.31.0
was on Electron6.1.4
andv1.32.1
is on Electron8.0.3
.
So we already know that v1.31.0
and lower is working.
The corresponding upstream issue was also already mentioned:
Reported upstream as electron/electron#22775 so for those who also see this issue it likely makes sense to track that/help debug there.
v1.31.0
was on Electron6.1.4
andv1.32.1
is on Electron8.0.3
.So we already know that
v1.31.0
and lower is working.
Maybe it would make sense to try and bisect to find which version of Electron from 6.1.4 to 8.0.3 causes this?
I'm wondering why there was such a huge version bump in the first place.
The corresponding upstream issue was also already mentioned:
Reported upstream as electron/electron#22775 so for those who also see this issue it likely makes sense to track that/help debug there.
Just filing a bug with electron, that Signal doesn't work with the new electron, isn't going to get a lot of traction. Why would electron devs dig into why signal isn't working right? It seems like Signal desktop devs should work with the electron people to debug this, rather than just throw it at them and say 'it doesn't work'... at minimum bisect to try to find where the issue actually arrived, which would help narrow down where the actual problem is.
Maybe it would make sense to try and bisect to find which version of Electron from 6.1.4 to 8.0.3 causes this?
Yes it would. Feel free to do so. :+1:
Why would electron devs dig into why signal isn't working right?
Because it is an electron bug Chromium bug (!) that affects all applications using that version and it would make sense to handle that issue where it is caused, right?
at minimum bisect to try to find where the issue actually arrived, which would help narrow down where the actual problem is.
Excatly, there's even a good starting point for an electron Dockerfile, as mentioned earlier by Scott. So you have everything you need for git bisecting. :+1:
v1.31.0
was on Electron6.1.4
andv1.32.1
is on Electron8.0.3
. That's the change.
How can I downgrade to v.1.31.0 ? signal-desktop running on Mint (ubuntu-derived)
did you install using their repo? if yes, then just apt-get install signal-desktop=1.31.0
awesome! I know about freebsd, but almost nothing about apt/linux, so thanks for this
did you install using their repo? if yes, then just apt-get install signal-desktop=1.31.0
unfortunately this no longer works. Today, I had found out that somehow signal had auto-updated itself to 1.32 and now running apt update was asking me to update it to 1.33. So tried running signal before apt. White screen again, so next ran apt update. Same white screen.
So deinstalled signal desktop and ran this: apt-get install signal-desktop=1.31.0
the result:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Version ‘1.31.0’ for ‘signal-desktop’ was not found
How can I get back to 1.31, and (I realise this second question isn't really a signal question), how can I make it stop updating until the signal/electron problem is fixed?
thanks
Thanks to @wpeckr we have a workaround for this issue. Start Signal Desktop with the --ignore-gpu-blacklist
command-line option.
Upstream bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1048186
I found that the following worked:
QT_X11_NO_MITSHM=1 _X11_NO_MITSHM=1 _MITSHM=0 /usr/bin/signal-desktop
from https://bugs.chromium.org/p/chromium/issues/detail?id=1048186#c8
-- micah
I was running into this issue when running electron in docker. It appears that chromium is trying to use shared memory, but fails and doesn't fall back correctly, resulting in a blank screen. @micah's solution works because the environment variable QT_X11_NO_MITSHM=1
tells chromium to not use shared memory. I'm not sure that the other two environment variables _X11_NO_MITSHM=1
and _MITSHM=0
are necessary (explanation why in my comment linked below).
Other possible solutions are:
--no-xshm
flag to electron/signal: ./electron --no-xshm
QT_X11_NO_MITSHM=1
via the command line:
export QT_X11_NO_MITSHM=1
--ipc=host
flag in the docker run command: docker run --ipc=host
For those curious as to why these solutions work/want more information to dig deeper into the bug, I have a more in-depth explanation here: https://github.com/electron/electron/issues/22775#issuecomment-616023334
now on v. 5.32, the trick is to use --in-process-gpu :/
After upgrading from v1.31.0 (installed via https://updates.signal.org/desktop/apt) to v1.32.1 the conversation pane no longer loads and instead a window appears that is only white. Downgrading to v1.31.0 fixed the issue again.
debug log after downgrade: https://0bin.net/paste/LmuKEcI-Ku86x49d#UdKkhFyNi-p6ANbJKh8XHbSfoyky0GCkgJdoThwrcG1 debug log on 1.32.1: https://0bin.net/paste/461AypIFQ395vsCg#uvcoo+SXlr2zJwiZgrz-6OjD6ixcbnJv6v9xgq/4XUF
The client is running inside an LXC container (with /dev/shm mounted and an init running) with X available via a /tmp/.X11-unix bind-mount.