telephony-service-indicator is waking up every 4 seconds adding inotifies on paths that don't exist

Bug #1308136 reported by Colin Ian King
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
telephony-service (Ubuntu)
Triaged
High
Tiago Salem Herrmann

Bug Description

Daily wakeups tests show that telephony-service-indicator is not that idle on an "idle" system:

http://ci.ubuntu.com/power/eventstat/image/3138/machine/6/task/telephony-service-indicator/details/

It is waking up every 4 seconds on a poll() and doing two inotify_add_watch() calls on paths that don't exist, which wastes power on devices such as phones, e.g:

Inotify watches added:
  PID Process Rate/Sec File
  2102 telephony-service-in 0.250 /usr/local/share/applications
  2102 telephony-service-in 0.250 /usr/share/ubuntu-touch/applications

This can be observed with strace:

poll([{fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 2, 3984) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {10864, 224048956}) = 0
inotify_add_watch(8, "/usr/local/share/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
inotify_add_watch(8, "/usr/share/ubuntu-touch/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
clock_gettime(CLOCK_MONOTONIC, {10864, 229054297}) = 0
poll([{fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 2, 3987) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {10868, 227833482}) = 0
inotify_add_watch(8, "/usr/local/share/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
inotify_add_watch(8, "/usr/share/ubuntu-touch/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
clock_gettime(CLOCK_MONOTONIC, {10868, 233998598}) = 0

Can these redundant polling checks be reduced or removed? Polling every 4 seconds is a little bit heavy handed IMHO.

Tags: pat rtm14
Bill Filler (bfiller)
tags: added: rtm14
summary: - telephony-service-indicator is waking up every 4 seconds is waking up
- every 4 seconds adding inotifies on paths that don't exist
+ telephony-service-indicator is waking up every 4 seconds adding
+ inotifies on paths that don't exist
Changed in telephony-service:
importance: Undecided → High
status: New → Triaged
assignee: nobody → Tiago Salem Herrmann (tiagosh)
Bill Filler (bfiller)
Changed in telephony-service (Ubuntu):
status: New → Triaged
importance: Undecided → High
assignee: nobody → Tiago Salem Herrmann (tiagosh)
tags: added: pat
Revision history for this message
Tiago Salem Herrmann (tiagosh) wrote :

I debugged this issue and the inotify_add_watch() calls start to happen after I call messaging_menu_app_new() in the telephony-service-indicator, so I suppose there is something wrong there in messaging-menu.

Revision history for this message
Sebastien Bacher (seb128) wrote :

is that still an issue with the current glib version?
it looks like it could have been the issue resolved recently with
https://git.gnome.org/browse/glib/commit/?id=3b8bc8bacf1fe31cda44fb5293711e87989388ea

Revision history for this message
Sebastien Bacher (seb128) wrote :

could you test/comment on whether that's still happening?

Changed in telephony-service (Ubuntu):
status: Triaged → Incomplete
Revision history for this message
Colin Ian King (colin-king) wrote :
Download full text (3.2 KiB)

Yep, still polling at the same rate doing inotify add watches:

root@ubuntu-phablet:~# strace -f -p 2078
Process 2078 attached with 4 threads
[pid 2091] restart_syscall(<... resuming interrupted call ...> <unfinished ...>
[pid 2081] restart_syscall(<... resuming interrupted call ...> <unfinished ...>
[pid 2080] restart_syscall(<... resuming interrupted call ...> <unfinished ...>
[pid 2078] restart_syscall(<... resuming interrupted call ...> <unfinished ...>
[pid 2091] <... restart_syscall resumed> ) = 0
[pid 2091] clock_gettime(CLOCK_MONOTONIC, {4118, 702253017}) = 0
[pid 2091] inotify_add_watch(13, "/usr/local/share/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] inotify_add_watch(13, "/usr/share/ubuntu-touch/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] inotify_add_watch(13, "/etc/xdg/xdg-ubuntu-touch", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] clock_gettime(CLOCK_MONOTONIC, {4118, 704436632}) = 0
[pid 2091] poll([{fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 2, 3997) = 0 (Timeout)
[pid 2091] clock_gettime(CLOCK_MONOTONIC, {4122, 706523555}) = 0
[pid 2091] inotify_add_watch(13, "/usr/local/share/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] inotify_add_watch(13, "/usr/share/ubuntu-touch/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] inotify_add_watch(13, "/etc/xdg/xdg-ubuntu-touch", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] clock_gettime(CLOCK_MONOTONIC, {4122, 708504478}) = 0
[pid 2091] poll([{fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 2, 3992) = 0 (Timeout)
[pid 2091] clock_gettime(CLOCK_MONOTONIC, {4126, 705271171}) = 0
[pid 2091] inotify_add_watch(13, "/usr/local/share/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] inotify_add_watch(13, "/usr/share/ubuntu-touch/applications", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] inotify_add_watch(13, "/etc/xdg/xdg-ubuntu-touch", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF|IN_UNMOUNT|IN_ONLYDIR) = -1 ENOENT (No such file or directory)
[pid 2091] clo...

Read more...

Revision history for this message
Iain Lane (laney) wrote :

Which version of libglib2.0-0 were you trying with? It's supposed to be fixed in 2.41.5-1 and if you were trying in ubuntu-rtm this only entered the release on 2014-10-07.

Revision history for this message
Tiago Salem Herrmann (tiagosh) wrote :

telephony-service-indicator is still waking up on every 4 seconds, but this time it is caused by NetworkManager emiting signals as far as I can see. (PropertiesChanged, ScanDone, AccessPointAdded and so on)

The indicator does not directly watch for any NetworkManager signals, so I guess this is coming from any of the linked libraries.

no longer affects: telephony-service
Changed in telephony-service (Ubuntu):
status: Incomplete → Triaged
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.