Re: [gtk-vnc-devel] crash on disconnect



Em Ter, 2008-04-15 às 01:47 +0100, Daniel P. Berrange escreveu:
> On Mon, Apr 14, 2008 at 07:45:06PM -0500, Anthony Liguori wrote:
> > Jonh Wendell wrote:
> > >Em Seg, 2008-04-14 às 22:56 +0100, Daniel P. Berrange escreveu:
> > >  
> > >>On Mon, Apr 14, 2008 at 04:11:53PM -0300, Jonh Wendell wrote:
> > >>    
> > >>>Hi, folks.
> > >>>
> > >>>I'm experiencing a crash when I disconnect in the middle of a zrle long
> > >>>update (like when showing a big colored background image).
> > >>>      
> > >>What do you mean by 'disconnect'  ? Are you closing the GTK window, or
> > >>just using the disconnect API in vncdisplay, or something else ?
> > >>    
> > >
> > >In Vinagre, I press 'Close' button, which removes it from notebook,
> > >which destroys the widget (actually it calls gtk_container_remove()
> > >which can potentially destroy the widget).
> > >
> > >  
> > >>>The bug itself was already reported in Ubuntu:
> > >>>https://bugs.launchpad.net/ubuntu/+source/vinagre/+bug/207205
> > >>>My backtrace is similar to that one attached there in Launchpad:
> > >>>http://launchpadlibrarian.net/12902128/ThreadStacktrace.txt
> > >>>
> > >>>I'm attaching my backtrace with debug output.
> > >>>
> > >>>Any idea?
> > >>>      
> > >>The debug output doesn't show any sign that GTK-VNC has been
> > >>asked to disconnect, so the co-routine is still running and
> > >>presumably whatever its writing to no longer exists.
> > >>    
> > >
> > >Yes, in my case, I do not call vnc_close() or similar, I just destroy
> > >the widget.
> > >  
> > 
> > That's not the best of things to do.  You should really explicitly close 
> > the connection before destroying the widget if you can.

I agree with Dan here, since we have vnc_display_close() in destroy().
Anyway, I modified vinagre to call vnc_display_close() before destroy
the widget and the result was the same.

> Actually that should be OK since we increment the ref-count when the
> coroutine is running so that the vncdisplay widget is not actually
> free'd until it exits. What's odd though is that the debug trace does
> not show the vncdisplay widget cleanup code being called which I would
> definitely expect if it were being destroyed indirectly by its container.
> 
> Dan.

OK, Dan, you're right. I managed to get a decent output this time:

**********************
gtk-vnc: FramebufferUpdate(16, 0, 0, 1024, 768)
gtk-vnc: Expose 0x0 @ 12,21
gtk-vnc: Expose 0x0 @ 1013,581
gtk-vnc: Expose 224x213 @ 340,71
gtk-vnc: Requesting that VNC close
gtk-vnc: Requesting graceful shutdown of connection
gtk-vnc: Waking up couroutine to shutdown gracefully
gtk-vnc: Closing the connection: gvnc_read() - ret=-1
Segmentation fault (core dumped)
**********************

The backtrace is exactly the same as before.

Thanks,
-- 
Jonh Wendell
www.bani.com.br






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