qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Serial telnet console drops incoming characters on git


From: Daniel P. Berrange
Subject: Re: [Qemu-devel] Serial telnet console drops incoming characters on git master
Date: Mon, 8 Feb 2016 12:11:53 +0000
User-agent: Mutt/1.5.24 (2015-08-30)

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 <address@hidden>
> 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 <address@hidden>
>     Message-Id: <address@hidden>
>     Signed-off-by: Paolo Bonzini <address@hidden>
> 
> 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...

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 via email to

[Prev in Thread] Current Thread [Next in Thread]