* [Qemu-devel] [PATCH] monitor: fix crash at info pci
@ 2010-02-01 15:12 Michael S. Tsirkin
2010-02-01 15:19 ` [Qemu-devel] " Luiz Capitulino
0 siblings, 1 reply; 3+ messages in thread
From: Michael S. Tsirkin @ 2010-02-01 15:12 UTC (permalink / raw)
To: qemu-devel, lcapitulino
info pci returns a bus object, not a qdict, which leads to a crash in
monitor which wants a qdict. Not sure what the right fix is: this patch
just checks and handles non-disct command as synchronous. OTOH if we
definitely need all commands to return a dict, we should change return
type appropriately.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
I got a crash at info pci command which looked
like this:
(qemu) info pci
Bus 0, device 0, function 0:
Host bridge: PCI device 8086:1237
id ""
Bus 0, device 1, function 0:
ISA bridge: PCI device 8086:7000
id ""
Bus 0, device 1, function 1:
IDE controller: PCI device 8086:7010
BAR4: I/O at 0xc000 [0xc00f].
id ""
Bus 0, device 1, function 3:
Bridge: PCI device 8086:7113
IRQ 9.
id ""
Bus 0, device 2, function 0:
VGA controller: PCI device 1013:00b8
BAR0: 32 bit prefetchable memory at 0xe0000000 [0xe1ffffff].
BAR1: 32 bit memory at 0xe2000000 [0xe2000fff].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe].
id ""
Bus 0, device 3, function 0:
Ethernet controller: PCI device 8086:100e
IRQ 11.
BAR0: 32 bit memory at 0xe2020000 [0xe203ffff].
BAR1: I/O at 0xc040 [0xc07f].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0001fffe].
id ""
Bus 0, device 4, function 0:
Ethernet controller: PCI device 1af4:1000
IRQ 11.
BAR0: I/O at 0xc080 [0xc09f].
BAR1: 32 bit memory at 0xe2060000 [0xe2060fff].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe].
id ""
Program received signal SIGSEGV, Segmentation fault.
qdict_find (qdict=0x0, key=0x5a382a "__mon_async", hash=<value optimized out>) at qdict.c:92
92 QLIST_FOREACH(entry, &qdict->table[hash], next)
(gdb) p qdict->table[hash]
Cannot access memory at address 0x18
(gdb) where
#0 qdict_find (qdict=0x0, key=0x5a382a "__mon_async", hash=<value optimized out>) at qdict.c:92
#1 0x000000000045d25e in qdict_haskey (qdict=0x0, key=0x5a382a "__mon_async") at qdict.c:151
#2 0x00000000004153ec in is_async_return (data=<value optimized out>) at /root/scm/qemu/monitor.c:3703
#3 monitor_call_handler (data=<value optimized out>) at /root/scm/qemu/monitor.c:3713
#4 0x0000000000417510 in handle_user_command (mon=0xcf3010, cmdline=0x5a6530 "")
at /root/scm/qemu/monitor.c:3749
#5 0x00000000004176de in monitor_command_cb (mon=0xcf3010, cmdline=<value optimized out>,
opaque=<value optimized out>) at /root/scm/qemu/monitor.c:4263
#6 0x000000000046169b in readline_handle_byte (rs=0x12080b0, ch=<value optimized out>) at readline.c:369
#7 0x000000000041776c in monitor_read (opaque=<value optimized out>, buf=0x7fffffffcc60 "\r\212\204$\245",
size=1) at /root/scm/qemu/monitor.c:4249
#8 0x00000000004824eb in fd_chr_read (opaque=0xc8ab70) at qemu-char.c:568
#9 0x000000000040aa90 in main_loop_wait (timeout=5000) at /root/scm/qemu/vl.c:3758
#10 0x000000000040d015 in main_loop () at /root/scm/qemu/vl.c:3981
#11 main () at /root/scm/qemu/vl.c:6027
(gdb) frame 3
#3 monitor_call_handler (data=<value optimized out>) at /root/scm/qemu/monitor.c:3713
3713 if (is_async_return(data)) {
(gdb) p data
$1 = (QObject *) 0xc89fc0
(gdb) p *data
$2 = {type = 0x5d0a10, refcnt = 1}
this seems to fix it.
diff --git a/monitor.c b/monitor.c
index fbae5ce..b681c53 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3700,7 +3700,8 @@ static void monitor_print_error(Monitor *mon)
static int is_async_return(const QObject *data)
{
- return data && qdict_haskey(qobject_to_qdict(data), "__mon_async");
+ return data && qobject_to_qdict(data) &&
+ qdict_haskey(qobject_to_qdict(data), "__mon_async");
}
static void monitor_call_handler(Monitor *mon, const mon_cmd_t *cmd,
--
1.6.6.144.g5c3af
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] Re: [PATCH] monitor: fix crash at info pci
2010-02-01 15:12 [Qemu-devel] [PATCH] monitor: fix crash at info pci Michael S. Tsirkin
@ 2010-02-01 15:19 ` Luiz Capitulino
2010-02-01 16:11 ` [Qemu-devel] Re: [PATCH] monitor: fix crash at info pci\ Michael S. Tsirkin
0 siblings, 1 reply; 3+ messages in thread
From: Luiz Capitulino @ 2010-02-01 15:19 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: qemu-devel
On Mon, 1 Feb 2010 17:12:11 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> info pci returns a bus object, not a qdict, which leads to a crash in
> monitor which wants a qdict. Not sure what the right fix is: this patch
> just checks and handles non-disct command as synchronous. OTOH if we
> definitely need all commands to return a dict, we should change return
> type appropriately.
This has already been fixed by commit 82617d7, thanks anyway :)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] Re: [PATCH] monitor: fix crash at info pci\
2010-02-01 15:19 ` [Qemu-devel] " Luiz Capitulino
@ 2010-02-01 16:11 ` Michael S. Tsirkin
0 siblings, 0 replies; 3+ messages in thread
From: Michael S. Tsirkin @ 2010-02-01 16:11 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: qemu-devel
On Mon, Feb 01, 2010 at 01:19:50PM -0200, Luiz Capitulino wrote:
> On Mon, 1 Feb 2010 17:12:11 +0200
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > info pci returns a bus object, not a qdict, which leads to a crash in
> > monitor which wants a qdict. Not sure what the right fix is: this patch
> > just checks and handles non-disct command as synchronous. OTOH if we
> > definitely need all commands to return a dict, we should change return
> > type appropriately.
>
> This has already been fixed by commit 82617d7, thanks anyway :)
Yes, fixed now.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-02-01 16:14 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-01 15:12 [Qemu-devel] [PATCH] monitor: fix crash at info pci Michael S. Tsirkin
2010-02-01 15:19 ` [Qemu-devel] " Luiz Capitulino
2010-02-01 16:11 ` [Qemu-devel] Re: [PATCH] monitor: fix crash at info pci\ Michael S. Tsirkin
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.