[Top][All Lists]

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

[Bug 1407808] Re: virtual console gives strange response to ANSI DSR

From: Nadav Har'El
Subject: [Bug 1407808] Re: virtual console gives strange response to ANSI DSR
Date: Mon, 10 Aug 2020 08:56:41 -0000

The bug still very much exists (I tested qemu 4.2.1):
If you don't use "-serial stdio" (or its newer variants), by default Qemu opens 
a new black "console" to run the application. It is not clear to me exactly 
which terminal this console is supposed to emulate, but it does seem to support 
most ANSI escape sequences I tried. However, it supports the ANSI "DSR" (Device 
Status Report) escape sequence, ESC [ 6 n (see 
https://en.wikipedia.org/wiki/ANSI_escape_code), incorrectly, just as I 
reported in the original issue. This is still true today.

You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.

  virtual console gives strange response to ANSI DSR

Status in QEMU:

Bug description:
  With "-serial vc" (which is the default), qemu make strange responses
  to the ANSI DSR escape sequence (\033[6n) which can confuse guests.

  Terminal emulators supporting the ANSI escape sequences usually
  support the "Device Status Report" escape sequence, \033[6n, to which
  as a response the terminal injects as input the response \033[n;mR,
  containing the current cursor position. An application running in the
  guest can use this escape sequence to, for example, figure out the
  size of the terminal it is running under, which can be useful as the
  guest has no other standard way to figure out a "size" for the serial

  Unfortunately, it seems that qemu when run with "-serial vc" (which
  appears to be the default), when qemu gets the \033[6n escape sequence
  on the serial port, it just responds with a single \033, and that's
  it! This can confuse an application, could concievably assume that a
  terminal either supports this escape sequence and injects the correct
  response (\033[n;mR), or doesn't support it and injects absolutely
  nothing as input - but not something in between.

  This caused a problem on one shell implementation on OSv that tried to
  figure out the terminal's size, and had to work around this unexpected
  behavior (see https://github.com/cloudius-

To manage notifications about this bug go to:

reply via email to

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