Bug 886845 - dbus notifiers multiplying, using up all available VM
Summary: dbus notifiers multiplying, using up all available VM
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: gnome-settings-daemon
Version: 19
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Marek Kašík
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-12-13 10:41 UTC by Ian Collier
Modified: 2013-08-12 18:01 UTC (History)
6 users (show)

Fixed In Version: gnome-settings-daemon-3.8.4-2.fc19
Clone Of:
Environment:
Last Closed: 2013-08-12 18:01:16 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
subscriptions.conf (2.93 KB, application/octet-stream)
2012-12-14 16:42 UTC, Ian Collier
no flags Details


Links
System ID Private Priority Status Summary Last Updated
GNOME Bugzilla 678623 0 None None None Never

Description Ian Collier 2012-12-13 10:41:40 UTC
This is a small Fedora 17 virtual machine, used as a network server for multiple printers.  Unfortunately, the following keeps happening, which was never a problem on the previous one which ran something ancient like Fedora 10.

$ ps u $(pgrep -f notifier/dbus)
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
lp        3101  0.0  0.0  63536  1348 ?        S    10:22   0:00 /usr/lib/cups/n
lp        3671  0.0  0.0  63404  1308 ?        S    10:25   0:00 /usr/lib/cups/n
lp        3934  0.0  0.0  63404  1308 ?        S    10:26   0:00 /usr/lib/cups/n
lp        6713  0.0  0.1  70004  7696 ?        S    08:41   0:00 /usr/lib/cups/n
lp        9981  0.0  0.0 166012   608 ?        S    Dec12   0:45 /usr/lib/cups/n
lp        9982  0.0  2.9 326480 121384 ?       S    Dec12   0:27 /usr/lib/cups/n
lp        9983  0.0  3.5 326480 144036 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9985  0.0  3.1 326480 129504 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9986  0.0  3.0 326480 125300 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9987  0.0  3.1 326480 125804 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9988  0.0  3.0 326480 125008 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9989  0.0  3.0 326480 122140 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9990  0.0  2.5 326480 104188 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9991  0.0  3.1 326480 127384 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9992  0.0  2.8 326480 115284 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9993  0.0  2.9 326480 118916 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9994  0.0  2.9 326480 120676 ?       S    Dec12   0:26 /usr/lib/cups/n
lp        9995  0.0  2.7 326480 110460 ?       S    Dec12   0:27 /usr/lib/cups/n
lp        9997  0.0  2.5 326480 102404 ?       S    Dec12   0:27 /usr/lib/cups/n
lp        9998  0.0  3.5 326480 142944 ?       S    Dec12   0:28 /usr/lib/cups/n
lp        9999  0.0  2.4 326480 101180 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10000  0.0  3.0 326480 124364 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10001  0.0  2.8 326480 116940 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10002  0.0  3.0 326480 124816 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10003  0.0  3.1 326480 126364 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10004  0.0  2.6 326480 108204 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10005  0.0  3.1 326480 126000 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10006  0.0  3.8 326480 156124 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10007  0.0  3.2 326480 130596 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10009  0.0  3.2 326480 130432 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10010  0.0  3.8 326480 154812 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10011  0.0  3.2 326480 131996 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10017  0.0  3.1 326480 127972 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10018  0.0  3.2 326480 129928 ?       S    Dec12   0:28 /usr/lib/cups/n
lp       10136  0.0  0.1  69872  7688 ?        S    09:00   0:00 /usr/lib/cups/n
lp       12159  0.0  0.1  69872  7692 ?        S    09:11   0:00 /usr/lib/cups/n
lp       21365  0.0  0.1  69476  7164 ?        S    10:03   0:00 /usr/lib/cups/n
lp       21723  0.0  0.1  69476  7164 ?        S    10:12   0:00 /usr/lib/cups/n
lp       25368  0.0  0.1  70268  7424 ?        S    07:15   0:00 /usr/lib/cups/n
lp       26683  0.0  2.9 305888 120896 ?       S    Dec12   0:26 /usr/lib/cups/n
$ free
             total       used       free     shared    buffers     cached
Mem:       4050220    3935780     114440          0       1928      18868
-/+ buffers/cache:    3914984     135236
Swap:      4194300    4194300          0

The majority of those processes are over 16 hours old and should have expired by now, and they are wasting over 300MB per process.  Moreover, we don't need them at all - is there any way to turn this "feature" off?

$ rpm -q cups dbus
cups-1.5.4-11.fc17.x86_64
dbus-1.4.10-7.fc17.x86_64

Comment 1 Tim Waugh 2012-12-14 16:22:51 UTC
This isn't the fault of CUPS but of whichever process is creating these subscriptions.

Are you running GNOME or KDE or some other desktop session on that machine locally?

What's in /etc/cups/subscriptions.conf?

Comment 2 Ian Collier 2012-12-14 16:42:45 UTC
Created attachment 663659 [details]
subscriptions.conf

Of course I deleted the subscriptions.conf which was causing the problem, but here is what it says currently.  There are ten processes running with a total VSZ of 775MB; six of them have been there since yesterday (I'm posting this at approx 16:30).

The machine is running headless in runlevel 3 and doesn't have any desktop managers installed.  Note that none of the users mentioned in the "Owner" lines in subscriptions.conf actually has an account on the machine.

Comment 3 Tim Waugh 2012-12-14 17:25:04 UTC
How are the clients configured?  i.e. how do they know to send print jobs to that machine?

Comment 4 Ian Collier 2012-12-14 18:47:38 UTC
In general they have ServerName specified in /etc/cups/client.conf.  A few of the clients will instead have a printer configured in their local cups daemon with an ipp:// URI (pointing at the server) specified as the printer location.

Comment 5 Tim Waugh 2012-12-16 22:50:43 UTC
Thanks.  And are the clients running GNOME?

gnome-settings-daemon's print-notifications plugin sets a notify_recipient_uri of "dbus:///" even for non-"localhost" servers, which is silly.

Changing component and reassigning.

Really it should poll a subscription (that has no notify_recipient_uri) using Get-Notifications, and only use a notify_recipient_uri=dbus:/// subscription to be notified about when to poll.  This is what system-config-printer does (I'm fairly sure I suggested that scheme when the print-notifications plugin was first being developed).

In other words, the logic should be:

if cupsServer() == "localhost":
  sub_optimization = conn.createSubscription(notify_recipient_uri="dbus:///", ...)

sub_required = conn.createSubscription(...)
set_timer (60 seconds, get_notifications)
if sub_optimization:
  set_dbus_signal_handler (..., get_notifications)

And in get_notifications:
  n = conn.getNotifications ()
  for event in n['events']:
    # deal with each event from the getNotifications response
  set_timer (n['notify-get-interval'], get_notifications)

So the actual events would be fetched from the IPP response, and the D-Bus signal would just be a clue to fetch notifications.  Of course, you can choose which events will trigger D-Bus signals to match the ones you're interested in.

Comment 6 Ian Collier 2012-12-19 12:05:08 UTC
OK.  It's a fair guess that most clients would run GNOME, yes.

I think I have now succeeded in fixing this on the server anyway, by implementing a policy which denies non-local subscription requests.

Comment 7 Fedora End Of Life 2013-07-04 01:04:57 UTC
This message is a reminder that Fedora 17 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 17. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as WONTFIX if it remains open with a Fedora 
'version' of '17'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version prior to Fedora 17's end of life.

Bug Reporter:  Thank you for reporting this issue and we are sorry that 
we may not be able to fix it before Fedora 17 is end of life. If you 
would still like  to see this bug fixed and are able to reproduce it 
against a later version  of Fedora, you are encouraged  change the 
'version' to a later Fedora version prior to Fedora 17's end of life.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 8 Fedora Update System 2013-08-07 13:34:57 UTC
gnome-settings-daemon-3.8.4-2.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/gnome-settings-daemon-3.8.4-2.fc19

Comment 9 Fedora Update System 2013-08-07 22:58:46 UTC
Package gnome-settings-daemon-3.8.4-2.fc19:
* should fix your issue,
* was pushed to the Fedora 19 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing gnome-settings-daemon-3.8.4-2.fc19'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2013-14394/gnome-settings-daemon-3.8.4-2.fc19
then log in and leave karma (feedback).

Comment 10 Fedora Update System 2013-08-12 18:01:16 UTC
gnome-settings-daemon-3.8.4-2.fc19 has been pushed to the Fedora 19 stable repository.  If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.