Comment 9 for bug 918791

Revision history for this message
Justin L Werner (justin-l-werner) wrote :

I tried to build a 64-bit Precise desktop virt using libvirt manager, itself running on a 64-bit AMD 4-core box with Precise. When specifying the vmvga/vmware option, qemu keeled over and died as soon as (in VNC) it looked like the card was going into graphics mode.

I then built the image specifying 'cirrus' and launched it, played with it a bit w/unity 2d. Slow, but functional in my setup. I then relaunched the image specifying the 'vmware' vga option, and as soon as it looked as though the card were going into a high-res graphics mode, qemu SIGABRT-ed and died.

I then built a non-optimized unstripped qemu-kvm and tried launching directly wihile running under 'gdb'. I'm not all that familiar with dealing w/multi-threaded userspace code, but using the 'vmware' vga device, it doesn't take much to get a SEGFAULT (very repeatable with my setup):

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff47733a1 in _int_malloc () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0 0x00007ffff47733a1 in _int_malloc () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff4775d05 in malloc () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00005555556b85ae in malloc_and_trace (n_bytes=512) at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/vl.c:2140
#3 0x00007ffff792c9b9 in g_malloc () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00005555557c6982 in kvm_physical_sync_dirty_bitmap (start_addr=4244635648, end_addr=4261412864)
    at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/kvm-all.c:413
#5 0x00005555557c72f5 in kvm_client_sync_dirty_bitmap (client=0x555555c1c540, start_addr=4244635648, end_addr=4261412864)
    at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/kvm-all.c:679
#6 0x000055555579c04d in cpu_notify_sync_dirty_bitmap (start=4244635648, end=4261412864)
    at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/exec.c:1753
#7 0x000055555579d1bd in cpu_physical_sync_dirty_bitmap (start_addr=4244635648, end_addr=4261412864)
    at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/exec.c:2141
#8 0x00005555557d988e in memory_region_sync_dirty_bitmap (mr=0x555556c82bb0) at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/memory.c:1077
#9 0x000055555585b071 in vga_sync_dirty_bitmap (s=0x555556c82ba0) at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/hw/vga.c:1570
#10 0x000055555585b172 in vga_draw_graphic (s=0x555556c82ba0, full_update=0) at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/hw/vga.c:1599
#11 0x000055555585be27 in vga_update_display (opaque=0x555556c82ba0) at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/hw/vga.c:1861
#12 0x00005555556be4e4 in vmsvga_update_display (opaque=0x555556c82ba0) at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/hw/vmware_vga.c:954
#13 0x000055555562435c in vga_hw_update () at console.c:167
#14 0x000055555573e962 in vnc_refresh (opaque=0x7fffec337010) at ui/vnc.c:2475
#15 0x00005555556f2161 in qemu_run_timers (clock=0x55555643a1b0) at qemu-timer.c:420
#16 0x00005555556f23e9 in qemu_run_all_timers () at qemu-timer.c:483
#17 0x00005555556c1e64 in main_loop_wait (nonblocking=0) at main-loop.c:468
#18 0x00005555556b6a76 in main_loop () at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/vl.c:1482
#19 0x00005555556bbc9a in main (argc=43, argv=0x7fffffffe298, envp=0x7fffffffe3f8) at /home/justinlw/src/qemu/qemu-kvm-1.0+noroms/vl.c:3523