On 31/07/12 22:44, Luiz Capitulino wrote:
On Fri, 27 Jul 2012 18:31:41 -0300
Luiz Capitulino<lcapitul...@redhat.com> wrote:
[Please, read below why this is an RFC]
This series implements the 'Plan for error handling in QMP' as described
by Anthony in this email:
Tested with
http://repo.or.cz/w/qemu/qmp-unstable.git/shortlog/refs/heads/error/new-format/v1
| bool error_is_type(Error *err, ErrorClass err_class, const char *fmt)
| {
| const char *error_class;
| char *ptr;
| char *end;
|
| if (!err) {
| return false;
| }
|
| ptr = strstr(fmt, "'class': '");
^^^ "'class: '" doesn't exist in *fmt
| assert(ptr != NULL);
|
(gdb) r
Starting program: /home/devel/qemu/x86_64-softmmu/qemu-system-x86_64
--enable-kvm -monitor stdio -boot n -vnc :1
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff1f3f700 (LWP 16427)]
[New Thread 0x7fffe3dfe700 (LWP 16429)]
QEMU 1.1.50 monitor - type 'help' for more information
(qemu) migrate -d tcp:0:1234
qemu-system-x86_64: error.c:92: error_is_type: Assertion `ptr != ((void
*)0)' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff4ed48a5 in raise () from /lib64/libc.so.6
(gdb) bt
#0 0x00007ffff4ed48a5 in raise () from /lib64/libc.so.6
#1 0x00007ffff4ed6085 in abort () from /lib64/libc.so.6
#2 0x00007ffff4ecda1e in __assert_fail_base () from /lib64/libc.so.6
#3 0x00007ffff4ecdae0 in __assert_fail () from /lib64/libc.so.6
#4 0x00007ffff7ca86b9 in error_is_type (err=0x7ffff8bf0a90,
err_class=ERROR_CLASS_GENERIC_ERROR, fmt=0x7ffff7f63030 "Connection can
not be completed immediately") at error.c:92
#5 0x00007ffff7db645f in tcp_start_outgoing_migration
(s=0x7ffff82ef6c0, host_port=0x7ffff8c1a064 "0:1234",
errp=0x7fffffffc8f8) at migration-tcp.c:93
#6 0x00007ffff7db7d70 in qmp_migrate (uri=0x7ffff8c1a060 "tcp:0:1234",
has_blk=false, blk=false, has_inc=false, inc=false, has_detach=false,
detach=false, errp=0x7fffffffc8f8)
at migration.c:431
#7 0x00007ffff7cabbf8 in hmp_migrate (mon=0x7ffff8bb4760,
qdict=0x7ffff8c16de0) at hmp.c:948
#8 0x00007ffff7eb60e8 in handle_user_command (mon=0x7ffff8bb4760,
cmdline=0x7ffff8bb4bd0 "migrate -d tcp:0:1234") at
/home/devel/qemu/monitor.c:3882
#9 0x00007ffff7eb7ad4 in monitor_command_cb (mon=0x7ffff8bb4760,
cmdline=0x7ffff8bb4bd0 "migrate -d tcp:0:1234", opaque=0x0) at
/home/devel/qemu/monitor.c:4499
#10 0x00007ffff7df9d35 in readline_handle_byte (rs=0x7ffff8bb4bd0,
ch=13) at readline.c:373
#11 0x00007ffff7eb7a0d in monitor_read (opaque=0x7ffff8bb4760,
buf=0x7fffffffcae0 "\r", size=1) at /home/devel/qemu/monitor.c:4485
#12 0x00007ffff7ddcbf1 in qemu_chr_be_write (s=0x7ffff8baf580,
buf=0x7fffffffcae0 "\r", len=1) at qemu-char.c:164
#13 0x00007ffff7dde022 in fd_chr_read (opaque=0x7ffff8baf580) at
qemu-char.c:588
#14 0x00007ffff7ce8392 in qemu_iohandler_poll (readfds=0x7ffff87042e0,
writefds=0x7ffff8704360, xfds=0x7ffff87043e0, ret=1) at iohandler.c:121
#15 0x00007ffff7db5aca in main_loop_wait (nonblocking=0) at main-loop.c:497
#16 0x00007ffff7dadb70 in main_loop () at /home/devel/qemu/vl.c:1560
#17 0x00007ffff7db463d in main (argc=8, argv=0x7fffffffdfe8,
envp=0x7fffffffe030) at /home/devel/qemu/vl.c:3658
(gdb) frame 4
#4 0x00007ffff7ca86b9 in error_is_type (err=0x7ffff8bf0a90,
err_class=ERROR_CLASS_GENERIC_ERROR, fmt=0x7ffff7f63030 "Connection can
not be completed immediately") at error.c:92
92 assert(ptr != NULL);
(gdb) l
87 if (!err) {
88 return false;
89 }
90
91 ptr = strstr(fmt, "'class': '");
92 assert(ptr != NULL);
93 ptr += strlen("'class': '");
94
95 end = strchr(ptr, '\'');
96 assert(end != NULL);
--
Amos.