Bug 961575

Summary: segfault using GTK broadway backend
Product: [Community] Virtualization Tools Reporter: Michael Hines <mrhines>
Component: virt-viewerAssignee: Daniel Berrangé <berrange>
Status: CLOSED INSUFFICIENT_DATA QA Contact:
Severity: high Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: dyasny, xen-maint
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 961577 (view as bug list) Environment:
Last Closed: 2013-05-10 01:52:26 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:
Bug Depends On:    
Bug Blocks: 961577    

Description Michael Hines 2013-05-10 01:44:53 UTC
Description of problem:

The GTK broadway backend is a very convenient way to see applications over websockets in HTML5.

Trying to use virt-viewer causes a segfault as soon as you try to access the viewer inside the browser.

Version-Release number of selected component (if applicable):

virt-viewer-0.5.6

How reproducible:

100% reproducible. Just run with GDB_BACKEND=broadway set and then point your browser to port 8080 and try to use remote-viewer inside the browser. The segfault is immediate.

Steps to Reproduce:
1. GDK_BACKEND=broadway remote-viewer URI
2. Load chrome/firefox and point to port 8080 on the localhost
3. Then try to interact with the viewer
  
Actual results:

mrhines@mrhinesdev:~/packages/virt-viewer-0.5.6$ GDK_BACKEND=broadway gdb remote-viewer
GNU gdb (GDB) 7.5-ubuntu
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/remote-viewer...done.
(gdb) run spice://klinux13:5900
Starting program: /usr/bin/remote-viewer spice://klinux13:5900
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[New Thread 0xaf07fb40 (LWP 8842)]
[New Thread 0xae87eb40 (LWP 8843)]
[New Thread 0xadcffb40 (LWP 8846)]

(remote-viewer:8837): vnc-keymap-WARNING **: Unsupported GDK Windowing platform.
Disabling extended keycode tables.
Please report to gtk-vnc-list
including the following information:

  - Operating system
  - GDK Windowing system build


Program received signal SIGSEGV, Segmentation fault.
require_socket (dpy=dpy@entry=0x809c400) at ../../src/xcb_io.c:65
65      ../../src/xcb_io.c: No such file or directory.
(gdb) bt
#0  require_socket (dpy=dpy@entry=0x809c400) at ../../src/xcb_io.c:65
#1  0xb70be45f in _XFlush (dpy=dpy@entry=0x809c400) at ../../src/xcb_io.c:514
#2  0xb70c1268 in _XGetRequest (dpy=dpy@entry=0x809c400, type=type@entry=103 'g', len=len@entry=4) at ../../src/XlibInt.c:1973
#3  0xb70a330c in XGetKeyboardControl (dpy=0x809c400, state=state@entry=0xbfffe644) at ../../src/GetKCnt.c:40
#4  0xb7e4f525 in get_keyboard_lock_modifiers (x_display=<optimized out>) at spice-widget.c:2563
#5  sync_keyboard_lock_modifiers (display=display@entry=0x826a0b8) at spice-widget.c:2592
#6  0xb7e506fa in focus_in_event (widget=0x826a0b8, focus=0x81f8538) at spice-widget.c:1433
#7  0xb7aee2a0 in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#8  0xb7592177 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#9  0xb7593a0d in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#10 0xb75ace77 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#11 0xb75ad8b3 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#12 0xb7c3d71b in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#13 0xb7c4d076 in gtk_widget_send_focus_change () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#14 0xb7c5055e in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#15 0xb7c5d4ca in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#16 0xb7c5da88 in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#17 0xb7aee1d2 in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#18 0xb75926bd in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#19 0xb7593826 in g_closure_invoke () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#20 0xb75a543a in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#21 0xb75ad473 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#22 0xb75ad8b3 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#23 0xb7c3d71b in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#24 0xb7aee068 in gtk_main_do_event () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#25 0xb7787eec in ?? () from /usr/lib/i386-linux-gnu/libgdk-3.so.0
#26 0xb77caa98 in ?? () from /usr/lib/i386-linux-gnu/libgdk-3.so.0
#27 0xb74d09e3 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#28 0xb74d0d80 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#29 0xb74d11db in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
#30 0xb7aecfed in gtk_main () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#31 0x08053458 in main (argc=1, argv=0xbffff304) at remote-viewer-main.c:316
(gdb) 
#0  require_socket (dpy=dpy@entry=0x809c400) at ../../src/xcb_io.c:65
#1  0xb70be45f in _XFlush (dpy=dpy@entry=0x809c400) at ../../src/xcb_io.c:514
#2  0xb70c1268 in _XGetRequest (dpy=dpy@entry=0x809c400, type=type@entry=103 'g', len=len@entry=4) at ../../src/XlibInt.c:1973
#3  0xb70a330c in XGetKeyboardControl (dpy=0x809c400, state=state@entry=0xbfffe644) at ../../src/GetKCnt.c:40
#4  0xb7e4f525 in get_keyboard_lock_modifiers (x_display=<optimized out>) at spice-widget.c:2563
#5  sync_keyboard_lock_modifiers (display=display@entry=0x826a0b8) at spice-widget.c:2592
#6  0xb7e506fa in focus_in_event (widget=0x826a0b8, focus=0x81f8538) at spice-widget.c:1433
#7  0xb7aee2a0 in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#8  0xb7592177 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#9  0xb7593a0d in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#10 0xb75ace77 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#11 0xb75ad8b3 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#12 0xb7c3d71b in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#13 0xb7c4d076 in gtk_widget_send_focus_change () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#14 0xb7c5055e in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#15 0xb7c5d4ca in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#16 0xb7c5da88 in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#17 0xb7aee1d2 in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#18 0xb75926bd in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#19 0xb7593826 in g_closure_invoke () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#20 0xb75a543a in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#21 0xb75ad473 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#22 0xb75ad8b3 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#23 0xb7c3d71b in ?? () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#24 0xb7aee068 in gtk_main_do_event () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#25 0xb7787eec in ?? () from /usr/lib/i386-linux-gnu/libgdk-3.so.0
#26 0xb77caa98 in ?? () from /usr/lib/i386-linux-gnu/libgdk-3.so.0
#27 0xb74d09e3 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#28 0xb74d0d80 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#29 0xb74d11db in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
#30 0xb7aecfed in gtk_main () from /usr/lib/i386-linux-gnu/libgtk-3.so.0
#31 0x08053458 in main (argc=1, argv=0xbffff304) at remote-viewer-main.c:316
(gdb) quit


Expected results:

No crash =)

Additional info: