signalapp / Signal-Desktop

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

Render process crash when minimized on Linux ARM with 16k page sizes (7.42+) #7166

Closed AtmosphericIgnition closed 11 hours ago

AtmosphericIgnition commented 1 month ago

Using a supported version?

Overall summary

I initially encountered this issue issue while using a third-party package, but I've been able to reproduce this by following the instructions for building from source. GitHub won't allow me to submit this without checking the "I am running the official version of Signal" box.

I can reproduce this issue on: v7.42 of the unofficial package own build of 7.42 own build of main (eba4b8c00a4bffc6f1753bb0ed0a521f7fae383a)

I can't reproduce this on: My own build of 7.41 v7.41 of the unofficial package

Furthermore, my builds of 7.42+ cannot pass npm test. They throw the same error dialog box, which makes the tests stop.

Steps to reproduce

  1. Start Signal Desktop
  2. Minimize or close application to tray
  3. Get a render process crash notification

I tried running Signal without the--ozone-platform=wayland --use-tray-icon flags, but nothing changed.

Expected result

The application shouldn't crash.

Actual result

The application crashes with the following error:

Error: Reason: crashed, Exit Code: 133
at App. ([REDACTED]/app/global_errors.js:94.7)
at App.emit (node:events:518:28)
at WebContents. (node:electron/js2c/browser_init:2:87957)
at WebContents.emit (node:events:518:28)

Terminal output:

signal-desktop --use-tray-icon --ozone-platform=wayland
Set Windows Application User Model ID (AUMID) { AUMID: 'org.whispersystems.signal-desktop' }
NODE_ENV production
NODE_CONFIG_DIR /usr/lib64/signal-desktop/resources/app.asar/config
NODE_CONFIG {}
ALLOW_CONFIG_MUTATIONS undefined
HOSTNAME Asahi
NODE_APP_INSTANCE undefined
SUPPRESS_NO_CONFIG_WARNING undefined
SIGNAL_ENABLE_HTTP undefined
userData: /home/myusername/.config/Signal
config/get: Successfully read user config file
config/get: Successfully read ephemeral config file
making app single instance
{"level":30,"time":"2025-02-13T19:13:26.505Z","msg":"got fast localeOverride setting null"}
{"level":30,"time":"2025-02-13T19:13:26.505Z","msg":"app.ready: hour cycle preference: UnknownPreference"}
{"level":30,"time":"2025-02-13T19:13:26.505Z","msg":"app.ready: preferred system locales: en-US, en"}
{"level":30,"time":"2025-02-13T19:13:26.506Z","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":"2025-02-13T19:13:26.506Z","msg":"locale: Preferred locales: en-US, en"}
{"level":30,"time":"2025-02-13T19:13:26.506Z","msg":"locale: Locale Override: null"}
{"level":30,"time":"2025-02-13T19:13:26.507Z","msg":"locale: Matched locale: en"}
{"level":40,"time":"2025-02-13T19:13:26.528Z","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":"2025-02-13T19:13:26.529Z","msg":"locale: Text info direction for en: ltr"}
{"level":30,"time":"2025-02-13T19:13:26.529Z","msg":"getSQLKey: decrypting key"}
{"level":30,"time":"2025-02-13T19:13:26.529Z","msg":"getSystemTraySetting saw --use-tray-icon flag. Returning MinimizeToSystemTray"}
{"level":30,"time":"2025-02-13T19:13:26.530Z","msg":"app ready"}
{"level":30,"time":"2025-02-13T19:13:26.530Z","msg":"starting version 7.42.0"}
{"level":30,"time":"2025-02-13T19:13:26.530Z","msg":"media access status [object Undefined] [object Undefined]"}
{"level":30,"time":"2025-02-13T19:13:26.531Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2025-02-13T19:13:26.535Z","msg":"MainSQL: updateSchema:\n  Current user_version: 1320;\n  Most recent db schema: 1320;\n  SQLite version: 3.46.1;\n  SQLCipher version: 4.6.1 community;\n  (deprecated) schema_version: 539;\n"}
{"level":30,"time":"2025-02-13T19:13:26.537Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2025-02-13T19:13:26.537Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2025-02-13T19:13:26.537Z","msg":"visibleOnAnyScreen(window): x=0, y=0, width=862, height=602"}
{"level":30,"time":"2025-02-13T19:13:26.537Z","msg":"visibleOnAnyScreen(display #58): x=0, y=0, width=1728, height=1080"}
{"level":30,"time":"2025-02-13T19:13:26.537Z","msg":"Initializing BrowserWindow config: {\"show\":false,\"width\":862,\"height\":602,\"minWidth\":300,\"minHeight\":200,\"autoHideMenuBar\":true,\"titleBarStyle\":\"default\",\"backgroundColor\":\"#121212\",\"webPreferences\":{\"devTools\":false,\"spellcheck\":true,\"enableBlinkFeatures\":\"CSSPseudoDir,CSSLogical\",\"enablePreferredSizeMode\":true,\"nodeIntegration\":false,\"nodeIntegrationInWorker\":false,\"sandbox\":false,\"contextIsolation\":true,\"preload\":\"[REDACTED]/preload.wrapper.js\",\"backgroundThrottling\":true,\"disableBlinkFeatures\":\"Accelerated2dCanvas,AcceleratedSmallCanvases\"},\"icon\":\"[REDACTED]/images/signal-logo-desktop-linux.png\",\"x\":0,\"y\":0}"}
{"level":30,"time":"2025-02-13T19:13:26.554Z","msg":"spellcheck: user locales: [\"en-US\",\"en\"]"}
{"level":30,"time":"2025-02-13T19:13:26.554Z","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":"2025-02-13T19:13:26.554Z","msg":"spellcheck: setting languages to: [\"en-US\",\"en\"]"}
{"level":30,"time":"2025-02-13T19:13:26.768Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2025-02-13T19:13:27.112Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2025-02-13T19:13:27.115Z","msg":"System tray service: created"}
{"level":30,"time":"2025-02-13T19:13:27.115Z","msg":"System tray service: updating main window. Previously, there was not a window, and now there is"}
{"level":30,"time":"2025-02-13T19:13:27.115Z","msg":"System tray service: rendering no tray"}
{"level":30,"time":"2025-02-13T19:13:27.115Z","msg":"System tray service: enabling"}
{"level":30,"time":"2025-02-13T19:13:27.115Z","msg":"System tray service: rendering the tray"}
{"level":30,"time":"2025-02-13T19:13:27.115Z","msg":"System tray service: creating the tray"}
{"level":30,"time":"2025-02-13T19:13:27.116Z","msg":"Begin ensuring permissions"}
{"level":30,"time":"2025-02-13T19:13:27.116Z","msg":"Ensuring file permissions for 4 files"}
{"level":30,"time":"2025-02-13T19:13:27.117Z","msg":"Finish ensuring permissions in 1ms"}
{"level":30,"time":"2025-02-13T19:13:27.225Z","msg":"Prevent display sleep service: allowing display sleep"}
{"level":30,"time":"2025-02-13T19:13:27.225Z","msg":"Background throttling enabled because no call is active"}
{"level":30,"time":"2025-02-13T19:13:27.250Z","msg":"updater/start: Updates disabled - not starting new version checks"}
{"level":30,"time":"2025-02-13T19:13:27.251Z","msg":"App loaded - time: 722"}
{"level":30,"time":"2025-02-13T19:13:27.251Z","msg":"SQL init - time: 30"}
{"level":30,"time":"2025-02-13T19:13:27.251Z","msg":"Preload - time: 334"}
{"level":30,"time":"2025-02-13T19:13:27.251Z","msg":"WebSocket connect - time: 151"}
{"level":30,"time":"2025-02-13T19:13:27.251Z","msg":"Processed count: 0"}
{"level":30,"time":"2025-02-13T19:13:27.251Z","msg":"Messages per second: 0"}
{"level":30,"time":"2025-02-13T19:13:27.251Z","msg":"Top 10 queries by cumulative duration (ms) over last 692ms during 'App Load': createOrUpdateItem: cumulative 14.89 | average: 4.96 | max: 13.81 | count: 3 ||| getAllKyberPreKeys: cumulative 4.57 | average: 4.57 | max: 4.57 | count: 1 ||| cleanupCallHistoryMessages: cumulative 2.28 | average: 2.28 | max: 2.28 | count: 1 ||| getAllConversations: cumulative 1.78 | average: 1.78 | max: 1.78 | count: 1 ||| getRecentStaleRingsAndMarkOlderMissed: cumulative 1.42 | average: 1.42 | max: 1.42 | count: 1 ||| getAllStickers: cumulative 0.87 | average: 0.87 | max: 0.87 | count: 1 ||| getItemById: cumulative 0.81 | average: 0.16 | max: 0.32 | count: 5 ||| getAllPreKeys: cumulative 0.73 | average: 0.73 | max: 0.73 | count: 1 ||| getJobsInQueue: cumulative 0.72 | average: 0.07 | max: 0.2 | count: 10 ||| getAllBadges: cumulative 0.65 | average: 0.65 | max: 0.65 | count: 1; Total cumulative duration of all SQL queries during this epoch: 33.14ms"}
{"level":30,"time":"2025-02-13T19:13:37.048Z","msg":"System tray service: rendering the tray"}
{"level":30,"time":"2025-02-13T19:13:37.176Z","msg":"main window is ready-to-show"}
{"level":30,"time":"2025-02-13T19:13:37.176Z","msg":"showing main window"}
{"level":30,"time":"2025-02-13T19:13:37.176Z","msg":"System tray service: rendering the tray"}
{"level":30,"time":"2025-02-13T19:13:37.559Z","msg":"Updating BrowserWindow config: %s {\"maximized\":false,\"autoHideMenuBar\":true,\"fullscreen\":false,\"width\":431,\"height\":301,\"x\":0,\"y\":0}"}
{"level":30,"time":"2025-02-13T19:13:37.561Z","msg":"config/set: Saving ephemeral config to disk"}
{"level":30,"time":"2025-02-13T19:13:37.564Z","msg":"config/set: Saved ephemeral config to disk"}
{"level":30,"time":"2025-02-13T19:13:43.684Z","msg":"Updating BrowserWindow config: %s {\"maximized\":false,\"autoHideMenuBar\":true,\"fullscreen\":false,\"width\":966,\"height\":611,\"x\":0,\"y\":0}"}
{"level":30,"time":"2025-02-13T19:13:43.685Z","msg":"config/set: Saving ephemeral config to disk"}
{"level":30,"time":"2025-02-13T19:13:43.687Z","msg":"config/set: Saved ephemeral config to disk"}
{"level":30,"time":"2025-02-13T19:13:44.438Z","msg":"close event {\"readyForShutdown\":false,\"shouldQuit\":false}"}
{"level":30,"time":"2025-02-13T19:13:44.440Z","msg":"maybeRequestCloseConfirmation: Checking to see if close confirmation is needed"}
{"level":30,"time":"2025-02-13T19:13:44.442Z","msg":"maybeRequestCloseConfirmation: Response received"}
{"level":30,"time":"2025-02-13T19:13:44.442Z","msg":"System tray service: rendering the tray"}
{"level":30,"time":"2025-02-13T19:13:44.445Z","msg":"close: not showing tray notice"}
Render process is gone: Error: Reason: crashed, Exit Code: 133
    at App.<anonymous> (/usr/lib64/signal-desktop/resources/app.asar/app/global_errors.js:94:7)
    at App.emit (node:events:518:28)
    at WebContents.<anonymous> (node:electron/js2c/browser_init:2:87957)
    at WebContents.emit (node:events:518:28)
{"level":50,"time":"2025-02-13T19:13:57.587Z","msg":"Render process is gone: Error: Reason: crashed, Exit Code: 133\n    at App.<anonymous> ([REDACTED]/app/global_errors.js:94:7)\n    at App.emit (node:events:518:28)\n    at WebContents.<anonymous> (node:electron/js2c/browser_init:2:87957)\n    at WebContents.emit (node:events:518:28)"}
{"level":30,"time":"2025-02-13T19:13:59.644Z","msg":"main window closed event"}
{"level":30,"time":"2025-02-13T19:13:59.644Z","msg":"System tray service: updating main window. Previously, there was a window, and now there is not"}
{"level":30,"time":"2025-02-13T19:13:59.644Z","msg":"System tray service: rendering no tray"}
{"level":30,"time":"2025-02-13T19:13:59.645Z","msg":"quit event {\"hasEventBeenPrevented\":false,\"windowCount\":0,\"mainWindowExists\":false}"}
[9137:0213/141359.719990:ERROR:wayland_event_watcher.cc(47)] libwayland: warning: queue 0x4c029c9e00 destroyed while proxies still attached:

[9137:0213/141359.720105:ERROR:wayland_event_watcher.cc(47)] libwayland:   wl_shm_pool#44 still attached

npm test of main (shortened):

...
  version utilities
    isProduction
      ✔ returns false for anything non-basic version number
      ✔ returns true for production version strings
    isBeta
      ✔ returns false for non-beta version strings
      ✔ returns true for beta version strings
    isAlpha
      ✔ returns false for non-alpha version strings
      ✔ returns true for Alpha version strings
    isAxolotl
      ✔ returns false for non-axolotl version strings
      ✔ returns true for Axolotl version strings
    isNightly
      ✔ returns false for non-nightly version strings
      ✔ returns true for nightly version strings
    isStaging
      ✔ returns false for non-staging version strings
      ✔ returns true for Staging version strings
    generateTaggedVersion
      ✔ uses the current date and provided shortSha
      ✔ same production version is semver.gt
      ✔ same beta version is semver.gt
      ✔ build earlier same day is semver.lt
      ✔ build previous day is semver.lt

  waitBatcher
    ✔ should schedule a full batch
    ✔ should schedule a partial batch
Flushing start test for waitBatcher items.length=1
Flushing complete test for waitBatcher
    ✔ should flush a partial batch
Flushing start test for waitBatcher items.length=1
Flushing complete test for waitBatcher
    ✔ should flush a partial batch with new items added
Pushing no-op to test for waitBatcher items.length=2
Flushing start test for waitBatcher items.length=1
Flushing complete test for waitBatcher
    ✔ #addNoopAndWait returns as soon as #2 is complete, but more have been added

  util/waitForAll
    ✔ returns result of provided tasks

  both/util/webSafeBase64
    ✔ roundtrips with all elements
    #toWebSafeBase64
      ✔ replaces +
      ✔ replaces /
      ✔ removes =
    #fromWebSafeBase64
      ✔ replaces -
      ✔ replaces _
      ✔ adds ===
      ✔ adds ==
      ✔ adds =

  1901 passing (23s)
  9 pending

> signal-desktop@7.45.0-alpha.1 test-electron
> node ts/scripts/test-electron.js

✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
  ⚠ link preview fetching fetchLinkPreviewImage handles JPEG images took 1013ms
✔
  ⚠ link preview fetching fetchLinkPreviewImage handles PNG images took 1037ms
✔✔✔
  ⚠ link preview fetching fetchLinkPreviewImage handles ICO images took 1009ms
✔✔✔
  ⚠ link preview fetching fetchLinkPreviewImage handles 301 redirects took 1013ms
✔✔✔✔✔✔Error: Exit code: 1
    at ChildProcess.<anonymous> (/home/myusername/Projects/Signal-Desktop/ts/scripts/test-electron.js:116:14)
    at ChildProcess.emit (node:events:518:28)
    at ChildProcess._handle.onexit (node:internal/child_process:293:12)
ERROR: "test-electron" exited with 1.

I have no idea if this is a bug with Electron, or something about my system specifically, given that I can reproduce this on specific versions by building from source, I still thought this was worth reporting. No idea whether the issue also happens in the unofficial Flatpak, since there is no official build for ARM64 Linux (unlike for Windows and macOS), and Flathub only repackages the official Debian package.

Please let me know if you need any more info from me.

Screenshots

Unofficial package: Image

npm test of main: Image

Signal version

7.42 - v7.45.0-alpha.1

Operating system

Linux (Fedora Asahi Remix)

Version of Signal on your phone

7.33.2 (Android)

Link to debug log

(this log is from the unofficial package) https://debuglogs.org/desktop/7.42.0/bf5273461e3eb5fe5a85cfcb3ea7df1530bb5db5f331809bc4df311b6b7b8a0d.gz

csergi commented 1 month ago

Was unable to reproduce on Ubuntu Linux (x64). Probably specific to Asahi or ARM

csergi commented 1 month ago

Also unable to reproduce on Fedora Linux (x64)

AtmosphericIgnition commented 1 month ago

I get that ARM Linux is not officially supported, so if there is no easy fix to this issue, feel free to close this ticket, and I guess I'll stick to 7.41 for the foreseeable future.

csergi commented 1 month ago

It appears emulating asahi linux isn't something that is going to be easy; the only apple silicon emulator I can find seems to be focused on the iphone 11, rather than an apple mac. The device tree is going to be wildly different, so it's not going to just work out of the box.

jamiebuilds-signal commented 1 month ago

It looks like the crash may be networking related:

INFO  2025-02-13T20:09:15.896Z background: navigator offline
INFO  2025-02-13T20:09:15.896Z SocketManager.onNavigatorOffline
INFO  2025-02-13T20:09:15.896Z SocketManager.check
INFO  2025-02-13T20:09:15.896Z WebSocketResources.KeepAlive(authenticated).send: Sending a keepalive message
INFO  2025-02-13T20:09:16.032Z background: navigator online
INFO  2025-02-13T20:09:16.032Z SocketManager.onNavigatorOnline
INFO  2025-02-13T20:09:16.032Z @signalapp/libsignal-client ConnectionManager: on_network_change libsignal_bridge_types::net rust/bridge/shared/types/src/net.rs:231
ERROR 2025-02-13T20:09:18.855Z Render process is gone: Error: Reason: crashed, Exit Code: 133
    at App.<anonymous> ([REDACTED]/app/global_errors.js:94:7)
    at App.emit (node:events:518:28)
    at WebContents.<anonymous> (node:electron/js2c/browser_init:2:87957)
    at WebContents.emit (node:events:518:28)
AtmosphericIgnition commented 1 month ago

Is is completely possible that this is about something that's wrong with my system, I don't know if anything changed between 7.41 and 7.42+ that could surface a problem like this. I've tried to build Signal as a native ARM Flatpak so I could figure out if the issue is on my system, but I haven't been able to get it to build correctly.

Feel free to close this if you don't think this is worth investigating.

jamiebuilds-signal commented 1 month ago

@AtmosphericIgnition Sorry, I didn't mean to imply that it was your fault or that we wouldn't investigate. Just sharing my initial findings, I don't have a workaround for you, but if you want to play around with it further, network related settings/etc may be a good starting place.

AtmosphericIgnition commented 1 month ago

Oh yeah, no problem, I just meant to say that I understand that I'm trying to run Signal on a platform that isn't officially supported, so I understand if you don't have the resources to investigate this.

One more thing that might be the source of issues is that Asahi uses 16KB memory pages, while x86 uses 4KB pages, and have been issues with Chromium in the past where Google accidentally broke some functionality on systems using 16KB pages.

I'll go look into networking related changes, as well as check commits between 7.41 and 7.42 for anything that could be related.

tartanpion commented 1 month ago

signal build from official archive for manjaro aarch64. Bug appears from 7.42 Same crash when going to about signal desktop or open parameters, just wait a few second.

{"level":30,"time":"2025-02-17T22:57:42.682Z","msg":"config/set: Saved ephemeral config to disk"} Render process is gone: Error: Reason: crashed, Exit Code: 133 at App. (/usr/lib/signal-desktop/resources/app.asar/app/global_errors.js:94:7) at App.emit (node:events:518:28) at WebContents. (node:electron/js2c/browser_init:2:87957) at WebContents.emit (node:events:518:28) {"level":50,"time":"2025-02-17T22:57:58.198Z","msg":"Render process is gone: Error: Reason: crashed, Exit Code: 133\n at App. ([REDACTED]/app/global_errors.js:94:7)\n at App.emit (node:events:518:28)\n at WebContents. (node:electron/js2c/browser_init:2:87957)\n at WebContents.emit (node:events:518:28)"} {"level":30,"time":"2025-02-17T22:58:02.606Z","msg":"main window closed event"} {"level":30,"time":"2025-02-17T22:58:02.606Z","msg":"System tray service: updating main window. Previously, there was a window, and now there is not"} {"level":30,"time":"2025-02-17T22:58:02.606Z","msg":"System tray service: rendering no tray"} {"level":30,"time":"2025-02-17T22:58:02.607Z","msg":"quit event {\"hasEventBeenPrevented\":false,\"windowCount\":0,\"mainWindowExists\":false}"} [46444:0217/235802.658422:ERROR:wayland_event_watcher.cc(47)] libwayland: warning: queue 0x3c027d7d40 destroyed while proxies still attached:

[46444:0217/235802.658589:ERROR:wayland_event_watcher.cc(47)] libwayland: wl_buffer#39 still attached

[46444:0217/235802.658678:ERROR:wayland_event_watcher.cc(47)] libwayland: wl_buffer#49 still attached

[46444:0217/235802.658747:ERROR:wayland_event_watcher.cc(47)] libwayland: wl_buffer#45 still attached

[46444:0217/235802.658818:ERROR:wayland_event_watcher.cc(47)] libwayland: wl_buffer#46 still attached

[46444:0217/235802.658897:ERROR:wayland_event_watcher.cc(47)] libwayland: wl_shm_pool#47 still attached

I can boot under a 4k and a 16k kernel. Only 16k kernel had the crash.

AtmosphericIgnition commented 1 month ago

@tartanpion are you using Asahi for the 16k page size kernel, or are you using a 16k kernel on a normally 4k system (or vice-versa)?

tartanpion commented 1 month ago

RPI5 can boot on a 4k or a 16k

AtmosphericIgnition commented 1 month ago

I guess that we'll have to wait until Electron gets updated past the Chromium versions which caused the breakage. I don't have the exact range of Chromium versions which were affected by this, but I know that distros like Fedora had to carry a patch that removed the problematic commit for quite some time.

I believe this is the relevant issue on Chromium's issue bug tracker.

I guess that for now, ARM64 16k users have to either stick to 7.41, or use some custom version of Electron.

tartanpion commented 1 month ago

can you try --js-flags="--no-decommit-pooled-pages" .

Signal download their version of electron, not local. signal-desktop@7.42.0 electron:install-app-deps

electron-builder install-app-deps

• electron-builder version=26.0.0-alpha.8 • loaded configuration file=package.json ("build" field) • executing @electron/rebuild electronVersion=34.0.1 arch=arm64 buildFromSource=false appDir=./

electron is patched. Depends of signal team to pick up. https://github.com/electron/electron/pull/45571

AtmosphericIgnition commented 1 month ago

I can confirm that using the --js-flags="--no-decommit-pooled-pages" flag stops the issue from appearing.

youwen5 commented 1 month ago

I'm also experiencing this issue:

╭──────────────────┬───────────────────────────────────────────────────────────╮
│ kernel-name      │ Linux                                                     │
│ nodename         │ callisto                                                  │
│ kernel-release   │ 6.12.12-asahi                                             │
│ kernel-version   │ #1-NixOS SMP PREEMPT_DYNAMIC Tue Jan  1 00:00:00 UTC 1980 │
│ machine          │ aarch64                                                   │
│ operating-system │ GNU/Linux                                                 │
╰──────────────────┴───────────────────────────────────────────────────────────╯

I'm running a patched version of the Fedora COPR on NixOS on an M1 Macbook Pro with the Asahi Linux kernel / mesa drivers. Will try the flag and see if it solves the problem.

Edit: flag seems to have fixed the issue.

nehemiagurl commented 3 weeks ago

same issue also happens on the arm64 signal flatpak, and solved by the same flag.

AtmosphericIgnition commented 3 weeks ago

@nehemiagurl This is expected, as the bug originates in Chromium hardcoding the expected memory page size. Full system virtualization would be the only way to get around this.

sallyhaj commented 3 weeks ago

This issue is exist with me on Raspberry Pi5, I am using a unofficial Debian package [https://gitlab.com/undef1/signal-desktop-builder/-/packages/](from this link) , the issue is solved by adding the flat --js-flags="--no-decommit-pooled-pages"

tartanpion commented 2 weeks ago

signal 7.45.1 use electronVersion=34.2.0. Will be fixed with https://github.com/electron/electron/releases/tag/v34.3.0

mkurz commented 2 weeks ago

signal 7.45.1 use electronVersion=34.2.0. Will be fixed with https://github.com/electron/electron/releases/tag/v34.3.0

Yes, bumping electron to 34.3.x will fix the problem, see https://releases.electronjs.org/release/compare/v34.2.0/v34.3.2

Fixed an issue where Electron may experience crashes on Linux with 16KiB pages. #45571 (Also in 33)

mkurz commented 2 weeks ago

@yash-signal Would it be possible to bump electron to the latest of the v34.x line, which currently is v34.3.3 - that would fix this problem here and is a very low hanging fruit.

yash-signal commented 2 weeks ago

Apologies for the extended trouble. I'll look into the Electron upgrade and update this issue when we have a beta to test.

mkurz commented 2 weeks ago

@yash-signal Thanks! I am using betas anyway, so just let me know when you bumped to 34.3.3 so I can give feedback, thanks!

mkurz commented 2 weeks ago

@yash-signal Actually, if possible, the best thing to do would be to upgrade electron straight to 35.0.1, because it is based on chromium 134 which actually fixes the underlying problem. Electron 34.3.3 only implements a workaround itself to work around the chromium bug (but should be good enough for the short term).

mkurz commented 1 week ago

@yash-signal Actually, the workaround Electron shipped with version 34.3.0 is actually not working. So you need to bump electron to v35 to really fix this. Visual studio code just found out that the fix in v34.3.x in not effective: https://github.com/microsoft/vscode/issues/242742#issuecomment-2722580993

nehemiagurl commented 15 hours ago

Electron has been bumped to 35.0.2, and it seems the crash no longer happens (at least on the Flatpak based on the stable build) even without the flags. I think this issue can be closed.

mkurz commented 14 hours ago

I can confirm also the problem is now fixed with the latest version. Thanks!

AtmosphericIgnition commented 11 hours ago

@nehemiagurl The issue is on ARM systems, the Flapak is x86-only.

nehemiagurl commented 11 hours ago

@AtmosphericIgnition read my comment up the chain, i'm using a specific flatpak built for aarch64.

mkurz commented 11 hours ago

I am on aarch64 with 16k page size and can confirm the issue is fixed now with the latest Signal release

$ uname -m
aarch64
$ getconf PAGESIZE
16384