Signal-Desktop icon indicating copy to clipboard operation
Signal-Desktop copied to clipboard

Signal won't start if /tmp is mounted `noexec`

Open WhyNotHugo opened this issue 1 year ago • 7 comments
trafficstars

Using a supported version?

  • [X] I have searched searched open and closed issues for duplicates.
  • [X] I am using Signal-Desktop as provided by the Signal team, not a 3rd-party package.

Overall summary

Signal hangs at startup before the main window is rendered:

App threw an error during load
Error: Error loading shared library /tmp/.org.chromium.Chromium.HiFJHc: Operation not permitted
    at process.func [as dlopen] (node:electron/js2c/node_init:2:2214)
    at Module._extensions..node (node:internal/modules/cjs/loader:1489:18)
    at Object.func [as .node] (node:electron/js2c/node_init:2:2441)
    at Module.load (node:internal/modules/cjs/loader:1214:32)
    at Module._load (node:internal/modules/cjs/loader:1030:12)
    at c._load (node:electron/js2c/node_init:2:13672)
    at Module.require (node:internal/modules/cjs/loader:1242:19)
    at require (node:internal/modules/helpers:176:18)
    at load (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/node_modules/node-gyp-build/node-gyp-build.js:22:10)
    at Object.<anonymous> (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/Native.js:6:43)
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Error loading shared library /tmp/.org.chromium.Chromium.HiFJHc: Operation not permitted
    at process.func [as dlopen] (node:electron/js2c/node_init:2:2214)
    at Module._extensions..node (node:internal/modules/cjs/loader:1489:18)
    at Object.func [as .node] (node:electron/js2c/node_init:2:2441)
    at Module.load (node:internal/modules/cjs/loader:1214:32)
    at Module._load (node:internal/modules/cjs/loader:1030:12)
    at c._load (node:electron/js2c/node_init:2:13672)
    at Module.require (node:internal/modules/cjs/loader:1242:19)
    at require (node:internal/modules/helpers:176:18)
    at load (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/node_modules/node-gyp-build/node-gyp-build.js:22:10)
    at Object.<anonymous> (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/Native.js:6:43)
[11815:0601/144834.323730:ERROR:object_proxy.cc(576)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/portal/desktop: org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.FileChooser”
[11815:0601/144834.323745:ERROR:select_file_dialog_linux_portal.cc(286)] Failed to read portal version property

I'm unsure if the error related to "no file chooser available" is the cause or not. That should be a warning; not a fatal error.

Steps to reproduce

  1. Start signal-desktop

Expected result

It should start.

Actual result

It won't start.

Screenshots

n/a

Signal version

7.10.0

Operating system

Alpine Linux edge

Version of Signal on your phone

unavailable

Link to debug log

No response

WhyNotHugo avatar Jun 01 '24 12:06 WhyNotHugo

That error looks like some sort of file permissions issue. What method did you use to install Signal? Have you done something to change file permissions?

jamiebuilds-signal avatar Jun 03 '24 19:06 jamiebuilds-signal

Yeah, it's a permissions issue executing.

Apparently Signal tries to write some binaries into /tmp/ and then execute them, so this doesn't work in /tmp/ is mounted noexec.

I can work around this by mounting /tmp/ without noexec, but that's far from ideal.

Shouldn't binaries be unpacked at install-time, rather than at runtime?

WhyNotHugo avatar Jun 04 '24 09:06 WhyNotHugo

Unfortunately it is required by the app framework that we are using, so we need those permissions

jamiebuilds-signal avatar Jun 04 '24 16:06 jamiebuilds-signal

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Nov 09 '24 00:11 stale[bot]

https://nostalebots.xyz

WhyNotHugo avatar Nov 09 '24 03:11 WhyNotHugo

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Feb 07 '25 03:02 stale[bot]

Oh, Stale Bot, your judgment’s flawed, You close our work with naught but fraud. No heed to effort, thought, or care, Just ticking clocks and empty air.

Your thankless script means naught to me, This issue stands—so let it be. Mark it stale a thousand times, We’ll press on despite your crimes.

WhyNotHugo avatar Feb 07 '25 12:02 WhyNotHugo

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar May 08 '25 15:05 stale[bot]

Inserting useless comment to work around useless bot.

WhyNotHugo avatar May 08 '25 15:05 WhyNotHugo

@WhyNotHugo Have you tried this on recent builds? Perhaps the beta?

scottnonnenberg-signal avatar May 08 '25 21:05 scottnonnenberg-signal

Last tested 7.47.0. Full error output is:

> signal-desktop 
App threw an error during load
Error: Error loading shared library /tmp/.org.chromium.Chromium.kGeMjl: Operation not permitted
    at process.func [as dlopen] (node:electron/js2c/node_init:2:2559)
    at Module._extensions..node (node:internal/modules/cjs/loader:1602:18)
    at Object.func [as .node] (node:electron/js2c/node_init:2:2786)
    at Module.load (node:internal/modules/cjs/loader:1295:32)
    at Module._load (node:internal/modules/cjs/loader:1111:12)
    at c._load (node:electron/js2c/node_init:2:16955)
    at Module.require (node:internal/modules/cjs/loader:1318:19)
    at require (node:internal/modules/helpers:179:18)
    at load (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/node_modules/node-gyp-build/node-gyp-build.js:22:10)
    at Object.<anonymous> (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/Native.js:6:43)
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Error loading shared library /tmp/.org.chromium.Chromium.kGeMjl: Operation not permitted
    at process.func [as dlopen] (node:electron/js2c/node_init:2:2559)
    at Module._extensions..node (node:internal/modules/cjs/loader:1602:18)
    at Object.func [as .node] (node:electron/js2c/node_init:2:2786)
    at Module.load (node:internal/modules/cjs/loader:1295:32)
    at Module._load (node:internal/modules/cjs/loader:1111:12)
    at c._load (node:electron/js2c/node_init:2:16955)
    at Module.require (node:internal/modules/cjs/loader:1318:19)
    at require (node:internal/modules/helpers:179:18)
    at load (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/node_modules/node-gyp-build/node-gyp-build.js:22:10)
    at Object.<anonymous> (/usr/lib/signal-desktop/app.asar/node_modules/@signalapp/libsignal-client/Native.js:6:43)
[31767:0508/232506.388628:ERROR:object_proxy.cc(576)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/portal/desktop: org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.FileChooser”
[31767:0508/232506.388639:ERROR:select_file_dialog_linux_portal.cc(308)] Failed to read portal version property

Re-mounting /tmp without noexec makes signal run again.

WhyNotHugo avatar May 08 '25 21:05 WhyNotHugo

We're on version 7.54.0-beta.1 now, and there have been a few electron upgrades since then. Please take a look!

scottnonnenberg-signal avatar May 08 '25 21:05 scottnonnenberg-signal

Duplicate of https://github.com/signalapp/Signal-Desktop/issues/2595.

WhyNotHugo avatar May 08 '25 22:05 WhyNotHugo