qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] Serial telnet console drops incoming characters on git master
Date: Mon, 8 Feb 2016 13:56:58 +0000	[thread overview]
Message-ID: <20160208135658.GC20236@redhat.com> (raw)
In-Reply-To: <20160208121153.GB20236@redhat.com>

On Mon, Feb 08, 2016 at 12:11:53PM +0000, Daniel P. Berrange wrote:
> On Sun, Feb 07, 2016 at 06:38:56PM +0000, Mark Cave-Ayland wrote:
> > Hi Daniel,
> > 
> > I found another issue where the latest set of console updates appear to
> > break -serial telnet on qemu-system-sparc. What I see is that while
> > incoming serial telnet appears fine, outgoing serial telnet traffic
> > caused by typing over the serial connection results in every other
> > character being dropped.
> > 
> > A quick session with git bisect points to the following commit:
> > 
> > commit f2001a7e0555b66d6db25a3ff1801540814045bb
> > Author: Daniel P. Berrange <berrange@redhat.com>
> > Date:   Tue Jan 19 11:14:30 2016 +0000
> > 
> >     char: don't assume telnet initialization will not block
> > 
> >     The current code for doing telnet initialization is writing to
> >     a socket without checking the return status. While it is highly
> >     unlikely to be a problem when writing to a bare socket, as the
> >     buffers are large enough to prevent blocking, this cannot be
> >     assumed safe with TLS sockets. So write the telnet initialization
> >     code into a memory buffer and then use an I/O watch to fully
> >     send the data.
> > 
> >     Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> >     Message-Id: <1453202071-10289-4-git-send-email-berrange@redhat.com>
> >     Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > 
> > I can reproduce this with git master as follows (built on Debian Wheezy
> > x86-64):
> > 
> > './configure' '--target-list=sparc-softmmu' --enable-trace-backends=stderr
> > make install
> > 
> > Next download a copy of the SS-20 PROM from
> > http://home.earthlink.net/~reif/ss20_v2.25_rom and then start QEMU with
> > the command line below:
> > 
> > ./qemu-system-sparc -bios ./ss20_v2.25_rom -M SS-20 -nographic -boot c
> > -serial telnet:0.0.0.0:3000,server -cpu "TI SuperSparc 60" -m 64
> > 
> > Now telnet to port 3000 and wait for the PROM to boot all the way to the
> > "ok" prompt. At this point if you type over the telnet connection, you
> > should see that every alternate character typed is being lost.
> 
> Thanks for the instructions to reproduce - I can reproduce it myself too
> 
> This is a bit of a strange bug - it only happens when QEMU is told to block
> at startup. If you add 'nowait' to the -serial arg then everything appears
> to work fine. The data sent over the wire to initialize telnet is identical
> in both cases, and data forwarded to the hardware backend is the same.
> 
> It is something todo with the fact that when we initialize the chardev in
> blocking mode with telnet, the 'tcp_chr_connect' call now happens from the
> main loop, since of from main initialization. I'm still investigating why
> this would make any difference...

Finally found out the problem - we ended up registering I/O watches
twice, so 1/2 the characters ended up in a blackhole. I've just copied
you on a suitable patch.

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 :|

      reply	other threads:[~2016-02-08 13:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-07 18:38 [Qemu-devel] Serial telnet console drops incoming characters on git master Mark Cave-Ayland
2016-02-08 12:11 ` Daniel P. Berrange
2016-02-08 13:56   ` Daniel P. Berrange [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160208135658.GC20236@redhat.com \
    --to=berrange@redhat.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).