signalapp / Signal-Desktop

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

Signal shows a 'Optimizing application' splash screen when started in tray #6592

Closed binishjoshi closed 11 months ago

binishjoshi commented 1 year ago

Bug Description

When I open Signal with the option --start-in-tray, I get a visible splash screen for a brief amount of time.

Steps to Reproduce

  1. Open Signal Desktop with --start-in-tray option. Exact command I use is: "/opt/Signal Beta/signal-desktop-beta" --no-sandbox --start-in-tray

Actual Result: My focus gets shifted to a brief splash screen that says 'Optimizing application.'

Expected Result:

It should not appear, it should do that on the background.

Platform Info

Signal Version: "/opt/Signal Beta/signal-desktop-beta" --no-sandbox --start-in-tray

Operating System: EndeavorOS

Linked Device Version: 6.30.4

Link to Debug Log

https://debuglogs.org/desktop/6.29.0-beta.1/267114717a20d871f20179543b4079ff64c2aa179791883646f0130764a8d578.gz

indutny-signal commented 1 year ago

Sorry about this. I checked the logs and it appears that opening the sqlite database itself takes roughly 3 seconds, which is why you see this popup. Afterwards, the queries to the database seems to run a bit slow as well.

Could you tell me a bit more about your configuration? Do you use SSD hard drive?

Additionally, could you check the database size in the terminal, please? (ls -la ~/.config/Signal/sql)

literal-0x4e commented 1 year ago

Could you tell me a bit more about your configuration? Do you use SSD hard drive?

I have this same issue, with --use-tray-icon, on an SSD. Meanwhile, on a different machine that runs a HDD, the splash stays for upwards a minute, which is just unacceptable.

I'd rather signal would not show any splash at all and would just launch when it's ready OR would just draw that in the main window. (the splash positions itself in such a way that it gets perfectly aligned on top of the signal icon in the middle of the main window as it loads and looks like a REALLY hacky attempt to add an "optimizing application . . ." underneath it, hoping nobody notices it's actually a whole separate borderless window on top of it)

indutny-signal commented 1 year ago

@literal-0x4e could you send me your debug log, please?

literal-0x4e commented 1 year ago

@literal-0x4e could you send me your debug log, please?

redacted@redacted:~$ signal-desktop --disable-smooth-scrolling --use-tray-icon
Set Windows Application User Model ID (AUMID) { AUMID: '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/redacted/.config/Signal
config/get: Successfully read user config file
config/get: Successfully read ephemeral config file
making app single instance
{"level":30,"time":"2023-09-12T14:13:24.952Z","msg":"app.ready: hour cycle preference: UnknownPreference"}
{"level":30,"time":"2023-09-12T14:13:24.953Z","msg":"app.ready: preferred system locales: en-US, en"}
{"level":30,"time":"2023-09-12T14:13:24.953Z","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-09-12T14:13:24.953Z","msg":"locale: Preferred locales:  en-US, en"}
{"level":30,"time":"2023-09-12T14:13:24.954Z","msg":"locale: Matched locale: en"}
{"level":40,"time":"2023-09-12T14:13:24.975Z","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":"2023-09-12T14:13:24.976Z","msg":"locale: Text info direction for en: ltr"}
{"level":30,"time":"2023-09-12T14:13:24.977Z","msg":"app ready"}
{"level":30,"time":"2023-09-12T14:13:24.977Z","msg":"starting version 6.30.1"}
{"level":30,"time":"2023-09-12T14:13:24.977Z","msg":"media access status [object Undefined] [object Undefined]"}
{"level":30,"time":"2023-09-12T14:13:24.978Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-09-12T14:13:24.979Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-09-12T14:13:24.980Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2023-09-12T14:13:24.980Z","msg":"getSystemTraySetting saw --use-tray-icon flag. Returning MinimizeToSystemTray"}
{"level":30,"time":"2023-09-12T14:13:24.980Z","msg":"Initializing BrowserWindow config: {\"show\":false,\"width\":800,\"height\":600,\"minWidth\":300,\"minHeight\":200,\"autoHideMenuBar\":false,\"titleBarStyle\":\"default\",\"titleBarOverlay\":false,\"backgroundColor\":\"#3a76f0\",\"webPreferences\":{\"devTools\":false,\"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\":18}"}
{"level":30,"time":"2023-09-12T14:13:25.003Z","msg":"spellcheck: user locales: [\"en-US\",\"en\"]"}
{"level":30,"time":"2023-09-12T14:13:25.003Z","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-09-12T14:13:25.004Z","msg":"spellcheck: setting languages to: [\"en-US\",\"en\"]"}
{"level":30,"time":"2023-09-12T14:13:25.010Z","msg":"MainSQL: updateSchema:\n  Current user_version: 91;\n  Most recent db schema: 920;\n  SQLite version: 3.39.4;\n  SQLCipher version: 4.5.3 community;\n  (deprecated) schema_version: 437;\n"}
{"level":30,"time":"2023-09-12T14:13:25.011Z","msg":"MainSQL: updateToSchemaVersion920(kyberPreKeys): Found 225 total keys"}
{"level":30,"time":"2023-09-12T14:13:25.011Z","msg":"MainSQL: updateToSchemaVersion920(signedPreKeys): Found 30 total keys"}
{"level":30,"time":"2023-09-12T14:13:25.011Z","msg":"MainSQL: updateToSchemaVersion920: Done with deletions"}
{"level":30,"time":"2023-09-12T14:13:25.011Z","msg":"MainSQL: updateToSchemaVersion920: Starting vacuum..."}
{"level":30,"time":"2023-09-12T14:13:25.311Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-09-12T14:13:25.762Z","msg":"main window is ready-to-show"}
{"level":30,"time":"2023-09-12T14:13:27.981Z","msg":"sql.initialize is taking more than three seconds; showing loading dialog"}
{"level":30,"time":"2023-09-12T14:13:28.004Z","msg":"got fast theme-setting value system"}
Trace/breakpoint trap

Do note I am also affected by #6597, hence the short log with Trace/breakpoint trap. In fact, due to that bug, the several seconds of the splash screen is the only thing I get to see of the Signal client before it crashes

indutny-signal commented 1 year ago

@literal-0x4e I believe what you are seeing is #6597 and this should be resolved now. Slow migrations might cause the "Optimizing" window to appear, but they should not appear after restarts.

literal-0x4e commented 1 year ago

Well, first of all, I've been having this for many, many months now, way before #6597 hit, yet was too discouraged to report it and only chimed in when I saw someone else do it. I still see it, even after restarts. On consecutive launches, on an SSD, it just flashes briefly and steals my input, even if I switch to a different desktop before it does, while on a HDD it just stays there for quite a while. The only reason why I mentioned #6597 at all is because due to that bug, I had some unusual suff in the log (the Trace/breakpoint trap and such).

indutny-signal commented 1 year ago

Ah, that's important then, sorry. If you can know start the app - could you submit a full debug log, please?

literal-0x4e commented 1 year ago

Alright, here you go, a full log from launching, letting it sit there for a little while after it's done and then shutting it down:


redacted@redacted:~$ signal-desktop --disable-smooth-scrolling --use-tray-icon
Set Windows Application User Model ID (AUMID) { AUMID: '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/redacted/.config/Signal
config/get: Successfully read user config file
config/get: Successfully read ephemeral config file
making app single instance
{"level":30,"time":"2023-09-14T17:13:21.541Z","msg":"app.ready: hour cycle preference: UnknownPreference"}
{"level":30,"time":"2023-09-14T17:13:21.541Z","msg":"app.ready: preferred system locales: en-US, en"}
{"level":30,"time":"2023-09-14T17:13:21.542Z","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-09-14T17:13:21.542Z","msg":"locale: Preferred locales:  en-US, en"}
{"level":30,"time":"2023-09-14T17:13:21.543Z","msg":"locale: Matched locale: en"}
{"level":40,"time":"2023-09-14T17:13:21.557Z","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":"2023-09-14T17:13:21.558Z","msg":"locale: Text info direction for en: ltr"}
{"level":30,"time":"2023-09-14T17:13:21.559Z","msg":"app ready"}
{"level":30,"time":"2023-09-14T17:13:21.559Z","msg":"starting version 6.30.2"}
{"level":30,"time":"2023-09-14T17:13:21.559Z","msg":"media access status [object Undefined] [object Undefined]"}
{"level":30,"time":"2023-09-14T17:13:21.560Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-09-14T17:13:21.561Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-09-14T17:13:21.562Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2023-09-14T17:13:21.562Z","msg":"getSystemTraySetting saw --use-tray-icon flag. Returning MinimizeToSystemTray"}
{"level":30,"time":"2023-09-14T17:13:21.562Z","msg":"Initializing BrowserWindow config: {\"show\":false,\"width\":2319,\"height\":1256,\"minWidth\":300,\"minHeight\":200,\"autoHideMenuBar\":false,\"titleBarStyle\":\"default\",\"titleBarOverlay\":false,\"backgroundColor\":\"#3a76f0\",\"webPreferences\":{\"devTools\":false,\"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\":18}"}
{"level":30,"time":"2023-09-14T17:13:21.574Z","msg":"spellcheck: user locales: [\"en-US\",\"en\"]"}
{"level":30,"time":"2023-09-14T17:13:21.574Z","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-09-14T17:13:21.574Z","msg":"spellcheck: setting languages to: [\"en-US\",\"en\"]"}
{"level":30,"time":"2023-09-14T17:13:21.604Z","msg":"MainSQL: updateSchema:\n  Current user_version: 920;\n  Most recent db schema: 920;\n  SQLite version: 3.39.4;\n  SQLCipher version: 4.5.3 community;\n  (deprecated) schema_version: 437;\n"}
{"level":30,"time":"2023-09-14T17:13:21.851Z","msg":"got fast theme-setting value system"}
{"level":30,"time":"2023-09-14T17:13:22.113Z","msg":"Updating BrowserWindow config: %s {\"maximized\":true,\"autoHideMenuBar\":false,\"fullscreen\":false,\"width\":2319,\"height\":1256,\"x\":0,\"y\":18}"}
{"level":30,"time":"2023-09-14T17:13:22.113Z","msg":"config/set: Saving ephemeral config to disk"}
{"level":30,"time":"2023-09-14T17:13:22.114Z","msg":"config/set: Saved ephemeral config to disk"}
{"level":30,"time":"2023-09-14T17:13:22.274Z","msg":"got fast spellcheck setting true"}
{"level":30,"time":"2023-09-14T17:13:22.275Z","msg":"main window is ready-to-show"}
{"level":30,"time":"2023-09-14T17:13:22.275Z","msg":"showing main window"}
{"level":30,"time":"2023-09-14T17:13:22.279Z","msg":"System tray service: created"}
{"level":30,"time":"2023-09-14T17:13:22.279Z","msg":"System tray service: updating main window. Previously, there was not a window, and now there is"}
{"level":30,"time":"2023-09-14T17:13:22.279Z","msg":"System tray service: rendering no tray"}
{"level":30,"time":"2023-09-14T17:13:22.279Z","msg":"System tray service: enabling"}
{"level":30,"time":"2023-09-14T17:13:22.279Z","msg":"System tray service: rendering the tray"}
{"level":30,"time":"2023-09-14T17:13:22.279Z","msg":"System tray service: creating the tray"}
{"level":30,"time":"2023-09-14T17:13:22.281Z","msg":"Begin ensuring permissions"}
{"level":30,"time":"2023-09-14T17:13:22.286Z","msg":"Ensuring file permissions for 4 files"}
{"level":30,"time":"2023-09-14T17:13:22.286Z","msg":"Finish ensuring permissions in 5ms"}
{"level":30,"time":"2023-09-14T17:13:23.457Z","msg":"MainSQL: slow query getAllStories duration=1090ms"}

(signal-desktop:15428): IBUS-WARNING **: 20:13:23.459: Unable to connect to ibus: Could not connect: Connection refused
{"level":30,"time":"2023-09-14T17:13:23.526Z","msg":"Prevent display sleep service: allowing display sleep"}
{"level":30,"time":"2023-09-14T17:13:23.526Z","msg":"Background throttling enabled because no call is active"}
{"level":30,"time":"2023-09-14T17:13:23.691Z","msg":"updater/start: Updates disabled - not starting new version checks"}
{"level":30,"time":"2023-09-14T17:13:23.692Z","msg":"App loaded - time: 2134"}
{"level":30,"time":"2023-09-14T17:13:23.692Z","msg":"SQL init - time: 56"}
{"level":30,"time":"2023-09-14T17:13:23.692Z","msg":"Preload - time: 427"}
{"level":30,"time":"2023-09-14T17:13:23.692Z","msg":"WebSocket connect - time: 525"}
{"level":30,"time":"2023-09-14T17:13:23.692Z","msg":"Processed count: 0"}
{"level":30,"time":"2023-09-14T17:13:23.692Z","msg":"Messages per second: 0"}
{"level":30,"time":"2023-09-14T17:13:33.557Z","msg":"before-quit event {\"readyForShutdown\":false,\"shouldQuit\":false}"}
{"level":30,"time":"2023-09-14T17:13:33.557Z","msg":"System tray service: markShouldQuit"}
{"level":30,"time":"2023-09-14T17:13:33.558Z","msg":"close event {\"readyForShutdown\":false,\"shouldQuit\":true}"}
{"level":30,"time":"2023-09-14T17:13:33.558Z","msg":"System tray service: not rendering the tray, quitting"}
{"level":30,"time":"2023-09-14T17:13:33.558Z","msg":"requestShutdown: Requesting close of mainWindow..."}
{"level":30,"time":"2023-09-14T17:13:36.412Z","msg":"MainSQL: slow query close duration=2830ms"}
{"level":30,"time":"2023-09-14T17:13:36.413Z","msg":"requestShutdown: Response received"}
{"level":30,"time":"2023-09-14T17:13:36.416Z","msg":"before-quit event {\"readyForShutdown\":true,\"shouldQuit\":true}"}
{"level":30,"time":"2023-09-14T17:13:36.416Z","msg":"System tray service: markShouldQuit"}
{"level":30,"time":"2023-09-14T17:13:36.416Z","msg":"close event {\"readyForShutdown\":true,\"shouldQuit\":true}"}
{"level":30,"time":"2023-09-14T17:13:36.418Z","msg":"System tray service: updating main window. Previously, there was a window, and now there is not"}
{"level":30,"time":"2023-09-14T17:13:36.418Z","msg":"System tray service: rendering no tray"}
indutny-signal commented 1 year ago

@literal-0x4e could you confirm that you saw the "Optimizing application" mini-window?

literal-0x4e commented 1 year ago

Hmm... I made very sure, complete with recording what's happening on the screen and I gotta say: it's a splash, but without a label. So technically, no, it is in fact not the "Optimizing application" splash.

indutny-signal commented 1 year ago

Ah, that might be normal. We always show the splash screen while starting up and pulling the latest messages from the server. It sounds like in your case whole process took 2 seconds which is within the bounds of what it takes normally.

literal-0x4e commented 1 year ago

Is there a way to... suppress the said splash? It serves no purpose for me other than being a genuine annoyance.

scottnonnenberg-signal commented 1 year ago

@literal-0x4e We may be a bit confused here. Is it that you don't like what the Signal Desktop window does when it first shows, the triple-dot progress animation? Or that it steals focus?

I think we've established that it's not a separate little 'Optimizing' window, right? Because that only shows when database operations take a long time?

binishjoshi commented 1 year ago

Could you tell me a bit more about your configuration? Do you use SSD hard drive?

Model Family:     Toshiba 2.5" HDD MQ01ABF...
Device Model:     TOSHIBA MQ01ABF050
Serial Number:    X6KHT3IHT
LU WWN Device Id: 5 000039 751809799
Firmware Version: AM0P2D
User Capacity:    500,107,862,016 bytes [500 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database 7.3/5528
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

could you check the database size in the terminal, please?

162406400 Sep 16 11:41 db.sqlite 
scottnonnenberg-signal commented 1 year ago

@cyclonejet Are you still seeing the original behavior? Have any recent releases changed things for you?

binishjoshi commented 1 year ago

@scottnonnenberg-signal I haven't checked. Was it fixed in the recent releases?

scottnonnenberg-signal commented 1 year ago

@cyclonejet The specific changes we made had to do with database size, and involved a number of large migrations. The small popup only happens when the database takes a long time to load. We expected that was why the small popup was shown. And that it shouldn't happen anymore.

The 'splash screen' (which we call the loading screen) is shown on every startup. We haven't made changes around when it shows. But it shouldn't show for very long unless there are messages to be downloaded and processed, and you should see a progress bar for that.

So, we're looking for more detail on the current behavior you see.

binishjoshi commented 1 year ago

I've not yet seen the issue. I'll monitor it for few days/weeks and will update here.

indutny-signal commented 11 months ago

Hopefully it is resolved for you. Closing the ticket!