[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [virt-tools-list] [virt-viewer 2/2] session: Don't hold VirtViewerDisplay refs on channel destroy



On Tue, Nov 19, 2013 at 04:19:25PM -0500, Marc-André Lureau wrote:
> 
> 
> ----- Original Message -----
> > VirtViewerSessionSpice creates a reference-holding VirtViewerDisplay
> > array and associates it with the display SpiceChannel with
> > g_object_set_data(channel, "virt-viewer-displays").
> > 
> > When virt_viewer_session_spice_channel_destroy() is called and the display
> > channel is being destroyed, we should ensure these VirtViewerDisplay
> > references are dropped or the displays could outlive the session.
> 
> Should't it unref when the channel is disposed?

The backtrace below triggers during spice_channel_display_dispose (frame
#31), we start disposing the display channel, the session gets destroyed,
but the VirtViewerDisplaySpice are still alive through that
SpiceChannel:virt-viewer-displays array. and then some VirtViewerDisplaySpice
code runs and tries to use the VirtViewerSession that was just disposed.
After spice_channel_display_dispose() finishes running, the gobject data
'virt-viewer-displays' will get freed, and the VirtViewerDisplay will be
disposed of (that is, if we did not crash when trying to use the session).

By setting virt-viewer-displays to NULL in this patch, we make sure the
VirtViewerDisplay are freed at the same time as the VirtViewerSessionSpice.
It makes to do it here as the 'virt-viewer-displays' data is associated
with the display channel in VirtViewerSessionSpice.

Christophe

Attachment: pgpUkTtk9E2SY.pgp
Description: PGP signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]