[libvirt] Seeking for advice on 'virsh console' problems debugging

Daniel P. Berrange berrange at redhat.com
Mon Mar 10 10:24:43 UTC 2014


On Fri, Mar 07, 2014 at 10:04:48PM +0400, Roman Bogorodskiy wrote:
>   Daniel P. Berrange wrote:
> 
> > On Fri, Mar 07, 2014 at 07:49:04PM +0400, Roman Bogorodskiy wrote:
> > >   Daniel P. Berrange wrote:
> > > 
> > > > On Fri, Mar 07, 2014 at 06:15:24PM +0400, Roman Bogorodskiy wrote:
> > > > >   Daniel P. Berrange wrote:
> > > > > 
> > > > > > All those mangled messages are being printed out by libvirt client
> > > > > > code, and it is totally expected that log messages libvirt prints
> > > > > > are mangled in this way for the console.
> > > > > > 
> > > > > > What's more important is what data coming from the guest looks
> > > > > > like.
> > > > > 
> > > > > All those spaces come from the stream as well. For example, I've added
> > > > > the following debugging to daemonStreamHandleRead() into
> > > > > daemon/stream.c:
> > > > > 
> > > > > 732     ret = virStreamRecv(stream->st, buffer, bufferLen);
> > > > > 733     VIR_ERROR("buffer = [%s]", buffer);
> > > > > 
> > > > > And it prints stuff like:
> > > > > 
> > > > > 2014-03-07 13:29:34.060+0000: 34489787392: error :
> > > > > daemonStreamHandleRead:733 : buffer = [  File "/usr/bin/cloud    raise
> > > > > DataSourceNotFoundException(msg)
> > > > > ]
> > > > > 2014-03-07 13:29:34.060+0000: 34489787392: error :
> > > > > daemonStreamHandleRead:733 : buffer = [
> > > > > ]
> > > > > 2014-03-07 13:29:34.061+0000: 34489787392: error :
> > > > > daemonStreamHandleRead:733 : buffer = [
> > > > > ]
> > > > > 2014-03-07 13:29:34.061+0000: 34489787392: error :
> > > > > daemonStreamHandleRead:733 : buffer = [
> > > > > ]
> > > > 
> > > > The debug logs are *always* going to be strange when you have the
> > > > terminal in raw mode. If you're debugging the console support you
> > > > really must not try to use stderr for debug logs - you'll never get
> > > > sane results. Set libvirt to log to a file or syslog instead.
> > > 
> > > That's strange because libvirtd and virsh use different terminals for
> > > logging, but I've disabled stderr logging to be on the safe side.
> > > 
> > > Anyway, I've conducted an experiment like you suggested:
> > > 
> > > 1. run 'virsh' on linux to freebsd libvirtd, output is mangled:
> > > 
> > >  http://people.freebsd.org/~novel/misc/ttyweirdness2.png
> > > 
> > >  2. run 'virsh' on freebsd to linux libvirtd, output is good:
> > > 
> > >  http://people.freebsd.org/~novel/misc/ttyweirdness3.png
> > > 
> > > Guest uses the same image and the same domain xml.
> > > 
> > > Also, I removed all my custom debug stuff from virsh except mutex lock
> > > (as it doesn't work otherwise). So the problem seem to be on the
> > > libvirtd side...
> > 
> > Agreed, it is either libvirtd or bhyve that's the source of the
> > mangling then.
> 
> Very unlikely that it's bhyve, as I'm testing with qemu (plan to get to
> bhyve when I'll be able to get it fixed for qemu).

Oh, I didn't realize you were testing this with QEMU on BSD!

One further idea I just had - in QEMU code util/qemu-openpty.c we call
cfmakeraw()/tcsetattr on the PTY slave file descriptor. On Linux at 
least this affects both ends of the device, but I wonder if there's
perhaps a need to call this on the master file descriptor as well as
or instead of on the slave file descriptor ?  Or perhaps the client
(in this case libvirtd) itself has to call cfmakeraw/tcsetattr since
although its opening the same slave, it is a different file descriptor
for the slave

> And considering that 'cu' works properly, it's most likely the daemon.
> I'll continue looking in this direction. Thanks for the pointer, that
> helped to narrow down the problem indeed.

True, but interesting to strace 'cu' and libvirtd to see what differences
they have if any when opening the slave FD.

> 
> Roman Bogorodskiy



Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list