Go to file
Christophe Fergeau 5d6b1b8cce Don't unref 'display' in VirtViewerDisplaySpice::finalize
Right after being created, the SpiceDisplay 'display' private member is
added to the VirtViewerDisplaySpice GTK+ container with
gtk_container_add. This call will take ownership of the floating
reference that SpiceDisplay got upon creation.
This means VirtViewerDisplaySpice::display is a pointer to SpiceDisplay,
but it must not be unref'ed when the object is destroyed as we don't own
that reference.
As the container which owns the reference is the
VirtViewerDisplaySpice instance itself, we don't need to take an
additional reference here.

This fixes a crash when exiting remote-viewer after connecting to a
SPICE VM:
  #0  0x00007ffff3f33a81 in g_type_check_instance_is_fundamentally_a (type_instance=0x874500, fundamental_type=80) at gtype.c:3981
  #1  0x00007ffff3f19f96 in g_object_unref (_object=0x874500) at gobject.c:3067
  #2  0x000000000042a1ea in virt_viewer_display_spice_finalize (obj=0x6ebc30) at virt-viewer-display-spice.c:65
  #3  0x00007ffff3f1a257 in g_object_unref (_object=0x6ebc30) at gobject.c:3170
  #4  0x0000000000428de7 in destroy_display (data=0x6ebc30) at virt-viewer-session-spice.c:649
  #5  0x00007ffff3bbb51b in g_ptr_array_foreach (array=0x7e12a0, func=0x428d71 <destroy_display>, user_data=0x0) at garray.c:1502
  #6  0x00007ffff3bbaadf in ptr_array_free (array=0x7e12a0, flags=FREE_SEGMENT) at garray.c:1088
  #7  0x00007ffff3bbaa10 in g_ptr_array_unref (array=0x7e12a0) at garray.c:1036
  #8  0x00007ffff3bcf9bd in g_data_set_internal (datalist=0xa0adb0, key_id=1622, new_data=0x0, new_destroy_func=0x0, dataset=0x0) at gdataset.c:407
  #9  0x00007ffff3bcfe74 in g_datalist_id_set_data_full (datalist=0xa0adb0, key_id=1622, data=0x0, destroy_func=0x0) at gdataset.c:670
  #10 0x00007ffff3f1a771 in g_object_set_data (object=0xa0ada0, key=0x437252 "virt-viewer-displays", data=0x0) at gobject.c:3461
  #11 0x0000000000429b56 in virt_viewer_session_spice_channel_destroy (s=0x6eb910, channel=0xa0ada0, session=0x8cb3a0) at virt-viewer-session-spice.c:854
  #12 0x00007ffff3f12d81 in g_cclosure_marshal_VOID__OBJECT (closure=0x8e8fd0, return_value=0x0, n_param_values=2, param_values=0x7fffffffcd80, invocation_hint=0x7fffffffccc0, marshal_data=0x0) at gmarshal.c:1272
  #13 0x00007ffff3f0e143 in g_closure_invoke (closure=0x8e8fd0, return_value=0x0, n_param_values=2, param_values=0x7fffffffcd80, invocation_hint=0x7fffffffccc0) at gclosure.c:768
  #14 0x00007ffff3f2aef0 in signal_emit_unlocked_R (node=0x7c1f20, detail=0, instance=0x6eb910, emission_return=0x0, instance_and_params=0x7fffffffcd80) at gsignal.c:3553
  #15 0x00007ffff3f2a1f3 in g_signal_emit_valist (instance=0x6eb910, signal_id=219, detail=0, var_args=0x7fffffffd058) at gsignal.c:3309
  #16 0x00007ffff3f2a746 in g_signal_emit (instance=0x6eb910, signal_id=219, detail=0) at gsignal.c:3365
  #17 0x00007ffff529d784 in spice_session_channel_destroy (session=0x6eb910, channel=0xa0ada0) at spice-session.c:1990
  #18 0x00007ffff529ed25 in spice_channel_dispose (gobject=0xa0ada0) at spice-channel.c:153
  #19 0x00007ffff52acd26 in spice_display_channel_dispose (object=0xa0ada0) at channel-display.c:136
  #20 0x00007ffff3f1a132 in g_object_unref (_object=0xa0ada0) at gobject.c:3133
  #21 0x00007ffff52a4afb in spice_channel_delayed_unref (data=0xa0ada0) at spice-channel.c:2156
  #22 0x00007ffff3bf21d1 in g_idle_dispatch (source=0xa35a00, callback=0x7ffff52a49f3 <spice_channel_delayed_unref>, user_data=0xa0ada0) at gmain.c:5320
  #23 0x00007ffff3bef8eb in g_main_dispatch (context=0x68a920) at gmain.c:3064
  #24 0x00007ffff3bf0661 in g_main_context_dispatch (context=0x68a920) at gmain.c:3663
  #25 0x00007ffff3bf0853 in g_main_context_iterate (context=0x68a920, block=1, dispatch=1, self=0x6c8c60) at gmain.c:3734
  #26 0x00007ffff3bf0c7c in g_main_loop_run (loop=0x889b20) at gmain.c:3928
  #27 0x00007ffff69be44f in gtk_main () at gtkmain.c:1207
  #28 0x0000000000431896 in main (argc=1, argv=0x7fffffffd648) at remote-viewer-main.c:183
2014-09-23 15:19:47 +02:00
.tx Refresh translations from transifex 2013-07-09 21:12:23 +01:00
build-aux Import GNULIB rules for syntax checking code 2012-02-06 12:42:23 +00:00
data Update shared mime database on install/uninstall 2013-12-18 14:20:39 +01:00
icons Use a USB icon in the fullscreen toolbar 2014-03-13 12:57:14 +01:00
m4 build-sys: use git.mk to generate gitignore 2012-03-30 14:48:13 +02:00
man man: fix zoom level range 2014-06-20 13:36:04 +02:00
po Mark all strings for translation in the auth dialog 2014-09-15 14:54:02 +02:00
src Don't unref 'display' in VirtViewerDisplaySpice::finalize 2014-09-23 15:19:47 +02:00
.mailmap update .mailmap 2012-03-01 16:20:25 +01:00
acinclude.m4 Turn off deprecation warnings 2013-02-13 15:20:11 +00:00
AUTHORS.in Auto-generate AUTHORS file from GIT logs 2013-02-13 15:17:57 +00:00
autobuild.sh Don't use --nodeps for developer builds 2014-01-24 16:50:58 +00:00
autogen.sh Auto-generate AUTHORS file from GIT logs 2013-02-13 15:17:57 +00:00
cfg.mk Delete browser plugin entirely 2013-03-13 11:47:42 +00:00
ChangeLog Automatically generate changelog from GIT history during make dist 2011-11-07 12:42:15 +00:00
configure.ac ovirt: Add OvirtForeignMenu class 2014-08-18 13:20:42 +02:00
COPYING Added COPYING/INSTALL files 2007-08-15 20:22:40 -04:00
git.mk Fix some syntax violations in git.mk 2012-04-05 09:27:24 +01:00
GNUmakefile Import GNULIB rules for syntax checking code 2012-02-06 12:42:23 +00:00
intltool-extract.in Add support for i18n of the UI 2010-01-11 16:01:20 +00:00
intltool-merge.in Add support for i18n of the UI 2010-01-11 16:01:20 +00:00
intltool-update.in Add support for i18n of the UI 2010-01-11 16:01:20 +00:00
maint.mk Adapt 'po file' syntax check to look at more files 2013-02-13 15:18:19 +00:00
Makefile.am Disable mime database update during make distcheck 2013-12-19 10:06:13 +01:00
mingw-virt-viewer.spec.in Bump version 1.0 to simplify Windows MSI versioning 2014-06-23 16:16:01 +01:00
NEWS Update NEWS for 1.0 release 2014-07-21 11:07:31 +01:00
README Update spice-gtk requirement everywhere 2013-12-18 15:42:24 +01:00
virt-viewer.spec.in build-sys: Always prepend '-' to build id 2014-04-04 14:49:20 +02:00

  Virt Viewer
  ===========

Virt Viewer provides a graphical viewer for the guest OS
display. At this time is supports guest OS using the VNC
or SPICE protocols. Further protocols may be supported in
the future as user demand dicatates. The viewer can connect
directly to both local and remotely hosted guest OS, optionally
using SSL/TLS encryption.

Virt Viewer can be built with either GTK2 or GTK3, with the
default option currently being GTK2. The choice can be made
with:

   ./configure --with-gtk=3.0  (or =2.0)

Virt Viewer uses the GTK-VNC (>= 0.4.3) widget to provide a
display of the VNC protocol, which is available from

  http://gtk-vnc.sourceforge.net/

Virt Viewer uses the SPICE-GTK (>= 0.22) widget to provide a
display of the SPICE protocol, which is available from:

  http://spice-space.org/page/Spice-Gtk

Use of either SPICE-GTK or GTK-VNC can be disabled at time
of configure, with --without-gtk-vnc or --without-spice-gtk
respectively.

Virt Viewer uses libvirt to lookup information about the
guest OS display. This is available from

  http://libvirt.org/

Further information about the Virt Viewer application can be
found on the Virt Manager website:

  http://virt-manager.org/

Feedback should be directed to the mailing list at

  http://virt-manager.org/mailinglist.html

-- End