qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [Bug 1831486] [NEW] qmp monitor deadlock (with spice events


From: elmarco
Subject: [Qemu-devel] [Bug 1831486] [NEW] qmp monitor deadlock (with spice events for ex)
Date: Mon, 03 Jun 2019 18:22:13 -0000

Public bug reported:

If an event is emitted during monitor_flush_locked() it will deadlock.

Thread 1 (Thread 0x7f14f1854000 (LWP 7245)):
#0  0x00007f14fc30592d in __lll_lock_wait () at /lib64/libpthread.so.0
#1  0x00007f14fc2fedc9 in pthread_mutex_lock () at /lib64/libpthread.so.0
#2  0x000055de60e19327 in qemu_mutex_lock_impl (mutex=0x55de61859e58, 
file=0x55de60f1a640 "/home/elmarco/src/qq/monitor.c", line=438) at 
/home/elmarco/src/qq/util/qemu-thread-posix.c:66
#3  0x000055de6085c5af in monitor_puts (mon=0x55de61859d30, str=0x55de62a61d30 
"{\"timestamp\": {\"seconds\": 1559585795, \"microseconds\": 508720}, 
\"event\": \"SPICE_DISCONNECTED\", \"data\": {\"server\": {\"port\": 
\"/tmp/.9IW52Z/spice.sock\", \"family\": \"unix\", \"host\": \"localhost\"}, 
\"client\": {"...) at /home/elmarco/src/qq/monitor.c:438
#4  0x000055de6085c85a in qmp_send_response (mon=0x55de61859d30, 
rsp=0x55de61ed19a0) at /home/elmarco/src/qq/monitor.c:493
#5  0x000055de6085c8ee in monitor_qapi_event_emit 
(event=QAPI_EVENT_SPICE_DISCONNECTED, qdict=0x55de61ed19a0) at 
/home/elmarco/src/qq/monitor.c:521
#6  0x000055de6085c9ea in monitor_qapi_event_queue_no_reenter 
(event=QAPI_EVENT_SPICE_DISCONNECTED, qdict=0x55de61ed19a0) at 
/home/elmarco/src/qq/monitor.c:546
#7  0x000055de6085cd7a in qapi_event_emit (event=QAPI_EVENT_SPICE_DISCONNECTED, 
qdict=0x55de61ed19a0) at /home/elmarco/src/qq/monitor.c:621
#8  0x000055de60e04bc3 in qapi_event_send_spice_disconnected 
(server=0x55de61ee7b30, client=0x55de620c9090) at qapi/qapi-events-ui.c:101
#9  0x000055de60c84381 in channel_event (event=3, info=0x55de6222f4c0) at 
/home/elmarco/src/qq/ui/spice-core.c:234
#10 0x00007f14fc70ba3b in reds_handle_channel_event (reds=<optimized out>, 
event=3, info=0x55de6222f4c0) at reds.c:318
#11 0x00007f14fc6f407b in main_dispatcher_self_handle_channel_event 
(info=0x55de6222f4c0, event=3, self=0x55de61a5b0b0) at main-dispatcher.c:191
#12 0x00007f14fc6f407b in main_dispatcher_channel_event (self=0x55de61a5b0b0, 
address@hidden, info=0x55de6222f4c0) at main-dispatcher.c:191
#13 0x00007f14fc713cf3 in red_stream_push_channel_event (address@hidden, 
address@hidden) at red-stream.c:416
#14 0x00007f14fc713d2b in red_stream_free (s=0x55de6222f400) at red-stream.c:390
#15 0x00007f14fc6fa67c in red_channel_client_finalize (object=0x55de62511360) 
at red-channel-client.c:347
#16 0x00007f14fe4cfcf0 in g_object_unref () at /lib64/libgobject-2.0.so.0
#17 0x00007f14fc6fca12 in red_channel_client_push (rcc=0x55de62511360) at 
red-channel-client.c:1340
#18 0x00007f14fc6fca12 in red_channel_client_push (rcc=0x55de62511360) at 
red-channel-client.c:1303
#19 0x00007f14fc6cd479 in red_char_device_send_msg_to_client (client=<optimized 
out>, msg=0x55de62512c00, dev=0x55de61a5b3b0) at char-device.c:307
#20 0x00007f14fc6cd479 in red_char_device_send_msg_to_clients 
(msg=0x55de62512c00, dev=0x55de61a5b3b0) at char-device.c:307
#21 0x00007f14fc6cd479 in red_char_device_read_from_device (dev=0x55de61a5b3b0) 
at char-device.c:355
#22 0x000055de60a27dba in spice_chr_write (chr=0x55de61924c00, 
buf=0x55de6236c070 "{\"return\": {}, \"id\": 2}\r\n", len=25) at 
/home/elmarco/src/qq/chardev/spice.c:201
#23 0x000055de60d89e29 in qemu_chr_write_buffer (s=0x55de61924c00, 
buf=0x55de6236c070 "{\"return\": {}, \"id\": 2}\r\n", len=25, 
offset=0x7ffcd5e1a860, write_all=false) at 
/home/elmarco/src/qq/chardev/char.c:113
#24 0x000055de60d89f96 in qemu_chr_write (s=0x55de61924c00, buf=0x55de6236c070 
"{\"return\": {}, \"id\": 2}\r\n", len=25, write_all=false) at 
/home/elmarco/src/qq/chardev/char.c:148
#25 0x000055de60d8cf78 in qemu_chr_fe_write (be=0x55de61859d30, 
buf=0x55de6236c070 "{\"return\": {}, \"id\": 2}\r\n", len=25) at 
/home/elmarco/src/qq/chardev/char-fe.c:42
#26 0x000055de6085c40f in monitor_flush_locked (mon=0x55de61859d30) at 
/home/elmarco/src/qq/monitor.c:404
#27 0x000055de6085c614 in monitor_puts (mon=0x55de61859d30, str=0x55de622f6a40 
"{\"return\": {}, \"id\": 2}\n") at /home/elmarco/src/qq/monitor.c:446
#28 0x000055de6085c85a in qmp_send_response (mon=0x55de61859d30, 
rsp=0x55de61ecf960) at /home/elmarco/src/qq/monitor.c:493
#29 0x000055de60865902 in monitor_qmp_respond (mon=0x55de61859d30, 
rsp=0x55de61ecf960) at /home/elmarco/src/qq/monitor.c:4128
#30 0x000055de60865a19 in monitor_qmp_dispatch (mon=0x55de61859d30, 
req=0x55de622ec000) at /home/elmarco/src/qq/monitor.c:4157
#31 0x000055de60865ce2 in monitor_qmp_bh_dispatcher (data=0x0) at 
/home/elmarco/src/qq/monitor.c:4224

** Affects: qemu
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1831486

Title:
  qmp monitor deadlock (with spice events for ex)

Status in QEMU:
  New

Bug description:
  If an event is emitted during monitor_flush_locked() it will deadlock.

  Thread 1 (Thread 0x7f14f1854000 (LWP 7245)):
  #0  0x00007f14fc30592d in __lll_lock_wait () at /lib64/libpthread.so.0
  #1  0x00007f14fc2fedc9 in pthread_mutex_lock () at /lib64/libpthread.so.0
  #2  0x000055de60e19327 in qemu_mutex_lock_impl (mutex=0x55de61859e58, 
file=0x55de60f1a640 "/home/elmarco/src/qq/monitor.c", line=438) at 
/home/elmarco/src/qq/util/qemu-thread-posix.c:66
  #3  0x000055de6085c5af in monitor_puts (mon=0x55de61859d30, 
str=0x55de62a61d30 "{\"timestamp\": {\"seconds\": 1559585795, \"microseconds\": 
508720}, \"event\": \"SPICE_DISCONNECTED\", \"data\": {\"server\": {\"port\": 
\"/tmp/.9IW52Z/spice.sock\", \"family\": \"unix\", \"host\": \"localhost\"}, 
\"client\": {"...) at /home/elmarco/src/qq/monitor.c:438
  #4  0x000055de6085c85a in qmp_send_response (mon=0x55de61859d30, 
rsp=0x55de61ed19a0) at /home/elmarco/src/qq/monitor.c:493
  #5  0x000055de6085c8ee in monitor_qapi_event_emit 
(event=QAPI_EVENT_SPICE_DISCONNECTED, qdict=0x55de61ed19a0) at 
/home/elmarco/src/qq/monitor.c:521
  #6  0x000055de6085c9ea in monitor_qapi_event_queue_no_reenter 
(event=QAPI_EVENT_SPICE_DISCONNECTED, qdict=0x55de61ed19a0) at 
/home/elmarco/src/qq/monitor.c:546
  #7  0x000055de6085cd7a in qapi_event_emit 
(event=QAPI_EVENT_SPICE_DISCONNECTED, qdict=0x55de61ed19a0) at 
/home/elmarco/src/qq/monitor.c:621
  #8  0x000055de60e04bc3 in qapi_event_send_spice_disconnected 
(server=0x55de61ee7b30, client=0x55de620c9090) at qapi/qapi-events-ui.c:101
  #9  0x000055de60c84381 in channel_event (event=3, info=0x55de6222f4c0) at 
/home/elmarco/src/qq/ui/spice-core.c:234
  #10 0x00007f14fc70ba3b in reds_handle_channel_event (reds=<optimized out>, 
event=3, info=0x55de6222f4c0) at reds.c:318
  #11 0x00007f14fc6f407b in main_dispatcher_self_handle_channel_event 
(info=0x55de6222f4c0, event=3, self=0x55de61a5b0b0) at main-dispatcher.c:191
  #12 0x00007f14fc6f407b in main_dispatcher_channel_event (self=0x55de61a5b0b0, 
address@hidden, info=0x55de6222f4c0) at main-dispatcher.c:191
  #13 0x00007f14fc713cf3 in red_stream_push_channel_event (address@hidden, 
address@hidden) at red-stream.c:416
  #14 0x00007f14fc713d2b in red_stream_free (s=0x55de6222f400) at 
red-stream.c:390
  #15 0x00007f14fc6fa67c in red_channel_client_finalize (object=0x55de62511360) 
at red-channel-client.c:347
  #16 0x00007f14fe4cfcf0 in g_object_unref () at /lib64/libgobject-2.0.so.0
  #17 0x00007f14fc6fca12 in red_channel_client_push (rcc=0x55de62511360) at 
red-channel-client.c:1340
  #18 0x00007f14fc6fca12 in red_channel_client_push (rcc=0x55de62511360) at 
red-channel-client.c:1303
  #19 0x00007f14fc6cd479 in red_char_device_send_msg_to_client 
(client=<optimized out>, msg=0x55de62512c00, dev=0x55de61a5b3b0) at 
char-device.c:307
  #20 0x00007f14fc6cd479 in red_char_device_send_msg_to_clients 
(msg=0x55de62512c00, dev=0x55de61a5b3b0) at char-device.c:307
  #21 0x00007f14fc6cd479 in red_char_device_read_from_device 
(dev=0x55de61a5b3b0) at char-device.c:355
  #22 0x000055de60a27dba in spice_chr_write (chr=0x55de61924c00, 
buf=0x55de6236c070 "{\"return\": {}, \"id\": 2}\r\n", len=25) at 
/home/elmarco/src/qq/chardev/spice.c:201
  #23 0x000055de60d89e29 in qemu_chr_write_buffer (s=0x55de61924c00, 
buf=0x55de6236c070 "{\"return\": {}, \"id\": 2}\r\n", len=25, 
offset=0x7ffcd5e1a860, write_all=false) at 
/home/elmarco/src/qq/chardev/char.c:113
  #24 0x000055de60d89f96 in qemu_chr_write (s=0x55de61924c00, 
buf=0x55de6236c070 "{\"return\": {}, \"id\": 2}\r\n", len=25, write_all=false) 
at /home/elmarco/src/qq/chardev/char.c:148
  #25 0x000055de60d8cf78 in qemu_chr_fe_write (be=0x55de61859d30, 
buf=0x55de6236c070 "{\"return\": {}, \"id\": 2}\r\n", len=25) at 
/home/elmarco/src/qq/chardev/char-fe.c:42
  #26 0x000055de6085c40f in monitor_flush_locked (mon=0x55de61859d30) at 
/home/elmarco/src/qq/monitor.c:404
  #27 0x000055de6085c614 in monitor_puts (mon=0x55de61859d30, 
str=0x55de622f6a40 "{\"return\": {}, \"id\": 2}\n") at 
/home/elmarco/src/qq/monitor.c:446
  #28 0x000055de6085c85a in qmp_send_response (mon=0x55de61859d30, 
rsp=0x55de61ecf960) at /home/elmarco/src/qq/monitor.c:493
  #29 0x000055de60865902 in monitor_qmp_respond (mon=0x55de61859d30, 
rsp=0x55de61ecf960) at /home/elmarco/src/qq/monitor.c:4128
  #30 0x000055de60865a19 in monitor_qmp_dispatch (mon=0x55de61859d30, 
req=0x55de622ec000) at /home/elmarco/src/qq/monitor.c:4157
  #31 0x000055de60865ce2 in monitor_qmp_bh_dispatcher (data=0x0) at 
/home/elmarco/src/qq/monitor.c:4224

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1831486/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]