Go to file
Pavel Grunt 85a96f881b webdav: Do not reuse cancellable
Create it on SPICE_PORT_EVENT_OPENED

From g_cancellable_reset documentation:
 Note that it is generally not a good idea to reuse an existing
 cancellable for more operations after it has been cancelled once,
 as this function might tempt you to do. The recommended practice is
 to drop the reference to a cancellable after cancelling it, and let it
 die with the outstanding async operations. You should create a fresh
 cancellable for further async operations

In our case reusing the cancellable leads to a crash:
 #0  0x00007ffff1662940 in g_task_return_error () at /lib64/libgio-2.0.so.0
 #1  0x00007ffff1662b60 in g_task_return_new_error () at /lib64/libgio-2.0.so.0
 #2  0x00007ffff57916e0 in read_cancelled (cancellable=<optimized out>, user_data=<optimized out>) at vmcstream.c:182
 #3  0x00007ffff1391555 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
 #4  0x00007ffff13a4062 in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
 #5  0x00007ffff13acf5f in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
 #6  0x00007ffff13ad33f in g_signal_emit () at /lib64/libgobject-2.0.so.0
 #7  0x00007ffff16100d8 in g_cancellable_cancel () at /lib64/libgio-2.0.so.0
 #8  0x00007ffff5775c01 in port_event (self=0xc7af60, event=1) at channel-webdav.c:512
 #9  0x00007ffff1391555 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
 #10 0x00007ffff13a445d in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
 #11 0x00007ffff13acf5f in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
 #12 0x00007ffff577479a in emit_main_context (opaque=0x7fffa5fff8d0) at gio-coroutine.c:200
 #13 0x00007ffff10b7847 in g_idle_dispatch () at /lib64/libglib-2.0.so.0
 #14 0x00007ffff10bade2 in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
 #15 0x00007ffff10bb160 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
 #16 0x00007ffff10bb20c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
 #17 0x00007ffff1677d2d in g_application_run () at /lib64/libgio-2.0.so.0
 #18 0x000000000041031a in main (argc=2, argv=0x7fffffffd928) at remote-viewer-main.c:42

Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=97113
2016-07-28 19:56:47 +02:00
build-aux Generate ChangeLog and ship it in the tarball 2012-01-15 22:07:05 +01:00
data Remove unmaintained spicy.nsis 2015-12-08 14:11:49 +01:00
doc doc: fix unused warning 2016-07-07 18:11:12 +02:00
m4 build-sys: update manywarnings.m4 2016-06-01 11:05:55 +02:00
man Add man page 2014-04-08 13:31:00 +02:00
po Adjust to GLib 2.36 2016-03-18 11:42:31 +01:00
spice-common@62f3024f42 configure: Add ${top_builddir}/spice-common to COMMON_CFLAGS 2016-07-14 08:56:33 -03:00
src webdav: Do not reuse cancellable 2016-07-28 19:56:47 +02:00
tests tests: file-transfer agent cancel 2016-07-07 16:19:23 +02:00
vapi Drop GTK+ 2.0 2016-03-14 12:02:52 +01:00
.gitmodules Make phodav an optional external dependency 2014-04-02 13:52:30 +02:00
.mailmap mailmap: fix my name 2016-06-21 14:37:00 +02:00
AUTHORS Release 0.8 2012-01-15 22:07:05 +01:00
autogen.sh build-sys: simplify autogen.sh 2014-12-01 13:28:09 +01:00
configure.ac configure: Add ${top_builddir}/spice-common to COMMON_CFLAGS 2016-07-14 08:56:33 -03:00
COPYING Initial import from SPICE 2010-11-23 17:00:17 +01:00
git.mk build-sys: update git.mk 2014-12-06 00:00:19 +01:00
Makefile.am Drop GTK+ 2.0 2016-03-14 12:02:52 +01:00
NEWS Update NEWS for 0.32 release 2016-06-21 16:11:55 +02:00
README Update README 2016-05-31 12:01:53 +02:00
spice-client-glib-2.0.pc.in build: move @SPICE_GLIB_REQUIRES@ to Requires.private 2012-03-07 21:07:20 +01:00
spice-client-gtk-3.0.pc.in build: fix .pc Requires 2011-07-16 15:47:37 +02:00
spice-controller.pc.in gtk/controller: install spice-controller library 2011-04-10 00:46:52 +02:00
TODO TODO: update 2015-06-08 17:38:57 +02:00

spice-gtk
=========

A Gtk client and libraries for SPICE remote desktop servers.

Please report bugs at: spice-devel@lists.freedesktop.org

Project content
---------------

libspice-client-glib-2.0
   provides glib objects for spice protocol decoding and surface rendering.
      * SpiceSession (see spice-session.h).
      * SpiceChannel (see spice-channel.h).
      * SpiceAudio (see spice-audio.h).
      * Various Spice<Type>Channel (see channel-<type>.h).

libspice-client-gtk-3.0
   provides gtk widget to show spice display and accept user input.
      * SpiceDisplay (see spice-widget.h)

spicy
   a gtk test client. The recommended client for end user is
   virt-viewer (http://git.fedorahosted.org/cgit/virt-viewer.git/)

spicy-screenshot
   Command line tool, connects to spice server and writes out a
   screen shot.

spicy-stats
   Command line tool, connects to spice server and writes out a
   summary of connection details, amount of bytes transferred...

SpiceClientGlib and SpiceClientGtk GObject-introspection modules.

Build dependencies:
------------------

. On Fedora use:

dnf builddep spice-gtk

. or install:

gtk3-devel spice-protocol intltool
openssl-devel pulseaudio-libs-devel pixman-devel
gobject-introspection-devel libjpeg-turbo-devel zlib-devel
cyrus-sasl-devel gtk-doc

. The GStreamer backend needs:

gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-plugins-good gstreamer1-plugins-bad-free

. If you build from git, you'll also need:

libtool automake vala vala-tools perl-Text-CSV