Skip to contentSkip to conversation

9p broken?

DISCUSSION Avi Kivity 3 participants 8 messages Jul 30, 2012 – Jul 31, 2012 KVM

lore
Share & tools
lore

Avi Kivity

author
#0 lore raw

Having an annoying bug on i386 kvm I decided to debug it buy running an i386 guest on my x86_64 host, use 9p to access a guest image, and run it using nested kvm.

However, 9p appears to be broken: first, the configure test fails (patch sent). Second, while mount works, ls on the mount point causes qemu to crash with

(gdb) bt
#0 error_set (errp=0x7fffe95fb128, fmt=0x5555558d4568 "{ 'class':
'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at /home/tlv/akivity/qemu/error.c:32
#1 0x000055555567cb06 in v9fs_attach (opaque=0x7fffe95e3020) at /home/tlv/akivity/qemu/hw/9pfs/virtio-9p.c:988
#2 0x000055555561d19f in coroutine_trampoline (i0=1449767888, i1=21845) at /home/tlv/akivity/qemu/coroutine-ucontext.c:138

#3  0x00007ffff5a93ef0 in ?? ()	from /lib64/libc.so.6
#4  0x00007fffffffce00 in ?? ()
#5  0x0000000000000000 in ?? (

**errp already points to a VirtFSFeatureBlocksMigration error; v9fs_attach() has been called a second time (the first time, understandably, on mount; the second on ls).

Command line:

qemu-system-x86_64 -m 4G -smp 4 -drive file=/images/Fedora-i386.img,if=virtio,cache=none -cdrom /images/iso/bfo.iso -device virtio-9p-pci,fsdev=root,mount_tag=root -fsdev local,id=root,path=/,security_model=passthrough -enable-kvm -net nic,model=virtio,netdev=net -netdev user,id=net -monitor stdio -cpu host

Signature · 1 line
error compiling committee.c: too many arguments to function
#1 lore raw
Quoted 16 lines · Avi Kivity

Having an annoying bug on i386 kvm I decided to debug it buy running an i386 guest on my x86_64 host, use 9p to access a guest image, and run it using nested kvm.

However, 9p appears to be broken: first, the configure test fails (patch sent). Second, while mount works, ls on the mount point causes qemu to crash with

(gdb) bt
#0 error_set (errp=0x7fffe95fb128, fmt=0x5555558d4568 "{ 'class':
'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at /home/tlv/akivity/qemu/error.c:32
#1 0x000055555567cb06 in v9fs_attach (opaque=0x7fffe95e3020) at /home/tlv/akivity/qemu/hw/9pfs/virtio-9p.c:988
#2 0x000055555561d19f in coroutine_trampoline (i0=1449767888, i1=21845) at /home/tlv/akivity/qemu/coroutine-ucontext.c:138

Quoted 7 lines
#3  0x00007ffff5a93ef0 in ?? ()	from /lib64/libc.so.6
#4  0x00007fffffffce00 in ?? ()
#5  0x0000000000000000 in ?? (

**errp already points to a VirtFSFeatureBlocksMigration error; v9fs_attach() has been called a second time (the first time, understandably, on mount; the second on ls).

Yes, I can reproduce this too.

LIBGUESTFS_QEMU=~/d/qemu/qemu.wrapper \
guestfish -v -- \
sparse /tmp/unused 100M : \
config -device 'virtio-9p-pci,fsdev=root,mount_tag=root' : \
config -fsdev 'local,id=root,path=/tmp,security_model=passthrough' : \
run : \
mount-9p root / : \
ls /

Stack trace:

#0 0x00007fb1d4d19ba5 in __GI_raise (sig=sig@entry=6)

    at ../nptl/sysdeps/unix/sysv/linux/raise.c:63
#1  0x00007fb1d4d1b358 in __GI_abort () at abort.c:90
#2  0x00007fb1d4d12972 in __assert_fail_base (fmt=
    0x7fb1d4e5c8e8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", 
    assertion=assertion@entry=0x7fb1d8e2e87e "*errp == ((void *)0)", 
    file=file@entry=0x7fb1d8e56217 "error.c", line=line@entry=35, 
    function=function@entry=
    0x7fb1d8e2e8ca <__PRETTY_FUNCTION__.13983> "error_set") at assert.c:92
#3  0x00007fb1d4d12a22 in __GI___assert_fail (assertion=assertion@entry=
    0x7fb1d8e2e87e "*errp == ((void *)0)", file=file@entry=
    0x7fb1d8e56217 "error.c", line=line@entry=35, function=function@entry=
    0x7fb1d8e2e8ca <__PRETTY_FUNCTION__.13983> "error_set") at assert.c:101
#4  0x00007fb1d8c1147f in error_set (errp=errp@entry=0x7fb1ce36a128, 
    fmt=fmt@entry=
    0x7fb1d8e39a78 "{ 'class': 'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at error.c:35
#5  0x00007fb1d8c57f9b in v9fs_attach (opaque=0x7fb1ce352020)
    at /home/rjones/d/qemu/hw/9pfs/virtio-9p.c:988
#6  0x00007fb1d8c0fcfa in coroutine_trampoline (i0=<optimized out>, 
    i1=<optimized out>) at coroutine-ucontext.c:138
#7  0x00007fb1d4d2a2f0 in ?? () from /lib64/libc.so.6
#8  0x00007fff51061aa0 in ?? ()
#9  0xb5b5b5b5b5b5b5b5 in ?? ()

#10 0x0000000000000000 in ?? ()

I'll add a regression test for 9p to libguestfs so at least we will catch this in future during Fedora builds.

Rich.

Signature · 4 lines
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/
#2 lore raw
Quoted 61 lines · Richard W.M. Jones
Quoted 16 lines · Avi Kivity

Having an annoying bug on i386 kvm I decided to debug it buy running an i386 guest on my x86_64 host, use 9p to access a guest image, and run it using nested kvm.

However, 9p appears to be broken: first, the configure test fails (patch sent). Second, while mount works, ls on the mount point causes qemu to crash with

(gdb) bt
#0 error_set (errp=0x7fffe95fb128, fmt=0x5555558d4568 "{ 'class':
'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at /home/tlv/akivity/qemu/error.c:32
#1 0x000055555567cb06 in v9fs_attach (opaque=0x7fffe95e3020) at /home/tlv/akivity/qemu/hw/9pfs/virtio-9p.c:988
#2 0x000055555561d19f in coroutine_trampoline (i0=1449767888, i1=21845) at /home/tlv/akivity/qemu/coroutine-ucontext.c:138

Quoted 7 lines
#3  0x00007ffff5a93ef0 in ?? ()	from /lib64/libc.so.6
#4  0x00007fffffffce00 in ?? ()
#5  0x0000000000000000 in ?? (

**errp already points to a VirtFSFeatureBlocksMigration error; v9fs_attach() has been called a second time (the first time, understandably, on mount; the second on ls).

Yes, I can reproduce this too.

LIBGUESTFS_QEMU=~/d/qemu/qemu.wrapper \
guestfish -v -- \
sparse /tmp/unused 100M : \
config -device 'virtio-9p-pci,fsdev=root,mount_tag=root' : \
config -fsdev 'local,id=root,path=/tmp,security_model=passthrough' : \
run : \
mount-9p root / : \
ls /

Stack trace:

#0 0x00007fb1d4d19ba5 in __GI_raise (sig=sig@entry=6)

    at ../nptl/sysdeps/unix/sysv/linux/raise.c:63
#1  0x00007fb1d4d1b358 in __GI_abort () at abort.c:90
#2  0x00007fb1d4d12972 in __assert_fail_base (fmt=
    0x7fb1d4e5c8e8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", 
    assertion=assertion@entry=0x7fb1d8e2e87e "*errp == ((void *)0)", 
    file=file@entry=0x7fb1d8e56217 "error.c", line=line@entry=35, 
    function=function@entry=
    0x7fb1d8e2e8ca <__PRETTY_FUNCTION__.13983> "error_set") at assert.c:92
#3  0x00007fb1d4d12a22 in __GI___assert_fail (assertion=assertion@entry=
    0x7fb1d8e2e87e "*errp == ((void *)0)", file=file@entry=
    0x7fb1d8e56217 "error.c", line=line@entry=35, function=function@entry=
    0x7fb1d8e2e8ca <__PRETTY_FUNCTION__.13983> "error_set") at assert.c:101
#4  0x00007fb1d8c1147f in error_set (errp=errp@entry=0x7fb1ce36a128, 
    fmt=fmt@entry=
    0x7fb1d8e39a78 "{ 'class': 'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at error.c:35
#5  0x00007fb1d8c57f9b in v9fs_attach (opaque=0x7fb1ce352020)
    at /home/rjones/d/qemu/hw/9pfs/virtio-9p.c:988
#6  0x00007fb1d8c0fcfa in coroutine_trampoline (i0=<optimized out>, 
    i1=<optimized out>) at coroutine-ucontext.c:138
#7  0x00007fb1d4d2a2f0 in ?? () from /lib64/libc.so.6
#8  0x00007fff51061aa0 in ?? ()
#9  0xb5b5b5b5b5b5b5b5 in ?? ()
Quoted 5 lines

#10 0x0000000000000000 in ?? ()

I'll add a regression test for 9p to libguestfs so at least we will catch this in future during Fedora builds.

I am not able to reproduce this, I had to patch configure to fix some compile errors, but then I am not hitting the crash. I am using the latest qemu. We do the below in 9p

    error_set(&s->migration_blocker, QERR_VIRTFS_FEATURE_BLOCKS_MIGRATION,
              s->ctx.fs_root ? s->ctx.fs_root : "NULL", s->tag);

I am not sure how we can hit that assert() in error_set() ?. We allocate s via

s = (V9fsState *)virtio_common_init() which does

vdev = g_malloc0(struct_size);

-aneesh

#3 lore raw
In reply to Avi Kivity
Quoted 7 lines · Avi Kivity

Having an annoying bug on i386 kvm I decided to debug it buy running an i386 guest on my x86_64 host, use 9p to access a guest image, and run it using nested kvm.

However, 9p appears to be broken: first, the configure test fails (patch sent). Second, while mount works, ls on the mount point causes qemu to crash with

I missed that you have already sent a patch for configure fix. That looks better that what i sent. I will ack that patch

Quoted 9 lines

(gdb) bt
#0 error_set (errp=0x7fffe95fb128, fmt=0x5555558d4568 "{ 'class':
'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at /home/tlv/akivity/qemu/error.c:32
#1 0x000055555567cb06 in v9fs_attach (opaque=0x7fffe95e3020) at /home/tlv/akivity/qemu/hw/9pfs/virtio-9p.c:988
#2 0x000055555561d19f in coroutine_trampoline (i0=1449767888, i1=21845) at /home/tlv/akivity/qemu/coroutine-ucontext.c:138

Quoted 8 lines
#3  0x00007ffff5a93ef0 in ?? ()	from /lib64/libc.so.6
#4  0x00007fffffffce00 in ?? ()
#5  0x0000000000000000 in ?? (

**errp already points to a VirtFSFeatureBlocksMigration error; v9fs_attach() has been called a second time (the first time, understandably, on mount; the second on ls).

Why are we calling attach a second time ?. I am also not able to reproduce this

root@qemu-img-64:~# mount -t 9p -otrans=virtio,version=9p2000.L v_tmp /mnt
root@qemu-img-64:~# ls /mnt/a.c
/mnt/a.c
Quoted 8 lines

Command line:

qemu-system-x86_64 -m 4G -smp 4 -drive file=/images/Fedora-i386.img,if=virtio,cache=none -cdrom /images/iso/bfo.iso -device virtio-9p-pci,fsdev=root,mount_tag=root -fsdev local,id=root,path=/,security_model=passthrough -enable-kvm -net nic,model=virtio,netdev=net -netdev user,id=net -monitor stdio -cpu host

-aneesh

author
#4 lore raw
Quoted 31 lines · Aneesh Kumar K.V
Quoted 7 lines · Avi Kivity

Having an annoying bug on i386 kvm I decided to debug it buy running an i386 guest on my x86_64 host, use 9p to access a guest image, and run it using nested kvm.

However, 9p appears to be broken: first, the configure test fails (patch sent). Second, while mount works, ls on the mount point causes qemu to crash with

I missed that you have already sent a patch for configure fix. That looks better that what i sent. I will ack that patch

Quoted 9 lines

(gdb) bt
#0 error_set (errp=0x7fffe95fb128, fmt=0x5555558d4568 "{ 'class':
'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at /home/tlv/akivity/qemu/error.c:32
#1 0x000055555567cb06 in v9fs_attach (opaque=0x7fffe95e3020) at /home/tlv/akivity/qemu/hw/9pfs/virtio-9p.c:988
#2 0x000055555561d19f in coroutine_trampoline (i0=1449767888, i1=21845) at /home/tlv/akivity/qemu/coroutine-ucontext.c:138

Quoted 8 lines
#3  0x00007ffff5a93ef0 in ?? ()	from /lib64/libc.so.6
#4  0x00007fffffffce00 in ?? ()
#5  0x0000000000000000 in ?? (

**errp already points to a VirtFSFeatureBlocksMigration error; v9fs_attach() has been called a second time (the first time, understandably, on mount; the second on ls).

Quoted 6 lines

Why are we calling attach a second time ?. I am also not able to reproduce this

root@qemu-img-64:~# mount -t 9p -otrans=virtio,version=9p2000.L v_tmp /mnt
root@qemu-img-64:~# ls /mnt/a.c
/mnt/a.c

I'm just doing ls /mnt (even tab completion: ls /mn<TAB> crashes qemu).

Signature · 1 line
error compiling committee.c: too many arguments to function
#5 lore raw
Quoted 32 lines · Avi Kivity
Quoted 31 lines · Aneesh Kumar K.V
Quoted 7 lines · Avi Kivity

Having an annoying bug on i386 kvm I decided to debug it buy running an i386 guest on my x86_64 host, use 9p to access a guest image, and run it using nested kvm.

However, 9p appears to be broken: first, the configure test fails (patch sent). Second, while mount works, ls on the mount point causes qemu to crash with

I missed that you have already sent a patch for configure fix. That looks better that what i sent. I will ack that patch

Quoted 17 lines

(gdb) bt
#0 error_set (errp=0x7fffe95fb128, fmt=0x5555558d4568 "{ 'class':
'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at /home/tlv/akivity/qemu/error.c:32
#1 0x000055555567cb06 in v9fs_attach (opaque=0x7fffe95e3020) at /home/tlv/akivity/qemu/hw/9pfs/virtio-9p.c:988
#2 0x000055555561d19f in coroutine_trampoline (i0=1449767888, i1=21845) at /home/tlv/akivity/qemu/coroutine-ucontext.c:138

#3  0x00007ffff5a93ef0 in ?? ()	from /lib64/libc.so.6
#4  0x00007fffffffce00 in ?? ()
#5  0x0000000000000000 in ?? (

**errp already points to a VirtFSFeatureBlocksMigration error; v9fs_attach() has been called a second time (the first time, understandably, on mount; the second on ls).

Quoted 9 lines
Quoted 6 lines

Why are we calling attach a second time ?. I am also not able to reproduce this

root@qemu-img-64:~# mount -t 9p -otrans=virtio,version=9p2000.L v_tmp /mnt
root@qemu-img-64:~# ls /mnt/a.c
/mnt/a.c

I'm just doing ls /mnt (even tab completion: ls /mn<TAB> crashes qemu).

Did this help ?

http://mid.gmane.org/1343719453-26768-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com

-aneesh

#7 lore raw
In reply to Avi Kivity
Quoted 16 lines · Avi Kivity

Having an annoying bug on i386 kvm I decided to debug it buy running an i386 guest on my x86_64 host, use 9p to access a guest image, and run it using nested kvm.

However, 9p appears to be broken: first, the configure test fails (patch sent). Second, while mount works, ls on the mount point causes qemu to crash with

(gdb) bt
#0 error_set (errp=0x7fffe95fb128, fmt=0x5555558d4568 "{ 'class':
'VirtFSFeatureBlocksMigration', 'data': { 'path': %s, 'tag': %s } }") at /home/tlv/akivity/qemu/error.c:32
#1 0x000055555567cb06 in v9fs_attach (opaque=0x7fffe95e3020) at /home/tlv/akivity/qemu/hw/9pfs/virtio-9p.c:988
#2 0x000055555561d19f in coroutine_trampoline (i0=1449767888, i1=21845) at /home/tlv/akivity/qemu/coroutine-ucontext.c:138

Quoted 8 lines
#3  0x00007ffff5a93ef0 in ?? ()	from /lib64/libc.so.6
#4  0x00007fffffffce00 in ?? ()
#5  0x0000000000000000 in ?? (

**errp already points to a VirtFSFeatureBlocksMigration error; v9fs_attach() has been called a second time (the first time, understandably, on mount; the second on ls).

Ok we mount with fid uid = (unsigned)~0. So we need to attach again when we do ls as root. I guess we can do that migration block in attach, or we have to do it conditionally. We also can hit the same if we do a path lookup as a different user.

-aneesh