On Mon, Jun 18, 2018 at 06:17:04PM +0200, Marc-André Lureau wrote: > A socket chardev may not have associated address (when adding client > fd manually for example). But on disconnect, updating socket filename > expects an address and may lead to this crash: > > Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault. > 0x0000555555d8c70c in SocketAddress_to_str (prefix=0x555556043062 > "disconnected:", addr=0x0, is_listen=false, is_telnet=false) at > /home/elmarco/src/qq/chardev/char-socket.c:388 > 388 switch (addr->type) { > (gdb) bt > #0 0x0000555555d8c70c in SocketAddress_to_str (prefix=0x555556043062 > "disconnected:", addr=0x0, is_listen=false, is_telnet=false) at > /home/elmarco/src/qq/chardev/char-socket.c:388 > #1 0x0000555555d8c8aa in update_disconnected_filename (s=0x555556b1ed00) > at /home/elmarco/src/qq/chardev/char-socket.c:419 > #2 0x0000555555d8c959 in tcp_chr_disconnect (chr=0x555556b1ed00) at > /home/elmarco/src/qq/chardev/char-socket.c:438 > #3 0x0000555555d8cba1 in tcp_chr_hup (channel=0x555556b75690, > cond=G_IO_HUP, opaque=0x555556b1ed00) at > /home/elmarco/src/qq/chardev/char-socket.c:482 > #4 0x0000555555da596e in qio_channel_fd_source_dispatch > (source=0x555556bb68b0, callback=0x555555d8cb58 <tcp_chr_hup>, > user_data=0x555556b1ed00) at /home/elmarco/src/qq/io/channel-watch.c:84 > > Replace filename with a generic "disconnected:socket" in this case. > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > chardev/char-socket.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-)
Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|