[Spice-devel] Spice is breaking in 32 bits hosts

Alon Levy alevy at redhat.com
Mon Mar 19 02:19:29 PDT 2012


On Mon, Mar 19, 2012 at 12:48:37AM -0300, Fabiano Fidêncio wrote:
> Guys, I've been trouble using spice-protocol/spice/qemu from git, in a
> 32 bits host.
> 
> Could somone take a look in this issue?
> 
> fidencio at sasha ~/src/spice $ sudo
> LD_LIBRARY_PATH=/home/fidencio/dev/lib gdb --args
> /home/fidencio/dev/bin/qemu-system-i386 -enable-kvm -m 1024 -device
> e1000,vlan=0 -net tap,script=/home/fidencio/dev/etc/qemu-ifup -vga qxl
> /home/fidencio/libvirt/images/fedora16-i686.img
> Copyright (C) 2011 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i686-redhat-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /home/fidencio/dev/bin/qemu-system-i386...(no
> debugging symbols found)...done.
> (gdb) r
> Starting program: /home/fidencio/dev/bin/qemu-system-i386 -enable-kvm
> -m 1024 -device e1000,vlan=0 -net
> tap,script=/home/fidencio/dev/etc/qemu-ifup -vga qxl
> /home/fidencio/libvirt/images/fedora16-i686.img
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/libthread_db.so.1".
> Detaching after fork from child process 7306.
> Bringing up interface tap0... Done
> Adding interface tap0 to bridge br0... Done
> [New Thread 0xb7edab40 (LWP 7316)]
> [New Thread 0xb76d9b40 (LWP 7317)]
> do_spice_init: starting 0.10.1
> spice_server_add_interface: SPICE_INTERFACE_QXL
> [New Thread 0xb1b8ab40 (LWP 7318)]
> red_worker_main: begin
> display_channel_create: create display channel
> cursor_channel_create: create cursor channel
> id 0, group 0, virt start 0, virt end ffffffff, generation 0, delta 0
> get_virt: panic: slot_id too big, addr=b1b8b008
> 
> Program received signal SIGABRT, Aborted.
> [Switching to Thread 0xb1b8ab40 (LWP 7318)]
> 0x00133416 in __kernel_vsyscall ()
> 
> (gdb) bt
> #0  0x00133416 in __kernel_vsyscall ()
> #1  0x0077d98f in __GI_raise (sig=6)
>     at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #2  0x0077f2d5 in __GI_abort () at abort.c:91
> #3  0x00634de0 in get_virt (info=0xb1b87800, addr=2981670920, add_size=
>     1228800, group_id=0) at red_memslots.c:110

The address translation logic is probably assuming a long is 64 bits,
and needs to be fixed. The stack trace is pointing you at the right
place.. I think get_memslot_id/get_virt and all along should switch
"unsigned long" with uint64_t.

> #4  0x0064324a in dev_create_primary_surface (worker=0xb1a66030,
>     surface_id=<optimized out>, surface=...) at red_worker.c:10417
> #5  0x006433fe in handle_dev_create_primary_surface (opaque=0xb1a66030,
>     payload=0xb1200468) at red_worker.c:10443
> #6  0x006322bc in dispatcher_handle_single_read (dispatcher=0x80a82cd0)
>     at dispatcher.c:120
> #7  dispatcher_handle_recv_read (dispatcher=0x80a82cd0) at dispatcher.c:143
> #8  0x00637636 in handle_dev_input (fd=20, event=1, opaque=0xb1a66030)
>     at red_worker.c:11032
> #9  0x0064d965 in red_worker_main (arg=0xbfffeecc) at red_worker.c:11163
> #10 0x004c7cd3 in start_thread (arg=0xb1b8ab40) at pthread_create.c:309
> #11 0x00841a2e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list