All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Cc: lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [PATCH 01/20] monitor: Drop broken, unused asynchronous command interface
Date: Fri, 22 May 2015 15:14:16 -0600	[thread overview]
Message-ID: <555F9C28.4040205@redhat.com> (raw)
In-Reply-To: <1432294585-5984-2-git-send-email-armbru@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 3079 bytes --]

On 05/22/2015 05:36 AM, Markus Armbruster wrote:
> The asynchronous monitor command interface goes back to commit 940cc30
> (Jan 2010).  Added a third case to command execution.  The hope back
> then according to the commit message was that all commands get
> converted to the asynchronous interface, killing off the other two
> cases.  Didn't happen.
> 
> The initial asynchronous commands balloon and info balloon were
> converted back to synchronous long ago (commit 96637bc and d72f32),
> with commit messages calling the asynchronous interface "not fully
> working" and "deprecated".  The only other user went away in commit
> 3b5704b.

The history is helpful; thanks.

> 
> New code generally uses synchronous commands and asynchronous events.
> 
> What exactly is still "not fully working" with asynchronous commands?
> Well, here's a bug that defeats actual asynchronous use pretty
> reliably: the reply's ID is wrong (and has always been wrong) unless
> you use the command synchronously!  To reproduce, we need an
> asynchronous command, so we have to go back before the commit 3b5704b.
> Run QEMU with spice:
> 
>     $ qemu-system-x86_64 -nodefaults -S -spice port=5900,disable-ticketing -qmp stdio
>     {"QMP": {"version": {"qemu": {"micro": 50, "minor": 2, "major":
> 2}, "package": ""}, "capabilities": []}}
> 
> Connect a spice client in another terminal:
> 
>     $ remote-viewer spice://localhost:5900
> 
> Set up a migration destination dummy in a third terminal:
> 
>     $ socat TCP-LISTEN:12345 STDIO
> 
> Now paste the following into the QMP monitor:
> 
>     { "execute": "qmp_capabilities" }

If you stick and "id":"i0" here...

>     { "execute": "client_migrate_info", "id": "i1", "arguments": { "protocol": "spice", "hostname": "localhost", "port": 12345 } }
>     { "execute": "query-kvm", "id": "i2" }
> 
> Produces two replies immediately, one to qmp_capabilities, and one to
> query-kvm:
> 
>     {"return": {}}

...it should show up here, for even less ambiguity about the problems
with the async response.

>     {"return": {"enabled": false, "present": true}, "id": "i2"}
> 
> Both are correct.  Two lines of debug output from libspice-server not
> shown.
> 
> Now EOF socat's standard input to make it close the connection.  This
> makes the asynchronous client_migrate_info complete.  It replies:
> 
>     {"return": {}}
> 
> Bug: "id": "i1" is missing.  Two lines of debug output from
> libspice-server not shown.  Cherry on top: storage for the missing ID
> is leaked.
> 
> Get rid of this stuff before somebody hurts himself with it.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  include/monitor/monitor.h |  5 ----
>  monitor.c                 | 68 ++---------------------------------------------
>  2 files changed, 2 insertions(+), 71 deletions(-)

Certainly takes an axe to it!

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

  reply	other threads:[~2015-05-22 21:14 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-22 11:36 [Qemu-devel] [PATCH 00/20] monitor: Wean core off QError, and other cleanups Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 01/20] monitor: Drop broken, unused asynchronous command interface Markus Armbruster
2015-05-22 21:14   ` Eric Blake [this message]
2015-05-26  9:00     ` Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 02/20] monitor: Clean up after previous commit Markus Armbruster
2015-05-22 21:19   ` Eric Blake
2015-05-26  9:01     ` Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 03/20] monitor: Improve and document client_migrate_info protocol error Markus Armbruster
2015-05-22 21:21   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 04/20] monitor: Convert client_migrate_info to QAPI Markus Armbruster
2015-05-22 21:43   ` Eric Blake
2015-05-26  9:16     ` Markus Armbruster
2015-05-26 12:51       ` Gerd Hoffmann
2015-05-26 12:52         ` Daniel P. Berrange
2015-05-26 14:12           ` Markus Armbruster
2015-05-26 14:15             ` Gerd Hoffmann
2015-05-26 14:55               ` Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 05/20] monitor: Use traditional command interface for HMP drive_del Markus Armbruster
2015-05-22 21:47   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 06/20] monitor: Use traditional command interface for HMP device_add Markus Armbruster
2015-05-22 21:56   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 07/20] monitor: Use trad. command interface for HMP pcie_aer_inject_error Markus Armbruster
2015-05-22 22:05   ` Eric Blake
2015-05-26  9:25     ` Markus Armbruster
2015-05-26 13:01       ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 08/20] monitor: Drop unused "new" HMP command interface Markus Armbruster
2015-05-22 22:10   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 09/20] monitor: Propagate errors through qmp_check_client_args() Markus Armbruster
2015-05-22 22:19   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 10/20] monitor: Propagate errors through qmp_check_input_obj() Markus Armbruster
2015-05-22 22:20   ` Eric Blake
2015-05-26  9:27     ` Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 11/20] monitor: Wean monitor_protocol_emitter() off mon->error Markus Armbruster
2015-05-22 22:22   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 12/20] monitor: Inline monitor_has_error() into its only caller Markus Armbruster
2015-05-22 22:23   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 13/20] monitor: Limit QError use to command handlers Markus Armbruster
2015-05-22 22:38   ` Eric Blake
2015-05-26  9:45     ` Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 14/20] monitor: Rename handle_user_command() to handle_hmp_command() Markus Armbruster
2015-05-22 22:43   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 15/20] monitor: Rename monitor_control_read(), monitor_control_event() Markus Armbruster
2015-05-22 22:46   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 16/20] monitor: Unbox Monitor member mc and rename to qmp Markus Armbruster
2015-05-22 22:52   ` Eric Blake
2015-05-26  9:48     ` Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 17/20] monitor: Drop do_qmp_capabilities()'s superfluous QMP check Markus Armbruster
2015-05-22 22:53   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 18/20] monitor: Turn int command_mode into bool in_command_mode Markus Armbruster
2015-05-22 22:56   ` Eric Blake
2015-05-26  9:49     ` Markus Armbruster
2015-05-22 11:36 ` [Qemu-devel] [PATCH 19/20] monitor: Rename monitor_ctrl_mode() to monitor_is_qmp() Markus Armbruster
2015-05-22 22:59   ` Eric Blake
2015-05-22 11:36 ` [Qemu-devel] [PATCH 20/20] monitor: Change return type of monitor_cur_is_qmp() to bool Markus Armbruster
2015-05-22 23:00   ` Eric Blake
2015-05-26  9:49     ` Markus Armbruster

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=555F9C28.4040205@redhat.com \
    --to=eblake@redhat.com \
    --cc=armbru@redhat.com \
    --cc=lcapitulino@redhat.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.