Skip to content
Snippets Groups Projects
  1. Jan 13, 2022
    • Marc-André Lureau's avatar
      ui: fix gtk clipboard clear assertion · 87800d94
      Marc-André Lureau authored
      
      When closing the QEMU Gtk display window, it can occasionaly warn:
      qemu-system-x86_64: Gtk: gtk_clipboard_set_with_data: assertion 'targets != NULL' failed
      
      #3  0x00007ffff4f02f22 in gtk_clipboard_set_with_data (clipboard=<optimized out>, targets=<optimized out>, n_targets=<optimized out>, get_func=<optimized out>, clear_func=<optimized out>, user_data=<optimized out>) at /usr/src/debug/gtk3-3.24.30-4.fc35.x86_64/gtk/gtkclipboard.c:672
      #4  0x00007ffff552cd75 in gd_clipboard_update_info (gd=0x5555579a9e00, info=0x555557ba4b50) at ../ui/gtk-clipboard.c:98
      #5  0x00007ffff552ce00 in gd_clipboard_notify (notifier=0x5555579aaba8, data=0x7fffffffd720) at ../ui/gtk-clipboard.c:128
      #6  0x000055555603e0ff in notifier_list_notify (list=0x555556657470 <clipboard_notifiers>, data=0x7fffffffd720) at ../util/notify.c:39
      #7  0x000055555594e8e0 in qemu_clipboard_update (info=0x555557ba4b50) at ../ui/clipboard.c:54
      #8  0x000055555594e840 in qemu_clipboard_peer_release (peer=0x55555684a5b0, selection=QEMU_CLIPBOARD_SELECTION_PRIMARY) at ../ui/clipboard.c:40
      #9  0x000055555594e786 in qemu_clipboard_peer_unregister (peer=0x55555684a5b0) at ../ui/clipboard.c:19
      #10 0x000055555595f044 in vdagent_disconnect (vd=0x55555684a400) at ../ui/vdagent.c:852
      #11 0x000055555595f262 in vdagent_chr_fini (obj=0x55555684a400) at ../ui/vdagent.c:908
      
      Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20211216083233.1166504-1-marcandre.lureau@redhat.com>
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      87800d94
    • Marc-André Lureau's avatar
      ui/dbus: fix buffer-overflow detected by ASAN · fc94d115
      Marc-André Lureau authored
      
      On the last added dbus patch, I left a tiny BO:
      
      ==441487==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x611000025a70 at pc 0x7f0817bb764c bp 0x7ffde672ae60 sp 0x7ffde672ae58
      WRITE of size 8 at 0x611000025a70 thread T0
          #0 0x7f0817bb764b in dbus_vc_class_init ../ui/dbus.c:401
      
      A cookie for ASAN! not you C :)
      
      Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Fixes: 7f767ca3 ("ui/dbus: register D-Bus VC handler")
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-Id: <20211222144032.443424-1-marcandre.lureau@redhat.com>
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      fc94d115
    • Rao Lei's avatar
      ui/vnc.c: Fixed a deadlock bug. · 1dbbe6f1
      Rao Lei authored
      
      The GDB statck is as follows:
      (gdb) bt
      0  __lll_lock_wait (futex=futex@entry=0x56211df20360, private=0) at lowlevellock.c:52
      1  0x00007f263caf20a3 in __GI___pthread_mutex_lock (mutex=0x56211df20360) at ../nptl/pthread_mutex_lock.c:80
      2  0x000056211a757364 in qemu_mutex_lock_impl (mutex=0x56211df20360, file=0x56211a804857 "../ui/vnc-jobs.h", line=60)
          at ../util/qemu-thread-posix.c:80
      3  0x000056211a0ef8c7 in vnc_lock_output (vs=0x56211df14200) at ../ui/vnc-jobs.h:60
      4  0x000056211a0efcb7 in vnc_clipboard_send (vs=0x56211df14200, count=1, dwords=0x7ffdf1701338) at ../ui/vnc-clipboard.c:138
      5  0x000056211a0f0129 in vnc_clipboard_notify (notifier=0x56211df244c8, data=0x56211dd1bbf0) at ../ui/vnc-clipboard.c:209
      6  0x000056211a75dde8 in notifier_list_notify (list=0x56211afa17d0 <clipboard_notifiers>, data=0x56211dd1bbf0) at ../util/notify.c:39
      7  0x000056211a0bf0e6 in qemu_clipboard_update (info=0x56211dd1bbf0) at ../ui/clipboard.c:50
      8  0x000056211a0bf05d in qemu_clipboard_peer_release (peer=0x56211df244c0, selection=QEMU_CLIPBOARD_SELECTION_CLIPBOARD)
          at ../ui/clipboard.c:41
      9  0x000056211a0bef9b in qemu_clipboard_peer_unregister (peer=0x56211df244c0) at ../ui/clipboard.c:19
      10 0x000056211a0d45f3 in vnc_disconnect_finish (vs=0x56211df14200) at ../ui/vnc.c:1358
      11 0x000056211a0d4c9d in vnc_client_read (vs=0x56211df14200) at ../ui/vnc.c:1611
      12 0x000056211a0d4df8 in vnc_client_io (ioc=0x56211ce70690, condition=G_IO_IN, opaque=0x56211df14200) at ../ui/vnc.c:1649
      13 0x000056211a5b976c in qio_channel_fd_source_dispatch
          (source=0x56211ce50a00, callback=0x56211a0d4d71 <vnc_client_io>, user_data=0x56211df14200) at ../io/channel-watch.c:84
      14 0x00007f263ccede8e in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
      15 0x000056211a77d4a1 in glib_pollfds_poll () at ../util/main-loop.c:232
      16 0x000056211a77d51f in os_host_main_loop_wait (timeout=958545) at ../util/main-loop.c:255
      17 0x000056211a77d630 in main_loop_wait (nonblocking=0) at ../util/main-loop.c:531
      18 0x000056211a45bc8e in qemu_main_loop () at ../softmmu/runstate.c:726
      19 0x000056211a0b45fa in main (argc=69, argv=0x7ffdf1701778, envp=0x7ffdf17019a8) at ../softmmu/main.c:50
      
      From the call trace, we can see it is a deadlock bug.
      vnc_disconnect_finish will acquire the output_mutex.
      But, the output_mutex will be acquired again in vnc_clipboard_send.
      Repeated locking will cause deadlock. So, I move
      qemu_clipboard_peer_unregister() behind vnc_unlock_output();
      
      Fixes: 0bf41cab ("ui/vnc: clipboard support")
      Signed-off-by: default avatarLei Rao <lei.rao@intel.com>
      Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20220105020808.597325-1-lei.rao@intel.com>
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      1dbbe6f1
  2. Dec 21, 2021
  3. Nov 22, 2021
  4. Nov 19, 2021
  5. Nov 08, 2021
  6. Nov 05, 2021
  7. Nov 02, 2021
Loading