Page MenuHomePhabricator

starting everything results in freezed screen - caching issue
Open, TrivialPublic

Description

launching everything freezes screen until it's done rendering/caching *.desktop files. this happens on first run, then it's not noticeable unless there is a high system load. however, it seems everything drops its caches or reupdates it's internal database so after a while i get a freezed screen again.

maybe use inotify to update *.desktop files?

This can be partially solved by increasing all the cache sizes in elementary configuration. But it would be nice to have it resolved once and for all though.

abyomi0 added subscribers: zmike, raster.

Moderately certain this is caused by synchronous image loading, something that would be fixed if evry used elm image.

as an update on this: it's the same with "start", but not with "settings" -> "favourite applications" nor "default applications".

however, both settings window result in the same freeze when closing (!!) the dialog. (T3590)

i've got ~300 *.desktop files in /usr/share/applications and ~100 in my home folder.

zmike triaged this task as Trivial priority.May 9 2016, 11:11 AM

@abyomi0 @zmike while in gdb i noticed everything is starting much more new threads when e freezes then when e does not.

quick call without freeze:

[New Thread 0x7f59f6b23700 (LWP 24910)]
[Thread 0x7f59f6b23700 (LWP 24910) exited]
[New Thread 0x7f59cffff700 (LWP 24911)]
[New Thread 0x7f59f6b23700 (LWP 24912)]
[New Thread 0x7f59cf7fe700 (LWP 24913)]
[Thread 0x7f59cf7fe700 (LWP 24913) exited]
[Thread 0x7f59f6b23700 (LWP 24912) exited]
[Thread 0x7f59cffff700 (LWP 24911) exited]
[New Thread 0x7f59f6b23700 (LWP 24914)]
[Thread 0x7f59f6b23700 (LWP 24914) exited]

with freeze:

[New Thread 0x7f59f6322700 (LWP 22915)]
[New Thread 0x7f59f6b23700 (LWP 22916)]
[Thread 0x7f59f6b23700 (LWP 22916) exited]
[Thread 0x7f59f6322700 (LWP 22915) exited]
[New Thread 0x7f59dd90b700 (LWP 22917)]
[New Thread 0x7f59f6b23700 (LWP 22918)]
[New Thread 0x7f59f6322700 (LWP 22919)]
[Thread 0x7f59f6b23700 (LWP 22918) exited]
[Thread 0x7f59f6322700 (LWP 22919) exited]
[New Thread 0x7f59f6322700 (LWP 22920)]
[New Thread 0x7f59f6b23700 (LWP 22921)]
[Thread 0x7f59f6b23700 (LWP 22921) exited]
[New Thread 0x7f59dd10a700 (LWP 22922)]
[Thread 0x7f59f6322700 (LWP 22920) exited]
[New Thread 0x7f59dc909700 (LWP 22923)]
[Thread 0x7f59dd10a700 (LWP 22922) exited]
[Thread 0x7f59dc909700 (LWP 22923) exited]
[New Thread 0x7f59dc909700 (LWP 22924)]
[Thread 0x7f59dc909700 (LWP 22924) exited]
[New Thread 0x7f59dd10a700 (LWP 22925)]
[New Thread 0x7f59dc909700 (LWP 22926)]
[Thread 0x7f59dd10a700 (LWP 22925) exited]
[Thread 0x7f59dc909700 (LWP 22926) exited]
[New Thread 0x7f59dc909700 (LWP 22927)]
[Thread 0x7f59dc909700 (LWP 22927) exited]
[New Thread 0x7f59dc909700 (LWP 22928)]
[New Thread 0x7f59dd10a700 (LWP 22929)]
[Thread 0x7f59dc909700 (LWP 22928) exited]
[New Thread 0x7f59f6322700 (LWP 22930)]
[Thread 0x7f59dd10a700 (LWP 22929) exited]
[New Thread 0x7f59f6b23700 (LWP 22931)]
[Thread 0x7f59f6322700 (LWP 22930) exited]
[Thread 0x7f59f6b23700 (LWP 22931) exited]
[Thread 0x7f59dd90b700 (LWP 22917) exited]
[New Thread 0x7f59f6b23700 (LWP 22932)]
[New Thread 0x7f59dd90b700 (LWP 22933)]
[New Thread 0x7f59f6322700 (LWP 22934)]
[Thread 0x7f59dd90b700 (LWP 22933) exited]
[New Thread 0x7f59dd10a700 (LWP 22935)]
[Thread 0x7f59f6322700 (LWP 22934) exited]
[New Thread 0x7f59dc909700 (LWP 22936)]
[Thread 0x7f59dd10a700 (LWP 22935) exited]
[New Thread 0x7f59cffff700 (LWP 22937)]
[Thread 0x7f59dc909700 (LWP 22936) exited]
[Thread 0x7f59cffff700 (LWP 22937) exited]
[New Thread 0x7f59cf7fe700 (LWP 22938)]
[Thread 0x7f59cf7fe700 (LWP 22938) exited]
[New Thread 0x7f59cf7fe700 (LWP 22939)]
[New Thread 0x7f59cffff700 (LWP 22940)]
[Thread 0x7f59cf7fe700 (LWP 22939) exited]
[Thread 0x7f59cffff700 (LWP 22940) exited]
[Thread 0x7f59f6b23700 (LWP 22932) exited]

it's much more new threads with "Favorite Applications" and the Start module displaying applications. could this hang be the wait() test for exit of the threads? it probably uses some sort of wait group, maybe locks, each test if the child is dead is likely a syscall and with some not so optimized code as mike has described this could be the culprit.