Hi,
  I've got a 25% repeatable crash doing a 'device-add e1000e'
in the netfilter code:

Program terminated with signal SIGSEGV, Segmentation fault.
#0  qemu_netfilter_receive (nf=0x76656474656e, 
direction=NET_FILTER_DIRECTION_TX, sender=0x563b5c78e130, flags=0, 
iov=0x563b5c78e7a0, iovcnt=4, sent_cb=0x0) at 
/home/dgilbert/git/hmp/net/filter.c:34
34          if (qemu_can_skip_netfilter(nf)) {
[Current thread is 1 (Thread 0x7f9657cfc700 (LWP 21410))]
Missing separate debuginfos, use: dnf debuginfo-install 
SDL-1.2.15-29.fc27.x86_64 at-spi2-atk-2.26.1-1.fc27.x86_64 
at-spi2-core-2.26.2-1.fc27.x86_64 atk-2.26.1-1.fc27.x86_64 
bluez-libs-5.47-2.fc27.x86_64 brlapi-0.6.6-8.fc27.x86_64 
bzip2-libs-1.0.6-24.fc27.x86_64 cairo-1.15.8-1.fc27.x86_64 
cairo-gobject-1.15.8-1.fc27.x86_64 celt051-0.5.1.3-14.fc27.x86_64 
cyrus-sasl-lib-2.1.26-34.fc27.x86_64 dbus-libs-1.12.0-1.fc27.x86_64 
expat-2.2.5-1.fc27.x86_64 fontconfig-2.12.6-4.fc27.x86_64 
freetype-2.8-6.fc27.x86_64 gdk-pixbuf2-2.36.11-1.fc27.x86_64 
glib2-2.54.2-1.fc27.x86_64 glibc-2.26-16.fc27.x86_64 
glusterfs-api-3.12.3-1.fc27.x86_64 glusterfs-libs-3.12.3-1.fc27.x86_64 
gmp-6.1.2-6.fc27.x86_64 gnutls-3.5.16-3.fc27.x86_64 
graphite2-1.3.10-3.fc27.x86_64 gstreamer1-1.12.3-1.fc27.x86_64 
gstreamer1-plugins-base-1.12.3-1.fc27.x86_64 gtk3-3.22.26-1.fc27.x86_64 
gvfs-client-1.34.1-1.fc27.x86_64 harfbuzz-1.4.8-1.fc27.x86_64 
keyutils-libs-1.5.10-3.fc27.x86_64 krb5-libs-1.15.2-4.fc27.x86_64 
libX11-1.6.5-4.fc27.x86_64 libXau-1.0.8-9.fc27.x86_64 
libXcomposite-0.4.4-11.fc27.x86_64 libXcursor-1.1.14-10.fc27.x86_64 
libXdamage-1.1.4-11.fc27.x86_64 libXext-1.3.3-7.fc27.x86_64 
libXfixes-5.0.3-4.fc27.x86_64 libXi-1.7.9-4.fc27.x86_64 
libXinerama-1.1.3-9.fc27.x86_64 libXrandr-1.5.1-4.fc27.x86_64 
libXrender-0.9.10-4.fc27.x86_64 libXtst-1.2.3-4.fc27.x86_64 
libacl-2.2.52-18.fc27.x86_64 libaio-0.3.110-9.fc27.x86_64 
libattr-2.4.47-21.fc27.x86_64 libblkid-2.30.2-1.fc27.x86_64 
libcacard-2.5.3-3.fc27.x86_64 libcom_err-1.43.5-2.fc27.x86_64 
libcrypt-nss-2.26-16.fc27.x86_64 libcurl-7.55.1-7.fc27.x86_64 
libdatrie-0.2.9-6.fc27.x86_64 libdrm-2.4.88-1.fc27.x86_64 
libepoxy-1.4.3-3.fc27.x86_64 libfdt-1.4.5-1.fc27.x86_64 
libffi-3.1-14.fc27.x86_64 libgcc-7.2.1-2.fc27.x86_64 
libgcrypt-1.8.1-1.fc27.x86_64 libgpg-error-1.27-3.fc27.x86_64 
libibverbs-14-4.fc27.x86_64 libidn2-2.0.4-1.fc27.x86_64 
libiscsi-1.15.0-5.fc27.x86_64 libjpeg-turbo-1.5.1-4.fc27.x86_64 
libmount-2.30.2-1.fc27.x86_64 libnfs-1.9.8-5.fc27.x86_64 
libnghttp2-1.25.0-1.fc27.x86_64 libnl3-3.4.0-1.fc27.x86_64 
libpng-1.6.31-1.fc27.x86_64 libpsl-0.18.0-1.fc27.x86_64 
librados2-12.2.1-1.fc27.x86_64 librbd1-12.2.1-1.fc27.x86_64 
librdmacm-14-4.fc27.x86_64 libseccomp-2.3.2-5.fc27.x86_64 
libselinux-2.7-2.fc27.x86_64 libssh2-1.8.0-5.fc27.x86_64 
libstdc++-7.2.1-2.fc27.x86_64 libtasn1-4.12-3.fc27.x86_64 
libthai-0.1.25-4.fc27.x86_64 libunistring-0.9.7-3.fc27.x86_64 
libusbx-1.0.21-4.fc27.x86_64 libuuid-2.30.2-1.fc27.x86_64 
libwayland-client-1.14.0-1.fc27.x86_64 libwayland-cursor-1.14.0-1.fc27.x86_64 
libwayland-server-1.14.0-1.fc27.x86_64 libxcb-1.12-5.fc27.x86_64 
libxkbcommon-0.7.1-5.fc27.x86_64 lttng-ust-2.10.0-2.fc27.x86_64 
lz4-libs-1.8.0-1.fc27.x86_64 lzo-2.08-11.fc27.x86_64 
mesa-libgbm-17.2.4-2.fc27.x86_64 mesa-libwayland-egl-17.2.4-2.fc27.x86_64 
ncurses-libs-6.0-13.20170722.fc27.x86_64 nettle-3.4-1.fc27.x86_64 
nspr-4.17.0-1.fc27.x86_64 nss-3.34.0-1.0.fc27.x86_64 
nss-softokn-freebl-3.34.0-1.0.fc27.x86_64 nss-util-3.34.0-1.0.fc27.x86_64 
numactl-libs-2.0.11-5.fc27.x86_64 openldap-2.4.45-3.fc27.x86_64 
openssl-libs-1.1.0g-1.fc27.x86_64 opus-1.2.1-3.fc27.x86_64 
orc-0.4.27-3.fc27.x86_64 p11-kit-0.23.9-2.fc27.x86_64 
pango-1.40.14-1.fc27.x86_64 pcre-8.41-3.fc27.x86_64 pcre2-10.30-2.fc27.x86_64 
pixman-0.34.0-4.fc27.x86_64 spice-server-0.14.0-1.fc27.x86_64 
systemd-libs-234-9.fc27.x86_64 usbredir-0.7.1-5.fc27.x86_64 
userspace-rcu-0.10.0-3.fc27.x86_64 vte3-0.36.5-5.fc27.x86_64 
xen-libs-4.9.1-1.fc27.x86_64 xz-libs-5.2.3-4.fc27.x86_64 
zlib-1.2.11-4.fc27.x86_64
(gdb) where
#0  0x0000563b5aa3bac0 in qemu_netfilter_receive (nf=0x76656474656e, 
direction=NET_FILTER_DIRECTION_TX, sender=0x563b5c78e130, flags=0, 
iov=0x563b5c78e7a0, iovcnt=4, sent_cb=0x0) at 
/home/dgilbert/git/hmp/net/filter.c:34
#1  0x0000563b5aa31cef in filter_receive_iov (nc=0x563b5c78e130, 
nc=0x563b5c78e130, sent_cb=0x0, iovcnt=4, iov=0x563b5c78e7a0, flags=0, 
sender=0x563b5c78e130, direction=NET_FILTER_DIRECTION_TX) at 
/home/dgilbert/git/hmp/net/net.c:571
#2  0x0000563b5aa31cef in qemu_sendv_packet_async (sender=0x563b5c78e130, 
iov=0x563b5c78e7a0, iovcnt=4, sent_cb=0x0) at 
/home/dgilbert/git/hmp/net/net.c:768
#3  0x0000563b5a97ea18 in net_tx_pkt_sendv (pkt=0x563b5c867620, 
iov_cnt=<optimized out>, iov=<optimized out>, nc=0x563b5c78e130) at 
/home/dgilbert/git/hmp/hw/net/net_tx_pkt.c:546
#4  0x0000563b5a97ea18 in net_tx_pkt_send (pkt=0x563b5c867620, 
nc=nc@entry=0x563b5c78e130) at /home/dgilbert/git/hmp/hw/net/net_tx_pkt.c:620
#5  0x0000563b5a9882c8 in e1000e_tx_pkt_send (queue_index=<optimized out>, 
tx=0x563b5cbe3108, core=0x563b5cbc2ea0) at 
/home/dgilbert/git/hmp/hw/net/e1000e_core.c:665
#6  0x0000563b5a9882c8 in e1000e_process_tx_desc (queue_index=<optimized out>, 
dp=0x7f9657cf9010, tx=0x563b5cbe3108, core=0x563b5cbc2ea0) at 
/home/dgilbert/git/hmp/hw/net/e1000e_core.c:742
#7  0x0000563b5a9882c8 in e1000e_start_xmit (core=0x563b5cbc2ea0, 
txr=txr@entry=0x7f9657cf9080) at /home/dgilbert/git/hmp/hw/net/e1000e_core.c:933
#8  0x0000563b5a9884ce in e1000e_set_tdt (core=<optimized out>, 
index=<optimized out>, val=<optimized out>) at 
/home/dgilbert/git/hmp/hw/net/e1000e_core.c:2443
#9  0x0000563b5a98b236 in e1000e_core_write (core=0x563b5cbc2ea0, 
addr=<optimized out>, val=1, size=4) at 
/home/dgilbert/git/hmp/hw/net/e1000e_core.c:3248
#10 0x0000563b5a7b63d8 in memory_region_write_accessor (mr=0x563b5cbc2ad0, 
addr=14360, value=<optimized out>, size=4, shift=<optimized out>, 
mask=<optimized out>, attrs=...) at /home/dgilbert/git/hmp/memory.c:560
#11 0x0000563b5a7b386e in access_with_adjusted_size (addr=addr@entry=14360, 
value=value@entry=0x7f9657cf9238, size=size@entry=4, access_size_min=<optimized 
out>, access_size_max=<optimized out>, access_fn=
    0x563b5a7b6360 <memory_region_write_accessor>, mr=0x563b5cbc2ad0, 
attrs=...) at /home/dgilbert/git/hmp/memory.c:627
#12 0x0000563b5a7b8357 in memory_region_dispatch_write 
(mr=mr@entry=0x563b5cbc2ad0, addr=14360, data=<optimized out>, 
size=size@entry=4, attrs=attrs@entry=...) at 
/home/dgilbert/git/hmp/memory.c:1516
#13 0x0000563b5a773e7e in flatview_write_continue (mr=0x563b5cbc2ad0, 
l=<optimized out>, addr1=<optimized out>, len=4, buf=0x7f96bdf27028 <error: 
Cannot access memory at address 0x7f96bdf27028>, attrs=..., addr=1074018328, 
fv=0x7f96480122e0) at /home/dgilbert/git/hmp/exec.c:2963
#14 0x0000563b5a773e7e in flatview_write (fv=<optimized out>, addr=<optimized 
out>, attrs=..., buf=<optimized out>, len=<optimized out>) at 
/home/dgilbert/git/hmp/exec.c:3020
#15 0x0000563b5a778695 in flatview_rw (fv=<optimized out>, addr=<optimized 
out>, attrs=..., buf=buf@entry=0x7f96bdf27028 <error: Cannot access memory at 
address 0x7f96bdf27028>, len=len@entry=0, is_write=<optimized out>)
    at /home/dgilbert/git/hmp/exec.c:3129
#16 0x0000563b5a7786df in address_space_rw (as=<optimized out>, addr=<optimized 
out>, attrs=..., attrs@entry=..., buf=buf@entry=0x7f96bdf27028 <error: Cannot 
access memory at address 0x7f96bdf27028>, len=0, is_write=<optimized out>)
    at /home/dgilbert/git/hmp/exec.c:3139
#17 0x0000563b5a7c71c8 in kvm_cpu_exec (cpu=cpu@entry=0x563b5be6a680) at 
/home/dgilbert/git/hmp/accel/kvm/kvm-all.c:1937
#18 0x0000563b5a7a3c74 in qemu_kvm_cpu_thread_fn (arg=0x563b5be6a680) at 
/home/dgilbert/git/hmp/cpus.c:1128
#19 0x00007f96bd3be609 in start_thread () at /lib64/libpthread.so.0
#20 0x00007f96b3134e6f in clone () at /lib64/libc.so.6
(gdb) p nf
$1 = (NetFilterState *) 0x76656474656e

that nf value is ASCII 'netdev'.

My test is currently:
QEMU -enable-kvm -m 1G -smp 2 -object 
memory-backend-file,id=mem,size=1G,mem-path=/dev/shm,share=on -numa 
node,memdev=mem -mem-prealloc -trace events=vhost-trace-file -chardev 
socket,id=char0,path=/tmp/vubrsrc.sock -netdev 
type=vhost-user,id=mynet1,chardev=char0,vhostforce -device 
virtio-net-pci,netdev=mynet1 $IMAGE -net none -monitor stdio

then I've got a vhost-user-bridge running on that socket and doing
routing.
In the guest it's doing a looping curl just fetching a page.
And then at the HMP I do:

device-add e1000e

I'm sometimes seeing the crash on this VM, but also sometimes
seeing it if I then migrate and the destination fails in the same
way.

I don't think it's happening without the device-add.

This is on an unmodified 2994cb2ee244b7d6a from today.

Dave
--
Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK

Reply via email to