sublimehq / sublime_merge

Issue tracker for Sublime Merge
https://www.sublimemerge.com
276 stars 14 forks source link

Sublime Merge takes almost 30 seconds to start #1130

Open mpldr opened 3 years ago

mpldr commented 3 years ago

Version info

Description

SM takes forever (30-40 seconds to open). Safe-Mode does not change anything

Steps to reproduce

Steps to reproduce the behavior:

  1. run smerge
  2. wait
  3. wait some more
  4. start working

Expected behavior

A near-instant start as it used to be

dpjohnst commented 3 years ago

Hi @poldi1405,

Thanks for reporting this issue.

Could you confirm if the same issue occurs on the latest development build?

You can install it by following the instructions shown here: https://www.sublimemerge.com/docs/linux_repositories#pacman

Additionally, could you try the following:

  1. Open a new tab in Sublime Merge
  2. Close all the other tabs (except the new tab you created)
  3. Close Sublime Merge
  4. Start Sublime Merge

After these steps have been performed, do you still see the slow start-up speed?

Thanks, - Dylan

mpldr commented 3 years ago

Could you confirm if the same issue occurs on the latest development build?

Still happens in 2053

After these steps have been performed, do you still see the slow start-up speed?

No noticeable difference.

Is there maybe some kind of hidden switch to disable the fork to background so I can easily export a strace?

dpjohnst commented 3 years ago

Hi @poldi1405,

Thanks for the additional information! A trace would be much appreciated.

In order to use strace with smerge, you can pass the --multiinstance flag to smerge e.g. strace -r smerge --multiinstance

Thanks, - Dylan

mpldr commented 3 years ago

It seems to hang polling a pipe…

❯ ls /proc/$(pgrep sublime_merge)/fd/                                                                                                                                                                                                                                                     ~
lrwx------  64 moritz  3 Mai 14:44 0 -> /dev/pts/8
lrwx------  64 moritz  3 Mai 14:44 1 -> /dev/pts/8
lrwx------  64 moritz  3 Mai 14:44 2 -> /dev/pts/8
lrwx------@ 64 moritz  3 Mai 14:44 3 -> socket:[15704302]
lrwx------  64 moritz  3 Mai 14:44 4 -> anon_inode:[eventfd]
lrwx------  64 moritz  3 Mai 14:44 5 -> anon_inode:[eventfd]
lrwx------@ 64 moritz  3 Mai 14:44 6 -> socket:[15702185]
lrwx------  64 moritz  3 Mai 14:44 7 -> anon_inode:[eventfd]
lrwx------  64 moritz  3 Mai 14:44 8 -> anon_inode:[eventfd]
lrwx------  64 moritz  3 Mai 14:44 9 -> /memfd:wayland-cursor (deleted)
lrwx------@ 64 moritz  3 Mai 14:44 10 -> socket:[15708161]
lrwx------@ 64 moritz  3 Mai 14:44 11 -> socket:[15696369]
lrwx------  64 moritz  3 Mai 14:44 12 -> anon_inode:[eventfd]
lrwx------  64 moritz  3 Mai 14:44 13 -> anon_inode:[eventfd]

becomes:

❯ ls /proc/$(pgrep sublime_merge)/fd/                                                                                                                                                                                                                                                     ~
lrwx------  64 moritz  3 Mai 14:44 0 -> /dev/pts/8
lrwx------  64 moritz  3 Mai 14:44 1 -> /dev/pts/8
lrwx------  64 moritz  3 Mai 14:44 2 -> /dev/pts/8
lrwx------@ 64 moritz  3 Mai 14:44 3 -> socket:[15704302]
lrwx------  64 moritz  3 Mai 14:44 4 -> anon_inode:[eventfd]
lrwx------  64 moritz  3 Mai 14:44 5 -> anon_inode:[eventfd]
lrwx------@ 64 moritz  3 Mai 14:44 6 -> socket:[15702185]
lrwx------  64 moritz  3 Mai 14:44 7 -> anon_inode:[eventfd]
lrwx------  64 moritz  3 Mai 14:44 8 -> anon_inode:[eventfd]
lrwx------  64 moritz  3 Mai 14:44 9 -> /memfd:wayland-cursor (deleted)
lrwx------@ 64 moritz  3 Mai 14:44 10 -> socket:[15708161]
lrwx------@ 64 moritz  3 Mai 14:44 11 -> socket:[15696369]
lrwx------  64 moritz  3 Mai 14:44 12 -> anon_inode:[eventfd]
lr-x------  64 moritz  3 Mai 14:44 13 -> pipe:[15709267]
l-wx------  64 moritz  3 Mai 14:45 14 -> pipe:[15709267]
lrwx------@ 64 moritz  3 Mai 14:45 15 -> socket:[15709268]
lr-x------  64 moritz  3 Mai 14:45 16 -> anon_inode:inotify
lr-x------  64 moritz  3 Mai 14:45 17 -> /opt/sublime_merge/Packages/Theme - Merge.sublime-package
lr-x------  64 moritz  3 Mai 14:45 18 -> /opt/sublime_merge/Packages/Theme - Merge.sublime-package
lrwx------@ 64 moritz  3 Mai 14:45 20 -> /dev/dri/card0
lr-x------  64 moritz  3 Mai 14:45 21 -> /opt/sublime_merge/Packages/Language - English.sublime-package
lr-x------  64 moritz  3 Mai 14:45 22 -> /opt/sublime_merge/Packages/Default.sublime-package
lr-x------  64 moritz  3 Mai 14:45 23 -> /opt/sublime_merge/Packages/Default.sublime-package
lr-x------  64 moritz  3 Mai 14:45 24 -> /opt/sublime_merge/Packages/Language - English.sublime-package
lrwx------@ 64 moritz  3 Mai 14:45 25 -> /dev/dri/card0
lrwx------@ 64 moritz  3 Mai 14:45 26 -> /dev/dri/card0
lrwx------@ 64 moritz  3 Mai 14:45 27 -> /dev/dri/card0

The blocking call is at line 4475 trace.zip

mpldr commented 3 years ago

Just checked. The same polling happens in Sublime Text 4 (dev) Build 4012, also Filehandle 13. Maybe something to do with the GUI library?

mpldr commented 3 years ago

I just started it on Cinnamon (X11) instead of sway (wayland) and it started near instantly, so this might be the reason.

mpldr commented 3 years ago

Update: it does not start at all anymore… it just seems to freeze at some point while starting up strace.zip

I've let it "run" for quite a while but this hangup is all I get out of it.

Seems this issue resolved itself by restarting the computer.