[Spice-devel] [PATCH spice-gtk v2] vmcstream: set the right result for the task

Fabiano Fidêncio fidencio at redhat.com
Wed Jul 27 13:31:10 UTC 2016


On Wed, Jul 27, 2016 at 12:42 PM, Fabiano Fidêncio <fidencio at redhat.com> wrote:
> On Wed, Jul 27, 2016 at 12:39 PM, Christophe Fergeau
> <cfergeau at redhat.com> wrote:
>> On Wed, Jul 27, 2016 at 11:17:38AM +0200, Fabiano Fidêncio wrote:
>>> This bogus code was introduced when switching to GTask API. Seems that
>>> while writing those patches I just overlooked this part and set the wrong
>>> result for the task. As part of the problems introduced (and now fixed)
>>> you can notice that no output stream was being sent to the guest.
>>>
>>> Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
>>> ---
>>>  src/vmcstream.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/src/vmcstream.c b/src/vmcstream.c
>>> index c536f71..ffb1ba4 100644
>>> --- a/src/vmcstream.c
>>> +++ b/src/vmcstream.c
>>> @@ -411,7 +411,7 @@ write_cb(GObject *source_object,
>>>  {
>>>      GTask *task = user_data;
>>>
>>> -    g_task_return_pointer(task, g_object_ref(task), g_object_unref);
>>> +    g_task_return_pointer(task, g_object_ref(res), g_object_unref);
>>>
>>>      g_object_unref(task);
>>>  }
>>
>> You'll also need
>>
>> diff --git a/src/vmcstream.c b/src/vmcstream.c
>> index c536f71..32d8b5e 100644
>> --- a/src/vmcstream.c
>> +++ b/src/vmcstream.c
>> @@ -399,9 +399,13 @@ spice_vmc_output_stream_write_finish(GOutputStream *stream,
>>  {
>>      SpiceVmcOutputStream *self = SPICE_VMC_OUTPUT_STREAM(stream);
>>      GAsyncResult *res = g_task_propagate_pointer(G_TASK(simple), error);
>> +    gssize bytes_written;
>>
>>      SPICE_DEBUG("spicevmc write finish");
>> -    return spice_vmc_write_finish(self->channel, res, error);
>> +    bytes_written = spice_vmc_write_finish(self->channel, res, error);
>> +    g_object_unref(res);
>> +
>> +    return bytes_written;
>>  }
>>
>>  static void
>>
>>
>> (but this is arguably a slightly different bug which was already existing
>> before your change).
>
> Feel free to squash my patch into your change or push both separately.

Hmm. With your patch I can see the following critical
(remote-viewer:18180): GSpice-CRITICAL **:
spice_vmc_input_stream_read_all_async: assertion 'self->task == NULL'
failed

So, please, let's go for my patch and then we can get back to your
changes later on.

Best Regards,
--
Fabiano Fidêncio


More information about the Spice-devel mailing list