signalapp / Signal-Desktop

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

Core Dump on wayland #6260

Open benni347 opened 1 year ago

benni347 commented 1 year ago

Bug Description

When launching signal with the arguments: --enable-features=UseOzonePlatform --ozone-platform=wayland, it shows the window briefly and then sometimes coredumps.

Steps to Reproduce

  1. Start Signal like the following way: signal-desktop --enable-features=UseOzonePlatform --ozone-platform=wayland
  2. Wait three seconds.

Actual Result:

It coredumps

Expected Result:

It runs fine

Platform Info

Signal Version:

Signal 6.3.0

Operating System:

EndeavourOS with hyprland compositor

Linked Device Version:

N/A

Link to Debug Log

Couldn't copy the URL somehow. See the attached file for the debug log instead. debuglog.txt

Alphare commented 1 year ago

Can confirm, I also get a coredump with a segfault. The bug is not always immediate, I even got one time where it was seemingly fine.

Platform Info

Signal Version:

Signal 6.3.0

Operating System:

Debian testing with swaywm compositor

Linked Device Version:

N/A

scottnonnenberg-signal commented 1 year ago

Do you get a chance to submit a crash report to Signal when you restart?

Or maybe you could try starting it in wayland, getting the crash, and then starting it under X and then you could submit the crash report to us?

samsapti commented 1 year ago

I can confirm as well. I've been able to generate a coredump file, @scottnonnenberg-signal do your want me to upload it somewhere?

Debug log from application start right after the crashing instance: https://debuglogs.org/desktop/6.4.1/66eb78545db94b52e4acd98264ce444ab915bd96b2986d0dc15f4d9cf0c5df2f.gz

Platform info

scottnonnenberg-signal commented 1 year ago

Related: https://github.com/signalapp/Signal-Desktop/issues/6247

scottnonnenberg-signal commented 1 year ago

@samsapti Ideally what we'd get from you is a crash dump from within Signal Desktop. It's only available on beta installs, but it's much more likely that we'll get useful information out of it. If you start up, crash, and then start up successfully, it should give you the ability to upload it.

tpeacock19 commented 1 year ago

Here is a crash dump from my system:

https://debuglogs.org/desktop/6.9.0-beta.1/desktop-crash-1d977b44c016d5aca80d006cc01a0df99b3f7f5708485ef4345fdd09eec5d6c5.dmp

Signal version: 6.9.0-beta.1 OS: archlinux WM: River

scottnonnenberg-signal commented 1 year ago

@tpeacock19 Thanks for that crash dump - that gives us a call stack we can work with!

terraboops commented 1 year ago

For anyone looking for a workaround: signal-desktop 6.2.0-1 does not have this issue on Wayland.

For project maintainers: would it be helpful to generate more crash dumps? I'd be happy to do that if it helps. :)

skeet70 commented 1 year ago

I updated my nixos system and started running into this issue. I'm on 6.7.0 now, not sure what I was on before.

λ ~/ signal-desktop --enable-features=UseOzonePlatform --ozone-platform=wayland
Set Windows Application User Model ID (AUMID) { appUserModelId: 'org.whispersystems.signal-desktop' }
NODE_ENV production
NODE_CONFIG_DIR /nix/store/dc7x1m6v4h4sqclsp96fcx803fc1qm03-signal-desktop-6.7.0/lib/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/mumu/.config/Signal
config/get: Successfully read user config file
config/get: Successfully read ephemeral config file
making app single instance
{"level":30,"time":"2023-03-13T22:50:37.571Z","msg":"app.ready: preferred system locales: en-US, en-US, en-US, en, en"}
{"level":30,"time":"2023-03-13T22:50:37.577Z","msg":"Loading preferred system locale: 'en-US'"}
{"level":40,"time":"2023-03-13T22:50:37.577Z","msg":"Problem loading messages for locale 'en-US', Error: ENOENT, _locales/en-US/messages.json not found in [REDACTED]"}
{"level":40,"time":"2023-03-13T22:50:37.578Z","msg":"Falling back to parent language: 'en'"}
{"level":30,"time":"2023-03-13T22:50:37.616Z","msg":"app ready"}
{"level":30,"time":"2023-03-13T22:50:37.616Z","msg":"starting version 6.7.0"}
{"level":30,"time":"2023-03-13T22:50:37.616Z","msg":"media access status [object Undefined] [object Undefined]"}
{"level":30,"time":"2023-03-13T22:50:37.617Z","msg":"got fast theme-setting value dark"}
{"level":30,"time":"2023-03-13T22:50:37.618Z","msg":"got fast theme-setting value dark"}
{"level":30,"time":"2023-03-13T22:50:37.618Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2023-03-13T22:50:37.619Z","msg":"getSystemTraySetting had no flags and did no DB lookups. Returning DoNotUseSystemTray"}
{"level":30,"time":"2023-03-13T22:50:37.619Z","msg":"Initializing BrowserWindow config: {\"show\":false,\"width\":1916,\"height\":1064,\"minWidth\":300,\"minHeight\":200,\"autoHideMenuBar\":false,\"titleBarStyle\":\"default\",\"titleBarOverlay\":false,\"backgroundColor\":\"#121212\",\"webPreferences\":{\"devTools\":false,\"spellcheck\":true,\"nodeIntegration\":false,\"nodeIntegrationInWorker\":false,\"sandbox\":false,\"contextIsolation\":true,\"preload\":\"[REDACTED]/preload.bundle.js\",\"backgroundThrottling\":true,\"enablePreferredSizeMode\":true,\"disableBlinkFeatures\":\"Accelerated2dCanvas,AcceleratedSmallCanvases\"},\"icon\":\"[REDACTED]/images/signal-logo-desktop-linux.png\",\"x\":0,\"y\":0}"}
{"level":30,"time":"2023-03-13T22:50:37.627Z","msg":"spellcheck: user locale: en-US"}
{"level":30,"time":"2023-03-13T22:50:37.627Z","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":"2023-03-13T22:50:37.627Z","msg":"spellcheck: setting languages to:  [\"en-US\"]"}
{"level":30,"time":"2023-03-13T22:50:37.628Z","msg":"got fast theme-setting value dark"}
{"level":30,"time":"2023-03-13T22:50:37.689Z","msg":"MainSQL: updateSchema:\n  Current user_version: 78;\n  Most recent db schema: 78;\n  SQLite version: 3.39.4;\n  SQLCipher version: 4.5.3 community;\n  (deprecated) schema_version: 339;\n"}
{"level":30,"time":"2023-03-13T22:50:38.498Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2023-03-13T22:50:38.501Z","msg":"System tray service: created"}
{"level":30,"time":"2023-03-13T22:50:38.501Z","msg":"System tray service: updating main window. Previously, there was not a window, and now there is"}
{"level":30,"time":"2023-03-13T22:50:38.501Z","msg":"System tray service: rendering no tray"}
{"level":30,"time":"2023-03-13T22:50:38.502Z","msg":"Begin ensuring permissions"}
{"level":30,"time":"2023-03-13T22:50:38.502Z","msg":"main window is ready-to-show"}
{"level":30,"time":"2023-03-13T22:50:38.502Z","msg":"showing main window"}
{"level":30,"time":"2023-03-13T22:50:38.503Z","msg":"System tray service: rendering no tray"}
{"level":30,"time":"2023-03-13T22:50:38.545Z","msg":"Ensuring file permissions for 4 files"}
{"level":30,"time":"2023-03-13T22:50:38.547Z","msg":"Finish ensuring permissions in 45ms"}
{"level":30,"time":"2023-03-13T22:50:38.878Z","msg":"MainSQL: slow query createOrUpdateItem duration=68ms"}
{"level":30,"time":"2023-03-13T22:50:39.108Z","msg":"MainSQL: slow query createOrUpdateItem duration=70ms"}
{"level":30,"time":"2023-03-13T22:50:39.113Z","msg":"sending `database-ready`"}
{"level":30,"time":"2023-03-13T22:50:39.340Z","msg":"Prevent display sleep service: allowing display sleep"}
{"level":30,"time":"2023-03-13T22:50:39.340Z","msg":"Background throttling enabled because no call is active"}
{"level":30,"time":"2023-03-13T22:50:39.749Z","msg":"updater/start: Updates disabled - not starting new version checks"}
{"level":30,"time":"2023-03-13T22:50:39.794Z","msg":"App loaded - time: 2181"}
{"level":30,"time":"2023-03-13T22:50:39.794Z","msg":"SQL init - time: 78"}
{"level":30,"time":"2023-03-13T22:50:39.794Z","msg":"Preload - time: 526"}
{"level":30,"time":"2023-03-13T22:50:39.794Z","msg":"WebSocket connect - time: 1100"}
{"level":30,"time":"2023-03-13T22:50:39.794Z","msg":"Processed count: 0"}
{"level":30,"time":"2023-03-13T22:50:39.794Z","msg":"Messages per second: 0"}
{"level":30,"time":"2023-03-13T22:50:40.116Z","msg":"MainSQL: slow query insertSentProto duration=86ms"}
{"level":30,"time":"2023-03-13T22:50:40.197Z","msg":"MainSQL: slow query deleteJob duration=80ms"}
{"level":30,"time":"2023-03-13T22:50:41.343Z","msg":"MainSQL: slow query commitDecryptResult duration=70ms"}
{"level":30,"time":"2023-03-13T22:50:42.014Z","msg":"MainSQL: slow query createOrUpdateItem duration=69ms"}
[1]    8749 segmentation fault (core dumped)  signal-desktop --enable-features=UseOzonePlatform --ozone-platform=wayland

I don't have X on my system or an easy way to get X set up to get debug logs.

I've attached the coredump system log as well. signal-coredump.log

ghost commented 1 year ago

For anyone looking for a workaround: signal-desktop 6.2.0-1 does not have this issue on Wayland.

Intermittent crashes in Wayland on startup persist with 6.18.1

jamesob commented 1 year ago

I'm seeing this very consistently under sway on Arch with signal version 6.25.0-beta.1:

Set Windows Application User Model ID (AUMID) { appUserModelId: 'org.whispersystems.signal-desktop-beta' }
NODE_ENV production
NODE_CONFIG_DIR /usr/lib/signal-desktop-beta/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/james/.config/Signal Beta
config/get: Successfully read user config file
config/get: Successfully read ephemeral config file
getLogger: Logger not yet initialized!
crashReporter: enabled
making app single instance
{"level":30,"time":"2023-07-27T14:18:07.630Z","msg":"crashReporter: enabled"}
{"level":30,"time":"2023-07-27T14:18:07.631Z","msg":"app.ready: preferred system locales: en-US, en"}
{"level":30,"time":"2023-07-27T14:18:07.631Z","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":"2023-07-27T14:18:07.631Z","msg":"locale: Preferred locales:  en-US, en"}
{"level":30,"time":"2023-07-27T14:18:07.632Z","msg":"locale: Matched locale: en"}
{"level":30,"time":"2023-07-27T14:18:07.649Z","msg":"locale: Text info direction for en: ltr"}
{"level":30,"time":"2023-07-27T14:18:07.649Z","msg":"getSystemTraySetting saw --use-tray-icon flag. Returning MinimizeToSystemTray"}
{"level":30,"time":"2023-07-27T14:18:07.650Z","msg":"app ready"}
{"level":30,"time":"2023-07-27T14:18:07.651Z","msg":"starting version 6.25.0-beta.1"}
{"level":30,"time":"2023-07-27T14:18:07.651Z","msg":"media access status [object Undefined] [object Undefined]"}
{"level":30,"time":"2023-07-27T14:18:07.652Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-07-27T14:18:07.654Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-07-27T14:18:07.654Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2023-07-27T14:18:07.654Z","msg":"Initializing BrowserWindow config: {\"show\":false,\"width\":1916,\"height\":2116,\"minWidth\":300,\"minHeight\":200,\"autoHideMenuBar\":false,\"titleBarStyle\":\"default\",\"titleBarOverlay\":false,\"backgroundColor\":\"#3a76f0\",\"webPreferences\":{\"devTools\":true,\"spellcheck\":true,\"enableBlinkFeatures\":\"CSSPseudoDir,CSSLogical\",\"nodeIntegration\":false,\"nodeIntegrationInWorker\":false,\"sandbox\":false,\"contextIsolation\":true,\"preload\":\"[REDACTED]/preload.bundle.js\",\"backgroundThrottling\":true,\"enablePreferredSizeMode\":true,\"disableBlinkFeatures\":\"Accelerated2dCanvas,AcceleratedSmallCanvases\"},\"icon\":\"[REDACTED]/images/signal-logo-desktop-linux.png\",\"x\":0,\"y\":0}"}
{"level":30,"time":"2023-07-27T14:18:07.660Z","msg":"spellcheck: user locales: [\"en-US\",\"en\"]"}
{"level":30,"time":"2023-07-27T14:18:07.660Z","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":"2023-07-27T14:18:07.660Z","msg":"spellcheck: setting languages to: [\"en-US\",\"en\"]"}
{"level":30,"time":"2023-07-27T14:18:07.666Z","msg":"MainSQL: updateSchema:\n  Current user_version: 84;\n  Most recent db schema: 84;\n  SQLite version: 3.39.4;\n  SQLCipher version: 4.5.3 community;\n  (deprecated) schema_version: 367;\n"}
{"level":30,"time":"2023-07-27T14:18:07.903Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-07-27T14:18:08.359Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2023-07-27T14:18:08.363Z","msg":"System tray service: created"}
{"level":30,"time":"2023-07-27T14:18:08.363Z","msg":"System tray service: updating main window. Previously, there was not a window, and now there is"}
{"level":30,"time":"2023-07-27T14:18:08.363Z","msg":"System tray service: rendering no tray"}
{"level":30,"time":"2023-07-27T14:18:08.363Z","msg":"System tray service: enabling"}
{"level":30,"time":"2023-07-27T14:18:08.363Z","msg":"System tray service: rendering the tray"}
{"level":30,"time":"2023-07-27T14:18:08.363Z","msg":"System tray service: creating the tray"}
{"level":30,"time":"2023-07-27T14:18:08.365Z","msg":"Begin ensuring permissions"}
{"level":30,"time":"2023-07-27T14:18:08.366Z","msg":"Ensuring file permissions for 4 files"}
{"level":30,"time":"2023-07-27T14:18:08.367Z","msg":"Finish ensuring permissions in 2ms"}
{"level":30,"time":"2023-07-27T14:18:08.600Z","msg":"Prevent display sleep service: allowing display sleep"}
{"level":30,"time":"2023-07-27T14:18:08.600Z","msg":"Background throttling enabled because no call is active"}
{"level":30,"time":"2023-07-27T14:18:09.580Z","msg":"updater/start: Updates disabled - not starting new version checks"}
{"level":30,"time":"2023-07-27T14:18:09.580Z","msg":"System tray service: setting unread count to 15"}
{"level":30,"time":"2023-07-27T14:18:09.580Z","msg":"System tray service: rendering the tray"}
{"level":30,"time":"2023-07-27T14:18:09.582Z","msg":"App loaded - time: 1933"}
{"level":30,"time":"2023-07-27T14:18:09.582Z","msg":"SQL init - time: 17"}
{"level":30,"time":"2023-07-27T14:18:09.582Z","msg":"Preload - time: 448"}
{"level":30,"time":"2023-07-27T14:18:09.582Z","msg":"WebSocket connect - time: 912"}
{"level":30,"time":"2023-07-27T14:18:09.582Z","msg":"Processed count: 0"}
{"level":30,"time":"2023-07-27T14:18:09.582Z","msg":"Messages per second: 0"}
{"level":40,"time":"2023-07-27T14:18:09.592Z","msg":"crashReports: 4 pending dumps found"}
{"level":30,"time":"2023-07-27T14:19:53.442Z","msg":"System tray service: rendering the tray"}
zsh: segmentation fault (core dumped)  signal

It makes Signal basically unusable for me. I have to start it up ~10 times to get one session to stick.

ghost commented 1 year ago

@jamesob I have observed two kinds of crashes:

  1. failure to start (#6368)
  2. failure to keep running for more than 10 seconds after successful start

The first kind can be solved by sticking with 6.18.1 and that isn't a solution, just what I and other Wayland users do to get by. It can take multiple attempts to start 6.18.1 as well, but usually less than 5.

ghost commented 1 year ago

Sway workaround for startup crash:

for_window [app_id="signal"] floating enable

Found the workaround here: https://github.com/vector-im/element-desktop/issues/1026#issuecomment-1652406627

ofosos commented 12 months ago

Same problem on river/wayland, same fix as for Sway:

riverctl rule-add float -app-id "signal*"
secresearch-rg commented 10 months ago

The issue also exists using GNOME 45.0 (Arch Linux x86_64, up-to-date, both on the regular Linux and Linux LTS kernel). As this is no floating window manager I would assume a similar workaround won't exist. Makes me wonder why the workaround applies for Sway and River.

For me, the issue only started getting bad about maybe 2-4 weeks ago - did not have the crashes as often previously. Maybe every other day. Now the crashes with Environment Variables set to use Wayland are reproducible on almost every launch of the Signal app.

Signal however works fine when using XWayland.

Signal is at version 6.34.0 from the Arch Linux repos.

deviant commented 10 months ago

I think this may be related to whether the compositor has the window marked as maximized or not. I'm running Sway. When running under XWayland, toggling the window between floating or not produces log lines like the following:

Updating BrowserWindow config: %s {"maximized":false,"autoHideMenuBar":false,"fullscreen":false,"width":1122,"height":1098,"x":2319,"y":2151}

where "maximized":false when it's floating, and "maximized":true when it's tiled. Under Wayland, with --ozone-platform-hint=auto, it unfortunately crashes before it can emit the relevant log line, but I imagine the maximized attribute changes similarly. I initially thought it might be due to the compositor forcibly resizing the surface, but manually resizing works just fine.