This is quite rare, it happens perhaps one in 10 runs:
qemu-img: Could not read file metadata: Input/output error
nbdkit: nbdkit command was killed by signal 11
...
FAIL test-sh-extents.sh (exit status: 4)
Full log and stack trace is attached.
systemd-coredump collects a core dump. The stack trace seems to
indicate memory corruption. On one run (not the one attached) I got
an error message from malloc, the exact text I forget, but it seemed
to indicate corruption in the glibc allocator.
It's a bit mysterious and quite surprising that it doesn't happen on
non-riscv64 platforms as far as I've seen.
Unfortunately there's no valgrind for RISC-V :-(
Still investigating ...
Rich.
glibc-2.32-4.fc33.riscv64
nbdkit compiled from git
Thread 6 (Thread 0x3fc15e1e50 (LWP 74051)):
#0 0x0000003fc3b0425a in __lll_lock_wait () from /lib64/lp64d/libpthread.so.0
#1 0x0000003fc3afe090 in pthread_mutex_lock () from /lib64/lp64d/libpthread.so.0
#2 0x0000002aea1b2928 in protocol_recv_request_send_reply.isra.0 () at protocol.c:632
#3 0x0000002aea1ac600 in connection_worker (data=0x2b303b0700) at connections.c:127
#4 0x0000003fc3afc606 in start_thread () from /lib64/lp64d/libpthread.so.0
#5 0x0000003fc3a76546 in __thread_start () from /lib64/lp64d/libc.so.6
Thread 5 (Thread 0x3fc25e3e50 (LWP 74049)):
#0 0x0000003fc3b04426 in read () from /lib64/lp64d/libpthread.so.0
#1 0x0000002aea1aa1d6 in read (__nbytes=28, __buf=0x3fc25e34a8, __fd=8) at
/usr/include/bits/unistd.h:46
#2 raw_recv (vbuf=<optimized out>, len=28) at connections.c:459
#3 0x0000002aea1b293e in protocol_recv_request_send_reply.isra.0 () at protocol.c:636
#4 0x0000002aea1ac600 in connection_worker (data=0x2b303b0700) at connections.c:127
#5 0x0000003fc3afc606 in start_thread () from /lib64/lp64d/libpthread.so.0
#6 0x0000003fc3a76546 in __thread_start () from /lib64/lp64d/libc.so.6
Thread 4 (Thread 0x3fc35e76b0 (LWP 74028)):
#0 0x0000003fc3a6f978 in poll () from /lib64/lp64d/libc.so.6
#1 0x0000002aea1b0e18 in poll (__timeout=-1, __nfds=2, __fds=<optimized out>) at
/usr/include/bits/poll2.h:46
#2 check_sockets_and_quit_fd (socks=0x3ffff1cd58) at sockets.c:466
#3 accept_incoming_connections (socks=0x3ffff1cd58) at sockets.c:540
#4 0x0000002aea1a8c6e in start_serving () at main.c:975
#5 main (argc=<optimized out>, argv=<optimized out>) at main.c:736
Thread 3 (Thread 0x3fc35e5e50 (LWP 74037)):
#0 0x0000003fc3a305a2 in __lll_lock_wait_private () from /lib64/lp64d/libc.so.6
#1 0x0000003fc3a342f4 in malloc_check () from /lib64/lp64d/libc.so.6
#2 0x0000002aea1aefee in handle_single_connection (sockin=<optimized out>,
sockout=<optimized out>) at connections.c:192
#3 0x0000002aea1b248a in start_thread (datav=0x2b303afd10) at sockets.c:354
#4 0x0000003fc3afc606 in start_thread () from /lib64/lp64d/libpthread.so.0
#5 0x0000003fc3a76546 in __thread_start () from /lib64/lp64d/libc.so.6
Thread 2 (Thread 0x3fc2de4e50 (LWP 74048)):
#0 0x0000003fc3a6f978 in poll () from /lib64/lp64d/libc.so.6
#1 0x0000003fc3cca56e in poll (__timeout=-1, __nfds=3, __fds=0x3fc2de4150) at
/usr/include/bits/poll2.h:46
#2 call3 (wbuf=wbuf@entry=0x0, wbuflen=wbuflen@entry=0, rbuf=rbuf@entry=0x3fc2de4260,
rbuflen=rbuflen@entry=0x3fc2de4258, ebuf=ebuf@entry=0x3fc2de41f0,
ebuflen=ebuflen@entry=0x3fc2de41e8, argv=argv@entry=0x3fc2de42e0) at call.c:257
#3 0x0000003fc3ccb4a8 in call_read (rbuf=rbuf@entry=0x3fc2de4260,
rbuflen=rbuflen@entry=0x3fc2de4258, argv=argv@entry=0x3fc2de42e0) at call.c:521
--Type <RET> for more, q to quit, c to continue without paging--
#4 0x0000003fc3ccc678 in sh_extents (handle=<optimized out>, count=<optimized
out>, offset=0, flags=<optimized out>, extents=0x2b303ce390) at methods.c:1046
#5 0x0000002aea1ae294 in plugin_extents (c=<optimized out>, count=<optimized
out>, offset=<optimized out>, flags=<optimized out>, extents=0x2b303ce390,
err=0x3fc2de4490) at plugins.c:761
#6 0x0000002aea1adedc in backend_extents (c=0x2b303cded0, count=<optimized out>,
offset=0, flags=<optimized out>, extents=0x2b303ce390, err=0x3fc2de4490) at
backend.c:703
#7 0x0000002aea1b2ff2 in handle_request (extents=0x2b303ce390, buf=0x0,
count=<optimized out>, offset=<optimized out>, flags=<optimized out>,
cmd=<optimized out>) at protocol.c:285
#8 protocol_recv_request_send_reply.isra.0 () at protocol.c:716
#9 0x0000002aea1ac600 in connection_worker (data=0x2b303b0120) at connections.c:127
#10 0x0000003fc3afc606 in start_thread () from /lib64/lp64d/libpthread.so.0
#11 0x0000003fc3a76546 in __thread_start () from /lib64/lp64d/libc.so.6
Thread 1 (Thread 0x3fc1de2e50 (LWP 74050)):
#0 0x0000003fc3a32440 in _int_free () from /lib64/lp64d/libc.so.6
#1 0x0000003fc3a3309c in free_check () from /lib64/lp64d/libc.so.6
#2 0x0000002aea1ac5f4 in connection_worker (data=0x2b303b0120) at connections.c:124
#3 0x0000003fc3afc606 in start_thread () from /lib64/lp64d/libpthread.so.0
#4 0x0000003fc3a76546 in __thread_start () from /lib64/lp64d/libc.so.6
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v