Bug 980344

Summary: virt-viewer should require gtk2 >= 2.20
Product: Red Hat Enterprise Linux 6 Reporter: CongDong <codong>
Component: virt-viewerAssignee: Daniel Berrangé <berrange>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: low Docs Contact:
Priority: low    
Version: 6.5CC: acathrow, cfergeau, codong, dblechte, dyuan, hyao, lcui, marcandre.lureau, mzhan, tzheng
Target Milestone: rcKeywords: TestBlocker
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: virt-viewer-0.5.6-5.el6 Doc Type: Bug Fix
Doc Text:
no doc required
Story Points: ---
Clone Of:
: 980400 (view as bug list) Environment:
Last Closed: 2013-11-21 08:11:04 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description CongDong 2013-07-02 06:34:59 UTC
Description of problem:
virt-viewer cannot connect guest 


Version-Release number of selected component (if applicable):
# rpm -qa | grep spice
spice-glib-0.20-1.el6.x86_64
spice-gtk-debuginfo-0.20-1.el6.x86_64
spice-client-0.8.2-15.el6.x86_64
spice-gtk-python-0.20-1.el6.x86_64
spice-server-0.12.3-1.el6.x86_64
spice-server-debuginfo-0.12.3-1.el6.x86_64
spice-xpi-2.7-22.el6.x86_64
spice-gtk-tools-0.20-1.el6.x86_64
spice-vdagent-0.14.0-1.el6.x86_64
spice-protocol-0.12.2-1.el6.noarch
spice-gtk-0.20-1.el6.x86_64
# rpm -qa virt-viewer libvirt
libvirt-0.10.2-18.el6_4.9.x86_64
virt-viewer-0.5.6-1.el6.x86_64


How reproducible:
100%

Steps to Reproduce:
1. start a guest with spice grphics
# virsh start rhel6.3_spice
2. connect the guest with virt-viewer
# virt-viewer rhel6.3 --debug
3. change the graphics to vnc and do step2 again

Actual results:
step 2:
Cannot connect the spice guest and get debug message:
# virt-viewer rhel6.3 --debug
(virt-viewer:3883): virt-viewer-DEBUG: Couldn't load configuration: No such file or directory
(virt-viewer:3883): virt-viewer-DEBUG: Insert window 0 0x6ea100
(virt-viewer:3883): virt-viewer-DEBUG: fullscreen display 0: 0
(virt-viewer:3883): virt-viewer-DEBUG: connecting ...
(virt-viewer:3883): virt-viewer-DEBUG: Opening connection to libvirt with URI <null>
(virt-viewer:3883): virt-viewer-DEBUG: Add handle 15 1 0x7c4ca0
(virt-viewer:3883): virt-viewer-DEBUG: initial connect
(virt-viewer:3883): virt-viewer-DEBUG: notebook show status 0x75c140
(virt-viewer:3883): virt-viewer-DEBUG: notebook show status 0x75c140
(virt-viewer:3883): virt-viewer-DEBUG: Guest rhel6.3 is running, determining display
(virt-viewer:3883): virt-viewer-DEBUG: Set connect info: (null),(null),(null),-1,(null),(null),(null),0
(virt-viewer:3883): virt-viewer-DEBUG: Guest rhel6.3 has a spice display
virt-viewer: symbol lookup error: /usr/lib64/libspice-client-glib-2.0.so.8: undefined symbol: g_proxy_get_type

Step 3:
Cannot connect the vnc guest and get debug message:
# virt-viewer rhel6.3 --debug
(virt-viewer:4003): virt-viewer-DEBUG: Couldn't load configuration: No such file or directory
(virt-viewer:4003): virt-viewer-DEBUG: Insert window 0 0x2654100
(virt-viewer:4003): virt-viewer-DEBUG: fullscreen display 0: 0
(virt-viewer:4003): virt-viewer-DEBUG: connecting ...
(virt-viewer:4003): virt-viewer-DEBUG: Opening connection to libvirt with URI <null>
(virt-viewer:4003): virt-viewer-DEBUG: Add handle 15 1 0x272ed10
(virt-viewer:4003): virt-viewer-DEBUG: initial connect
(virt-viewer:4003): virt-viewer-DEBUG: notebook show status 0x26c6140
(virt-viewer:4003): virt-viewer-DEBUG: notebook show status 0x26c6140
(virt-viewer:4003): virt-viewer-DEBUG: Guest rhel6.3 is running, determining display
(virt-viewer:4003): virt-viewer-DEBUG: Set connect info: (null),(null),(null),-1,(null),(null),(null),0
(virt-viewer:4003): virt-viewer-DEBUG: Guest rhel6.3 has a vnc display
(virt-viewer:4003): virt-viewer-DEBUG: Guest graphics address is 0.0.0.0:5900
(virt-viewer:4003): virt-viewer-DEBUG: Guest graphics listen '0.0.0.0' is NULL or a wildcard, replacing with 'localhost'
(virt-viewer:4003): virt-viewer-DEBUG: Set connect info: localhost,localhost,5900,-1,(null),(null),(null),0
(virt-viewer:4003): virt-viewer-DEBUG: Error operation virDomainOpenGraphics forbidden for read only access
(virt-viewer:4003): virt-viewer-DEBUG: After open connection callback fd=-1
(virt-viewer:4003): virt-viewer-DEBUG: Opening direct TCP connection to display at localhost:5900:-1
(virt-viewer:4003): virt-viewer-DEBUG: notebook show status 0x26c6140
(virt-viewer:4003): virt-viewer-DEBUG: Add timeout 0x273b350 -1 0x7fd8a9edfd90 0x272f410 1
(virt-viewer:4003): virt-viewer-DEBUG: notebook show status 0x26c6140
(virt-viewer:4003): virt-viewer-DEBUG: notebook show display 0x26c6140
(virt-viewer:4003): virt-viewer-DEBUG: notebook show display 0x26c6140
(virt-viewer:4003): virt-viewer-DEBUG: Display size request 100x100 (desktop 100x100)
(virt-viewer:4003): virt-viewer-DEBUG: Allocated 400x375
(virt-viewer:4003): virt-viewer-DEBUG: Child allocate 375x375
virt-viewer: symbol lookup error: virt-viewer: undefined symbol: gtk_widget_get_mapped


Expected results:
virt-viewer can connect the guest and work well.

Additional info:

Comment 2 Cui Lei 2013-07-02 06:58:13 UTC
As it is RHEL-6.5-candidate, change to version to 6.5

Comment 4 Christophe Fergeau 2013-07-02 09:28:40 UTC
(In reply to CongDong from comment #0)
> 
> Actual results:
> step 2:

> (virt-viewer:3883): virt-viewer-DEBUG: Guest rhel6.3 has a spice display
> virt-viewer: symbol lookup error: /usr/lib64/libspice-client-glib-2.0.so.8:
> undefined symbol: g_proxy_get_type
> 

This symbol comes with the glib2 2.26 rebase, you need  https://brewweb.devel.redhat.com/buildinfo?buildID=279312 for example.
It would be worth explicitly requiring this version in the spice-gtk build.

Comment 5 Christophe Fergeau 2013-07-02 09:33:45 UTC
(In reply to CongDong from comment #0)
> 
> Step 3:
> virt-viewer: symbol lookup error: virt-viewer: undefined symbol:
> gtk_widget_get_mapped
> 

Similarly to the previous comment, you need to get the rebased 6.5 gtk2 package to avoid this issue, for example https://brewweb.devel.redhat.com/buildinfo?buildID=277007
And virt-viewer should get a require for a new enough gtk2 version to avoid such issues.

Comment 6 Marc-Andre Lureau 2013-07-02 13:14:22 UTC
I am not sure we need to explicitely bump the requirement in the spec. Those bugs quite clearly indicate that the update or the compose is not in sync with the build environment. It's not really the spec fault.

Comment 7 Marc-Andre Lureau 2013-07-05 13:21:12 UTC
this is a distro/release error, and the problem is solved by a correct update, so lower severity/blocker.

Comment 9 CongDong 2013-07-10 02:52:50 UTC
I can reproduce this bug with virt-viewer-0.5.6-1.el6.x86_64.
Steps:
As the steps in description.

result:
# virt-viewer test
(virt-viewer:26240): virt-viewer-DEBUG: Couldn't load configuration: File is empty
virt-viewer: symbol lookup error: virt-viewer: undefined symbol: g_object_bind_property



Verify:
I install the new virt-viewer, version:0.5.6-3.el6

Steps:
# virt-viewer test

result:
# virt-viewer test
(virt-viewer:26345): virt-viewer-DEBUG: Couldn't load configuration: File is empty
virt-viewer: symbol lookup error: virt-viewer: undefined symbol: g_object_bind_property

As the result, I think the problem is still there, so change to ASSIGNED.
The steps is right? Or I should update the gtk2 and glib2 manually.

Comment 10 Christophe Fergeau 2013-07-10 09:12:33 UTC
Ah, the change was done in the BuildRequires while what we need is Requires with explicit versioning, something like:

diff --git a/virt-viewer.spec b/virt-viewer.spec
index 0da6939..e0b1b7b 100644
--- a/virt-viewer.spec
+++ b/virt-viewer.spec
@@ -78,10 +78,12 @@ BuildRequires: gettext-devel
 BuildRequires: libtool
 %endif

+Requires: glib2 >= 2.26
 %if %{with_gtk3}
 BuildRequires: gtk3-devel >= 3.0.0
 %else
 BuildRequires: gtk2-devel >= 2.20
+Requires: gtk2 >= 2.20
 %endif
 BuildRequires: libvirt-devel >= 0.9.7
 BuildRequires: libxml2-devel

Comment 11 CongDong 2013-07-10 09:59:29 UTC
(In reply to Christophe Fergeau from comment #10)
> Ah, the change was done in the BuildRequires while what we need is Requires
> with explicit versioning, something like:
> 
> diff --git a/virt-viewer.spec b/virt-viewer.spec
> index 0da6939..e0b1b7b 100644
> --- a/virt-viewer.spec
> +++ b/virt-viewer.spec
> @@ -78,10 +78,12 @@ BuildRequires: gettext-devel
>  BuildRequires: libtool
>  %endif
> 
> +Requires: glib2 >= 2.26
>  %if %{with_gtk3}
>  BuildRequires: gtk3-devel >= 3.0.0
>  %else
>  BuildRequires: gtk2-devel >= 2.20
> +Requires: gtk2 >= 2.20
>  %endif
>  BuildRequires: libvirt-devel >= 0.9.7
>  BuildRequires: libxml2-devel


So I think virt-viewer should popup a message like:

Requires: gtk2 >= 2.20

not:

(virt-viewer:26345): virt-viewer-DEBUG: Couldn't load configuration: File is empty
virt-viewer: symbol lookup error: virt-viewer: undefined symbol: g_object_bind_property

Comment 12 Christophe Fergeau 2013-07-29 09:12:49 UTC
Should be good with latest build

Comment 14 CongDong 2013-07-30 01:34:10 UTC
I tried with the virt-viewer-0.5.6-5.el6.
If I didn't update the gtk2, the error message when I install virt-viewer is:

Error: Package: virt-viewer-0.5.6-6.el6.x86_64 (/virt-viewer-0.5.6-6.el6.x86_64)
           Requires: gtk2 >= 2.20
           Installed: gtk2-2.18.9-12.el6.x86_64 (@anaconda-RedHatEnterpriseLinux-201301301459.x86_64/6.4)
               gtk2 = 2.18.9-12.el6
Error: Package: virt-viewer-0.5.6-6.el6.x86_64 (/virt-viewer-0.5.6-6.el6.x86_64)
           Requires: glib2 >= 2.26
           Installed: glib2-2.22.5-7.el6.x86_64 (@anaconda-RedHatEnterpriseLinux-201301301459.x86_64/6.4)
               glib2 = 2.22.5-7.el6
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

As the result, set VERIFIED

Comment 15 errata-xmlrpc 2013-11-21 08:11:04 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-2013-1578.html