Public bug reported:

On stonking with gnome-control-center 1:51.0-1ubuntu1 and
whoopsie-preferences 23build4, the journal shows whoopsie-preferences starting,
acquiring com.ubuntu.WhoopsiePreferences, then exiting cleanly, once a minute,
forever:

  systemd[1]: Started dbus-:[email protected].
  systemd[1]: dbus-:[email protected]: 
Deactivated successfully.
  whoopsie-preferences[3607]: Acquired the name: com.ubuntu.WhoopsiePreferences

It looks like a crash loop but is not: "Deactivated successfully" is a clean
exit, the @N suffix is the per-boot D-Bus activation serial. On my machine this
had been running for ~a day: roughly 1440 root process spawns per day, purely
to keep a settings cache warm for a panel nobody has open.

Two behaviours, each reasonable on its own, loop against each other:

1. whoopsie-preferences quits its main loop 60 s after its last activity
   (src/whoopsie-preferences.c:462, increase_shutdown_timeout() at :252).
   Deliberate: it should not idle-resident.

2. gnome-control-center's Ubuntu Telemetry page (the whoopsie support added by
   d/p/u/diagnostics-Add-Whoopsie-support.patch, carried over to
   cc-telemetry-page.c by the telemetry patch) connects a handler to the
   proxy's notify::g-name-owner. Whenever the name loses its owner it calls
   whoopsie_preferences_call_get_identifier() fire-and-forget. The comment in
   the patch says it outright: "Trigger the service to start again, as it has
   just been stopped by a timeout".

So while any gnome-control-center process is alive - including the headless
--gapplication-service instance with no window open - the pair ping-pongs:
g-c-c starts the service, the service quits 60 s later, g-c-c starts it again.

Evidence that g-c-c is the driver (SIGSTOP the resident
gnome-control-center process): the next 60 s tick shows the service
deactivating but no new activation; on SIGCONT an activation fires
immediately, off the usual cadence. strace on a live whoopsie-preferences
instance over its last 20 s of life shows zero received D-Bus messages, i.e.
nothing ever actually talks to the service after activation.

The whoopsie daemon itself is not involved: whoopsie.service is static and
whoopsie.path disabled, so only whoopsie-preferences churns.

Proposed fix, verified locally on stonking (patch attached, built and
installed as 1:51.0-1ubuntu2+local):

  - create the whoopsie proxy with G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, so a
    page that is never shown activates nothing at construction time;
  - gate whoopsie_bus_owner_changed() on gtk_widget_get_mapped(): a headless
    service instance no longer re-activates anything, and when the owner
    appears while the page is shown, sync the row;
  - add a map handler: when the user actually opens the Telemetry page, sync
    the row if the service is owned, otherwise activate it explicitly via
    org.freedesktop.DBus.StartServiceByName (method calls are refused on
    unowned proxies created with DO_NOT_AUTO_START, so this must be explicit);
  - leave the combo row insensitive until the whoopsie state is actually
    known.

After the fix: whoopsie-preferences is activated only while the Telemetry page
is on screen (the visible page keeps reactivating it on its idle exits, which
is the original keep-alive intent, bounded by visibility). A resident g-c-c
with the page not mapped causes zero activations; verified with
SIGSTOP/SIGCONT, a 2m15s observation window, and an overnight soak.

Side note for the whoopsie-preferences side of this design: its idle exit
fires while clients still hold proxies on the bus. Should whoopsie-preferences
keep running while there are clients instead? That would make this class of
reactivation loops moot, but it is a design question for the whoopsie
maintainers rather than a patch I can propose here.

** Affects: gnome-control-center (Ubuntu)
     Importance: Low
     Assignee: Charles (charles05)
         Status: In Progress


** Tags: stonking

** Changed in: gnome-control-center (Ubuntu)
   Importance: Undecided => Low

** Changed in: gnome-control-center (Ubuntu)
       Status: New => In Progress

** Changed in: gnome-control-center (Ubuntu)
     Assignee: (unassigned) => Charles (charles05)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2167557

Title:
  gnome-control-center re-activates whoopsie-preferences every 60 s
  (journal noise, ~1440 root spawns/day)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/2167557/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to