Bug 772921 - RHSM notification icon failure - closes subscription-manager-gui
Summary: RHSM notification icon failure - closes subscription-manager-gui
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: subscription-manager
Version: 5.8
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: rc
: ---
Assignee: Michael Stead
QA Contact: IDM QE LIST
URL:
Whiteboard:
Depends On:
Blocks: 715031 rhel58rtt
TreeView+ depends on / blocked
 
Reported: 2012-01-10 10:52 UTC by Alexander Todorov
Modified: 2012-02-21 06:44 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-02-21 06:44:25 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
nasty feedback after clicking rhsm-icon while subscription-manager-gui is already running (365.28 KB, image/png)
2012-01-18 15:56 UTC, John Sefler
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2012:0154 0 normal SHIPPED_LIVE subscription-manager bug fix update 2012-02-20 15:06:04 UTC

Description Alexander Todorov 2012-01-10 10:52:17 UTC
Description of problem:
On a fresh install:
As root or regular user run subscription-manager-gui from gnome-terminal.
The application starts and displays its window. Shortly after in the notification area an icon displays that says "Invalid or Missing Entitlement certificates".

After clicking on the icon (not the popup message) the window of subscription-manager-gui closes:



(subscription-manager-gui:4571): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:4571): libglade-WARNING **: unknown property `orientation' for class `GtkVPaned'

(subscription-manager-gui:4571): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'
/usr/sbin/subscription-manager-gui:126: GtkWarning: gdk_draw_line: assertion `gc != NULL' failed
  sys.exit(gtk.main() or 0)


python: Objects/stringobject.c:117: PyString_FromString: Assertion `str != ((void *)0)' failed.


^^^^^ this is the error.

Version-Release number of selected component (if applicable):
subscription-manager-0.98.10-1.el5

How reproducible:
always

Steps to Reproduce (the easiest):
1. Perform fresh 5.8 install (I used Xen PV guest, default install)
2. Skip firstboot registration
3. Login as root into GNOME
4. Open gnome-terminal and run subscription-manager-gui
5. Wait for the notification icon to appear and popup its message
6. Click on the icon, not the message (or wait for the message to hide)

  
Actual results:
Error, program closes

Expected results:
Not sure but program should not close. 

Additional info:

Comment 1 John Sefler 2012-01-18 15:53:58 UTC
Yes - I am able to reproduce this bug in RHEL58-snapshot-4.
In my opinion this is a sure blocker!  It creates a nasty situation where the user will try to repeatedly click the rhsm-icon and a blank dialog appears.  See attached screenshotscreenshot.


A DBUS exception is being thrown when trying to launch a second instance of subscription-manager-gui.  Below is a simple recreate for the same problem and the offending DBUS traceback is at the end...

  
[root@jsefler-rhel58server-snap4 ~]# subscription-manager-gui&
[1] 31398
[root@jsefler-rhel58server-snap4 ~]# 
(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `has_tooltip' for class `GtkToolButton'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `has_tooltip' for class `GtkToolButton'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `has_tooltip' for class `GtkToolButton'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `has_tooltip' for class `GtkToolButton'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `has_tooltip' for class `GtkToolButton'

(subscription-manager-gui:31398): libglade-WARNING **: unknown attribute `swapped' for <signal>.

(subscription-manager-gui:31398): libglade-WARNING **: unknown attribute `swapped' for <signal>.

(subscription-manager-gui:31398): libglade-WARNING **: unknown attribute `swapped' for <signal>.

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVPaned'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVPaned'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'
/usr/share/rhsm/subscription_manager/gui/widgets.py:47: GtkWarning: gdk_gc_new: assertion `drawable != NULL' failed
  self.glade = gtk.glade.XML(os.path.join(GLADE_DIR, glade_file))
/usr/share/rhsm/subscription_manager/gui/widgets.py:47: GtkWarning: gdk_gc_copy: assertion `GDK_IS_GC (dst_gc)' failed
  self.glade = gtk.glade.XML(os.path.join(GLADE_DIR, glade_file))
/usr/share/rhsm/subscription_manager/gui/widgets.py:47: GtkWarning: gdk_gc_set_values: assertion `GDK_IS_GC (gc)' failed
  self.glade = gtk.glade.XML(os.path.join(GLADE_DIR, glade_file))
/usr/share/rhsm/subscription_manager/gui/widgets.py:47: GtkWarning: gdk_gc_set_dashes: assertion `GDK_IS_GC (gc)' failed
  self.glade = gtk.glade.XML(os.path.join(GLADE_DIR, glade_file))

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVPaned'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVPaned'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `invisible_char_set' for class `GtkEntry'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVPaned'

(subscription-manager-gui:31398): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'
/usr/sbin/subscription-manager-gui:126: GtkWarning: gdk_draw_line: assertion `gc != NULL' failed
  sys.exit(gtk.main() or 0)

[root@jsefler-rhel58server-snap4 ~]# subscription-manager-gui

(subscription-manager-gui:31500): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31500): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31500): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31500): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'

(subscription-manager-gui:31500): libglade-WARNING **: unknown property `orientation' for class `GtkVBox'
subscription-manager-gui is already running
python: Objects/stringobject.c:117: PyString_FromString: Assertion `str != ((void *)0)' failed.
Traceback (most recent call last):
  File "/usr/sbin/subscription-manager-gui", line 113, in ?
    show = bus.get_object(BUS_NAME, BUS_PATH).get_dbus_method('show_window')
  File "/usr/lib64/python2.4/site-packages/dbus/proxies.py", line 25, in __call__
    ret = self._proxy_method (*args, **keywords)
  File "/usr/lib64/python2.4/site-packages/dbus/proxies.py", line 102, in __call__
    reply_message = self._connection.send_with_reply_and_block(message, timeout)
  File "dbus_bindings.pyx", line 455, in dbus_bindings.Connection.send_with_reply_and_block
dbus_bindings.DBusException: Message did not receive a reply (timeout by message bus)
[1]+  Aborted                 subscription-manager-gui
[root@jsefler-rhel58server-snap4 ~]#

Comment 2 John Sefler 2012-01-18 15:56:19 UTC
Created attachment 556062 [details]
nasty feedback after clicking rhsm-icon while subscription-manager-gui is already running

Comment 3 John Sefler 2012-01-18 19:38:19 UTC
I should also note that the behavior of rhsm-icon has regressed such that...

* In rhel57, launching subscription-manager-gui would simultaneously remove rhsm-icon from display in the toolbar.

* In rhel58, launching subscription-manager-gui seems to raise the display of the rhsm-icon in your face.  This gives the user to a reason to click it which in turn crashes the subscription-manager-gui.  That's nasty.

Comment 6 Chris Duryee 2012-01-20 21:20:50 UTC
John,

If a user attempts to start a second copy of subscription-manager-gui, the second copy will determine that the first copy is running, and send it a dbus message to raise the window to the foreground. It is this dbus message to raise the window that causes the crash.

Mike and I have a fix that does the following:

* if a second copy of subscription-manager-gui is started, it will not start BUT it will not raise the first copy to the foreground. Previously this would make the first copy crash, and the second copy would have quit as expected, leaving the user with no subscription-manager-gui running.
* the icon is not hidden when subscription-manager-gui is started

We believe the second part of the fix makes the icon behave more naturally; i.e., it only disappears when the system is green. Previously, it was disappearing when clicked and then immediately re-appearing when subscription-manager-gui started, since that also triggered a dbus call to update cert status to the icon. To a user, the impact of the second fix is that the text popup is not redisplayed on subscription-manager-gui startup, provided that the popup already appeared once.

The reason why we fixed that in addition to the first fix was due to the following scenario:

* user clicks icon
* icon disappears
* subscription-manager-gui appears, fires dbus call
* icon reappers immediately with popup
* user clicks icon again
* icon disappears, but there is no new subscription-manager-gui invocation to make it reappear again (NB: without the first fix, this step is where a crash would happen)

The second fix prevents this scenario from happening.

We have a fix but we need to test it out in dev a bit more to make sure it works as intended before sending on to QE. Let us know if the proposed solution needs work and we can discuss.

Comment 7 Michael Stead 2012-01-23 15:31:03 UTC
Fix committed to master (0c24fa9e52559328254eeffaa1e1a9cc43471af9) to be approved by QA before committing to 5.8

Comment 8 Michael Stead 2012-01-23 15:56:03 UTC
Added second part to the bug fix to not show the blipping message dialog.

master - de97915ee6436761a26e0f17dd36610ada61c5dd

Comment 9 John Sefler 2012-01-23 16:52:37 UTC
Verified build against master version...
[root@jsefler-onprem-5server ~]# rpm -q subscription-manager-gnome
subscription-manager-gnome-0.99.4-1.git.9.de97915.el5

Observations...
* a second invocation of subscription-manager-gui does NOT crash the first!
* a message "subscription-manager-gui is already running" is written to stdout when attempting to start a second sm gui
* the nasty empty message window in attachment 556062 [details] is no longer rendered at all
* rhsm-icon is always rendered in the toolbar when the system is NOT compliant
* rhsm-icon remains rendered even when the subscription-manager-gui is running - this is a new and improved behavior
* the rhsm-icon unrenders once sufficient entitlements are granted using sm gui and re-renders immediately when an unsubscribe event causes incompliance

My only complaint is that a click of the rhsm-icon (or a terminal call to subscription-manager-gui) will not raise an already running subscription-manager-gui from a minimized state.  This should be the subject of a new less severe bug.

I recommend merging this bug fix to the RHEL5.8 branch.

Comment 10 Chris Duryee 2012-01-23 17:08:38 UTC
merged

3663d4da99c8df6611fbfcba37795ca24d8d8ad6 RHEL5.8

Comment 14 John Sefler 2012-01-27 20:03:02 UTC
The observations in comment 9 were re-verified against the RHEL-5.8-Server-RC-1.1 compose containing package version:
[root@jsefler-onprem-rhel58server-rc11 ~]# rpm -q subscription-manager-gnome
subscription-manager-gnome-0.98.14-1.el5

moving to VERIFIED

Comment 15 errata-xmlrpc 2012-02-21 06:44:25 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2012-0154.html


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