xcb_wait_for_special_event() wait indefinitely when the window is closed
Hello,
I encountered a deadlock inside VLC that seems to come from the xcb project.
It's quite easy to reproduce: Play a video with VLC using the xcb window module and the gl display module, close the X11 window, stop VLC => Deadlock.
Here is the full stacktrace, using the lastest libxcb (be1745c8)
[Switching to thread 16 (Thread 0x7f75c31b5700 (LWP 581))]
#0 0x00007f75edc23b49 in __GI___poll (fds=0x7f75c31b44c8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29 ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
(gdb) bt f
#0 0x00007f75edc23b49 in __GI___poll (fds=0x7f75c31b44c8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
resultvar = 18446744073709551100
sc_cancel_oldtype = 0
#1 0x00007f75ee505bd2 in poll () at /usr/lib/x86_64-linux-gnu/libasan.so.5
#2 0x00007f75eb10cec8 in _xcb_conn_wait (c=c@entry=0x62a000042200, cond=cond@entry=0x608000068748, vector=vector@entry=0x0, count=count@entry=0x0) at ../../src/xcb_conn.c:479
ret = <optimized out>
fd = {fd = 21, events = 1, revents = 0}
#3 0x00007f75eb10e6ee in xcb_wait_for_special_event (c=0x62a000042200, se=0x608000068720) at ../../src/xcb_in.c:795
special = {se = 0x608000068720, next = 0x0}
event = 0x0
#4 0x00007f75c61ab9fb in dri3_wait_for_event_locked (draw=0x618000061260) at ../../../src/loader/loader_dri3_helper.c:455
ev = <optimized out>
ge = <optimized out>
#5 0x00007f75c61abb48 in dri3_find_back (draw=draw@entry=0x618000061260) at ../../../src/loader/loader_dri3_helper.c:580
b = <optimized out>
num_to_consider = 2
#6 0x00007f75c61acbb6 in dri3_get_buffer (format=format@entry=4098, buffer_type=buffer_type@entry=loader_dri3_buffer_back, draw=draw@entry=0x618000061260, driDrawable=0x6060000d7c60) at ../../../src/loader/loader_dri3_helper.c:1658
buffer = <optimized out>
buf_id = <optimized out>
#7 0x00007f75c61ad9d9 in loader_dri3_get_buffers (driDrawable=driDrawable@entry=0x6060000d7c60, format=4098, stamp=stamp@entry=0x6060000d7c90, loaderPrivate=loaderPrivate@entry=0x618000061260, buffer_mask=<optimized out>,
buffer_mask@entry=1, buffers=buffers@entry=0x7f75c31b46c0) at ../../../src/loader/loader_dri3_helper.c:1874
draw = 0x618000061260
front = 0x0
back = 0x0
buf_id = <optimized out>
#8 0x00007f75c535cb75 in intel_update_image_buffers (drawable=0x6060000d7c60, brw=0x632000018830) at ../../../../../../src/mesa/drivers/dri/i965/brw_context.c:1741
fb = <optimized out>
dri_screen = <optimized out>
images = {image_mask = 0, back = 0x0, front = 0x0}
buffer_mask = 1
ret = <optimized out>
format = MESA_FORMAT_B8G8R8X8_UNORM
brw = 0x632000018830
dri_screen = <optimized out>
__func__ = "intel_update_renderbuffers"
#9 0x00007f75c535cb75 in intel_update_renderbuffers (context=context@entry=0x6040000f6ed0, drawable=drawable@entry=0x6060000d7c60) at ../../../../../../src/mesa/drivers/dri/i965/brw_context.c:1417
brw = 0x632000018830
dri_screen = <optimized out>
__func__ = "intel_update_renderbuffers"
#10 0x00007f75c535cf51 in intel_prepare_render (brw=brw@entry=0x632000018830) at ../../../../../../src/mesa/drivers/dri/i965/brw_context.c:1438
ctx = 0x632000018830
driContext = 0x6040000f6ed0
drawable = 0x6060000d7c60
#11 0x00007f75c53587ac in brw_clear (ctx=0x632000018830, mask=2) at ../../../../../../src/mesa/drivers/dri/i965/brw_clear.c:254
fb = 0x61900011ee80
devinfo = 0x61d00013ceb8
partial_clear = false
tri_mask = <optimized out>
#12 0x00007f75c63d33eb in vout_display_opengl_Display (vgl=0x61b00007f580, source=source@entry=0x618000060930) at ../../modules/video_output/opengl/vout_helper.c:1588
prgm = <optimized out>
program = <optimized out>
tc = <optimized out>
__PRETTY_FUNCTION__ = "vout_display_opengl_Display"
#13 0x00007f75c63dd1ed in PictureDisplay (vd=0x618000060910, pic=<optimized out>) at ../../modules/video_output/opengl/display.c:212
sys = 0x603000272830
#14 0x00007f75ee2caddf in vout_display_Display (picture=0x6140000e9440, vd=0x618000060910) at ../../include/vlc_vout_display.h:348
sys = 0x61a000120128
vd = 0x618000060910
torender = <optimized out>
filtered = <optimized out>
__func__ = "ThreadDisplayRenderPicture"
do_snapshot = <optimized out>
system_now = 118958594297
--Type <RET> for more, q to quit, c to continue without paging--
render_subtitle_date = 118958606846
do_dr_spu = <optimized out>
do_early_spu = <optimized out>
subpicture_chromas = 0x7f75c63e2a40 <gl_subpicture_chromas>
subpic = 0x60b000353c90
todisplay = 0x6140000e9440
snap_pic = <optimized out>
__PRETTY_FUNCTION__ = "ThreadDisplayRenderPicture"
pts = 2466667
system_pts = <optimized out>
#15 0x00007f75ee2caddf in ThreadDisplayRenderPicture (vout=vout@entry=0x61a000120110, is_forced=<optimized out>) at ../../src/video_output/video_output.c:1133
sys = 0x61a000120128
vd = 0x618000060910
torender = <optimized out>
filtered = <optimized out>
__func__ = "ThreadDisplayRenderPicture"
do_snapshot = <optimized out>
system_now = 118958594297
render_subtitle_date = 118958606846
do_dr_spu = <optimized out>
do_early_spu = <optimized out>
subpicture_chromas = 0x7f75c63e2a40 <gl_subpicture_chromas>
subpic = 0x60b000353c90
todisplay = 0x6140000e9440
snap_pic = <optimized out>
__PRETTY_FUNCTION__ = "ThreadDisplayRenderPicture"
pts = 2466667
system_pts = <optimized out>
#16 0x00007f75ee2cb661 in ThreadDisplayPicture (vout=vout@entry=0x61a000120110, deadline=deadline@entry=0x7f75c31b4d00) at ../../src/video_output/video_output.c:1224
sys = 0x61a000120128
frame_by_frame = <optimized out>
paused = <optimized out>
first = false
__PRETTY_FUNCTION__ = "ThreadDisplayPicture"
system_now = <optimized out>
render_delay = <optimized out>
drop_next_frame = true
date_next = 118958594011
refresh = <optimized out>
date_refresh = 118958640679
force_refresh = false
is_forced = <optimized out>
ret = <optimized out>
#17 0x00007f75ee2cb81e in Thread (object=0x61a000120110) at ../../src/video_output/video_output.c:1640
cmd =
{type = 3, {boolean = 186, string = 0x4ba <error: Cannot access memory at address 0x4ba>, pair = {a = 1210, b = 0}, border = {left = 1210, top = 0, right = 0, bottom = 3200171520}, window = {x = 1210, y = 0, width = 0, height = 3200171520}, spu_rate = {channel = 1210, value = 0}, spu_delay = {channel = 1210, value = -4702112053718941696}, mouse = {i_x = 1210, i_y = 0, i_pressed = 0, b_double_click = false}, viewpoint = {yaw = 1.69557114e-42, pitch = 0, roll = 0, fov = -0.372543335}}}
picture_interlaced = <optimized out>
vout = 0x61a000120110
sys = 0x61a000120128
deadline = 0
wait = true
#18 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
ret = <optimized out>
pd = <optimized out>
now = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {140143761250048, 1668550406390697037, 140143904765390, 140143904765391, 140143761250048, 107339823841552, -1599789454698984371, -1599839589398066099}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#19 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) f 3
#3 0x00007f75eb10e6ee in xcb_wait_for_special_event (c=0x62a000042200, se=0x608000068720) at ../../src/xcb_in.c:795
795 if(!_xcb_conn_wait(c, &se->special_event_cond, 0, 0))
(gdb) print *c
$1 = {has_error = 0, setup = 0x61e000172880, fd = 21, iolock = pthread_mutex_t = {Type = Normal, Status = Not acquired, Robust = No, Shared = No, Protocol = None}, in = {event_cond = pthread_cond_t = {
Threads known to still execute a wait function = 0, Clock ID = CLOCK_REALTIME, Shared = No}, reading = 1,
queue = "\000\003k\000\000\000`\004\001\000\224", '\000' <repeats 21 times>, "p\357^\000\000\000\000\000\001\000\000\000\002\000\240\004\000\000`\004I\000\000\000\321\311z\262\033\000\000\000p\357^\000\000\000\000\000\347\356^\000\000\000\000\000\001\000\000\000\002\000\240\004\000\000`\004\004\000\000\000c\362W\262\033\000\000\000\347\356^\000\000\000\000\000\001\000\000\000\002\000\240\004\000\000`\004\004\000\000\000c\362W\262\033\000\000\000\347\356^\000\000\000\000\000Rxvt*color11:\t#FFFF00\nRxvt*color12:\t#4682B4\nRxvt*color13"..., queue_len = 0, request_expected = 107, request_read = 107, request_completed = 107, current_reply = 0x0, current_reply_tail = 0x62a000043290,
replies = 0x602000116cb0, events = 0x602000138f50, events_tail = 0x602000138c38, readers = 0x0, special_waiters = 0x7f75c31b4500, pending_replies = 0x0, pending_replies_tail = 0x62a0000432c8, in_fd = {fd = {22,
0 <repeats 15 times>}, nfd = 0, ifd = 0}, special_events = 0x608000068720}, out = {cond = pthread_cond_t = {Threads known to still execute a wait function = 0, Clock ID = CLOCK_REALTIME, Shared = No}, writing = 0,
socket_cond = pthread_cond_t = {Threads known to still execute a wait function = 0, Clock ID = CLOCK_REALTIME, Shared = No}, return_socket = 0x0, socket_closure = 0x0, socket_moving = 0,
queue = "\224\001\022\000\000\000`\004\005\000\240\004K", '\000' <repeats 23 times>, "\006\000\240\004\b\000\000\000\000\000\000\000r\357^", '\000' <repeats 21 times>, "\t\000\240\004", '\000' <repeats 16307 times>, queue_len = 0,
request = 107, request_written = 107, reqlenlock = pthread_mutex_t = {Type = Normal, Status = Not acquired, Robust = No, Shared = No, Protocol = None}, maximum_request_length_tag = LAZY_FORCED, maximum_request_length = {cookie = {
sequence = 4194303}, value = 4194303}, out_fd = {fd = {26, 25, 0 <repeats 14 times>}, nfd = 0, ifd = 0}}, ext = {lock = pthread_mutex_t = {Type = Normal, Status = Not acquired, Robust = No, Shared = No, Protocol = None},
extensions = 0x60e0000ee4a0, extensions_size = 10}, xid = {lock = pthread_mutex_t = {Type = Normal, Status = Not acquired, Robust = No, Shared = No, Protocol = None}, last = 9, base = 77594624, max = 2097151, inc = 1}}
(gdb) thread apply all bt
Thread 16 (Thread 0x7f75c31b5700 (LWP 581)):
#0 0x00007f75edc23b49 in __GI___poll (fds=0x7f75c31b44c8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007f75ee505bd2 in poll () at /usr/lib/x86_64-linux-gnu/libasan.so.5
#2 0x00007f75eb10cec8 in _xcb_conn_wait (c=c@entry=0x62a000042200, cond=cond@entry=0x608000068748, vector=vector@entry=0x0, count=count@entry=0x0) at ../../src/xcb_conn.c:479
#3 0x00007f75eb10e6ee in xcb_wait_for_special_event (c=0x62a000042200, se=0x608000068720) at ../../src/xcb_in.c:795
#4 0x00007f75c61ab9fb in dri3_wait_for_event_locked (draw=0x618000061260) at ../../../src/loader/loader_dri3_helper.c:455
#5 0x00007f75c61abb48 in dri3_find_back (draw=draw@entry=0x618000061260) at ../../../src/loader/loader_dri3_helper.c:580
#6 0x00007f75c61acbb6 in dri3_get_buffer (format=format@entry=4098, buffer_type=buffer_type@entry=loader_dri3_buffer_back, draw=draw@entry=0x618000061260, driDrawable=0x6060000d7c60) at ../../../src/loader/loader_dri3_helper.c:1658
#7 0x00007f75c61ad9d9 in loader_dri3_get_buffers (driDrawable=driDrawable@entry=0x6060000d7c60, format=4098, stamp=stamp@entry=0x6060000d7c90, loaderPrivate=loaderPrivate@entry=0x618000061260, buffer_mask=<optimized out>,
buffer_mask@entry=1, buffers=buffers@entry=0x7f75c31b46c0) at ../../../src/loader/loader_dri3_helper.c:1874
#8 0x00007f75c535cb75 in intel_update_image_buffers (drawable=0x6060000d7c60, brw=0x632000018830) at ../../../../../../src/mesa/drivers/dri/i965/brw_context.c:1741
#9 0x00007f75c535cb75 in intel_update_renderbuffers (context=context@entry=0x6040000f6ed0, drawable=drawable@entry=0x6060000d7c60) at ../../../../../../src/mesa/drivers/dri/i965/brw_context.c:1417
#10 0x00007f75c535cf51 in intel_prepare_render (brw=brw@entry=0x632000018830) at ../../../../../../src/mesa/drivers/dri/i965/brw_context.c:1438
#11 0x00007f75c53587ac in brw_clear (ctx=0x632000018830, mask=2) at ../../../../../../src/mesa/drivers/dri/i965/brw_clear.c:254
#12 0x00007f75c63d33eb in vout_display_opengl_Display (vgl=0x61b00007f580, source=source@entry=0x618000060930) at ../../modules/video_output/opengl/vout_helper.c:1588
#13 0x00007f75c63dd1ed in PictureDisplay (vd=0x618000060910, pic=<optimized out>) at ../../modules/video_output/opengl/display.c:212
#14 0x00007f75ee2caddf in vout_display_Display (picture=0x6140000e9440, vd=0x618000060910) at ../../include/vlc_vout_display.h:348
#15 0x00007f75ee2caddf in ThreadDisplayRenderPicture (vout=vout@entry=0x61a000120110, is_forced=<optimized out>) at ../../src/video_output/video_output.c:1133
#16 0x00007f75ee2cb661 in ThreadDisplayPicture (vout=vout@entry=0x61a000120110, deadline=deadline@entry=0x7f75c31b4d00) at ../../src/video_output/video_output.c:1224
#17 0x00007f75ee2cb81e in Thread (object=0x61a000120110) at ../../src/video_output/video_output.c:1640
#18 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#19 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 15 (Thread 0x7f75c4d85700 (LWP 580)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x614000075500) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x6140000754b0, cond=0x6140000754d8) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=cond@entry=0x6140000754d8, mutex=mutex@entry=0x6140000754b0) at pthread_cond_wait.c:655
#3 0x00007f75c5224fcb in cnd_wait (mtx=0x6140000754b0, cond=0x6140000754d8) at ../../../include/c11/threads_posix.h:155
#4 0x00007f75c5224fcb in util_queue_thread_func (input=input@entry=0x60200011f3f0) at ../../../src/util/u_queue.c:255
#5 0x00007f75c5224d57 in impl_thrd_routine (p=<optimized out>) at ../../../include/c11/threads_posix.h:87
#6 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#7 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 14 (Thread 0x7f75c7483700 (LWP 575)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x60c000050190) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x60c000050140, cond=0x60c000050168) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x60c000050168, mutex=0x60c000050140) at pthread_cond_wait.c:655
#3 0x00007f75ee342275 in vlc_cond_wait (p_condvar=<optimized out>, p_mutex=<optimized out>) at ../../src/posix/thread.c:205
#4 0x00007f75ee30e9ee in vlc_fifo_WaitCond (fifo=<optimized out>, condvar=<optimized out>) at ../../src/misc/fifo.c:71
#5 0x00007f75ee30e9fd in vlc_fifo_Wait (fifo=<optimized out>) at ../../src/misc/fifo.c:66
#6 0x00007f75ee23b315 in DecoderThread (p_data=<optimized out>) at ../../src/input/decoder.c:1679
#7 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 13 (Thread 0x7f75d23d1700 (LWP 574)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x60c00003bf14) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x60c00003bec0, cond=0x60c00003bee8) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x60c00003bee8, mutex=0x60c00003bec0) at pthread_cond_wait.c:655
#3 0x00007f75ee342275 in vlc_cond_wait (p_condvar=<optimized out>, p_mutex=<optimized out>) at ../../src/posix/thread.c:205
#4 0x00007f75ee30e9ee in vlc_fifo_WaitCond (fifo=<optimized out>, condvar=<optimized out>) at ../../src/misc/fifo.c:71
#5 0x00007f75ee30e9fd in vlc_fifo_Wait (fifo=<optimized out>) at ../../src/misc/fifo.c:66
#6 0x00007f75ee23b315 in DecoderThread (p_data=<optimized out>) at ../../src/input/decoder.c:1679
#7 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 12 (Thread 0x7f75d21a9700 (LWP 573)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x61e0001608f0) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x61e000160950, cond=0x61e0001608c8) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x61e0001608c8, mutex=0x61e000160950) at pthread_cond_wait.c:655
#3 0x00007f75cf79a3ab in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007f75cf3f6d13 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#5 0x00007f75cf3f7728 in avcodec_send_packet () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
--Type <RET> for more, q to quit, c to continue without paging--
#6 0x00007f75d071bff0 in DecodeBlock (p_dec=p_dec@entry=0x61d0000ed910, pp_block=pp_block@entry=0x7f75d21a8b30) at ../../modules/codec/avcodec/video.c:1111
#7 0x00007f75d071d7f4 in DecodeVideo (p_dec=0x61d0000ed910, p_block=<optimized out>) at ../../modules/codec/avcodec/video.c:1354
#8 0x00007f75ee23a84a in DecoderDecode (p_dec=p_dec@entry=0x61d0000ed910, p_block=0x62500010e100) at ../../src/input/decoder.c:1307
#9 0x00007f75ee23a7ef in DecoderProcess (p_dec=p_dec@entry=0x61d0000ed910, p_block=p_block@entry=0x62500010e100) at ../../src/input/decoder.c:1430
#10 0x00007f75ee23ad14 in DecoderThread (p_data=<optimized out>) at ../../src/input/decoder.c:1690
#11 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#12 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 11 (Thread 0x7f75c9257700 (LWP 572)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x61e000161130) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x61e000161198, cond=0x61e000161108) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x61e000161108, mutex=0x61e000161198) at pthread_cond_wait.c:655
#3 0x00007f75cf79a9ee in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#5 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 10 (Thread 0x7f75c9a6e700 (LWP 571)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x61e000160f80) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x61e000160fe8, cond=0x61e000160f58) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x61e000160f58, mutex=0x61e000160fe8) at pthread_cond_wait.c:655
#3 0x00007f75cf79a9ee in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#5 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 9 (Thread 0x7f75ca285700 (LWP 570)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x61e000160dd0) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x61e000160e38, cond=0x61e000160da8) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x61e000160da8, mutex=0x61e000160e38) at pthread_cond_wait.c:655
#3 0x00007f75cf79a9ee in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#5 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 8 (Thread 0x7f75caa9c700 (LWP 569)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x61e000160c20) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x61e000160c88, cond=0x61e000160bf8) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x61e000160bf8, mutex=0x61e000160c88) at pthread_cond_wait.c:655
#3 0x00007f75cf79a9ee in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#5 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 7 (Thread 0x7f75cb29d700 (LWP 568)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x61e000160a70) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x61e000160ad8, cond=0x61e000160a48) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=0x61e000160a48, mutex=0x61e000160ad8) at pthread_cond_wait.c:655
#3 0x00007f75cf79a9ee in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#5 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 6 (Thread 0x7f75cba9e700 (LWP 567)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x6150000c4220) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x6150000c41d0, cond=0x6150000c41f8) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=cond@entry=0x6150000c41f8, mutex=mutex@entry=0x6150000c41d0) at pthread_cond_wait.c:655
#3 0x00007f75ee342275 in vlc_cond_wait (p_condvar=p_condvar@entry=0x6150000c41f8, p_mutex=p_mutex@entry=0x6150000c41d0) at ../../src/posix/thread.c:205
#4 0x00007f75ee317cbb in picture_pool_Wait (pool=0x6150000c41c0) at ../../src/misc/picture_pool.c:254
#5 0x00007f75ee2cc244 in vout_GetPicture (vout=0x61a000120110) at ../../src/video_output/video_output.c:310
#6 0x00007f75ee23746e in vout_new_buffer (p_dec=<optimized out>) at ../../src/input/decoder.c:583
#7 0x00007f75ee23f5b8 in decoder_NewPicture (dec=dec@entry=0x61d0000ed910) at ../../src/input/decoder_helpers.c:90
#8 0x00007f75d071d93d in lavc_va_GetFrame (ctx=ctx@entry=0x6190000b4080, frame=frame@entry=0x61600015db80) at ../../modules/codec/avcodec/video.c:1469
#9 0x00007f75d071dcea in lavc_GetFrame (ctx=0x6190000b4080, frame=0x61600015db80, flags=1) at ../../modules/codec/avcodec/video.c:1606
#10 0x00007f75cf3f949b in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#11 0x00007f75cf79b7af in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#12 0x00007f75cf50fb3a in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#13 0x00007f75cf510ca9 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
--Type <RET> for more, q to quit, c to continue without paging--
#14 0x00007f75cf515af8 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#15 0x00007f75cf519b8e in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#16 0x00007f75cf79a89f in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#17 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#18 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 5 (Thread 0x7f75d5431700 (LWP 561)):
#0 0x00007f75edd043a9 in futex_reltimed_wait_cancelable (private=0, reltime=0x7f75d54308c0, expected=0, futex_word=0x61f0000e8090) at ../sysdeps/unix/sysv/linux/futex-internal.h:142
#1 0x00007f75edd043a9 in __pthread_cond_wait_common (abstime=0x7f75d5430990, mutex=0x61f0000e8040, cond=0x61f0000e8068) at pthread_cond_wait.c:533
#2 0x00007f75edd043a9 in __pthread_cond_timedwait (cond=cond@entry=0x61f0000e8068, mutex=mutex@entry=0x61f0000e8040, abstime=abstime@entry=0x7f75d5430990) at pthread_cond_wait.c:667
#3 0x00007f75ee342369 in vlc_cond_timedwait (p_condvar=p_condvar@entry=0x61f0000e8068, p_mutex=p_mutex@entry=0x61f0000e8040, deadline=deadline@entry=119024406893) at ../../src/posix/thread.c:213
#4 0x00007f75ee27c7cf in ControlPop (b_postpone_seek=false, i_deadline=119024406893, p_param=0x7f75d5430c80, pi_type=<synthetic pointer>, p_input=0x61f0000e7f10) at ../../src/input/input.c:1635
#5 0x00007f75ee27c7cf in MainLoop (p_input=p_input@entry=0x61f0000e7f10, b_interactive=b_interactive@entry=true) at ../../src/input/input.c:857
#6 0x00007f75ee27d3dc in Run (data=0x61f0000e7f10) at ../../src/input/input.c:572
#7 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 4 (Thread 0x7f75d7cc5700 (LWP 558)):
#0 0x00007f75edc23b49 in __GI___poll (fds=0x7f75d7cc4c60, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007f75ee505bd2 in poll () at /usr/lib/x86_64-linux-gnu/libasan.so.5
#2 0x00007f75eacefbbb in poll (__timeout=-1, __nfds=<optimized out>, __fds=0x7f75d7cc4c60) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#3 0x00007f75eacefbbb in Run (data=<optimized out>) at ../../modules/control/dbus/dbus.c:855
#4 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#5 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 3 (Thread 0x7f75d7dc6700 (LWP 557)):
#0 0x00007f75edd03fbc in futex_wait_cancelable (private=0, expected=0, futex_word=0x616000008c88) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007f75edd03fbc in __pthread_cond_wait_common (abstime=0x0, mutex=0x616000008b20, cond=0x616000008c60) at pthread_cond_wait.c:502
#2 0x00007f75edd03fbc in __pthread_cond_wait (cond=cond@entry=0x616000008c60, mutex=mutex@entry=0x616000008b20) at pthread_cond_wait.c:655
#3 0x00007f75ee342275 in vlc_cond_wait (p_condvar=p_condvar@entry=0x616000008c60, p_mutex=p_mutex@entry=0x616000008b20) at ../../src/posix/thread.c:205
#4 0x00007f75ee28b14c in vlc_player_destructor_Thread (data=0x616000008b10) at ../../src/input/player.c:858
#5 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 2 (Thread 0x7f75e85c7700 (LWP 556)):
#0 0x00007f75edc23b49 in __GI___poll (fds=0x60400001e590, nfds=3, timeout=1500) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007f75ee505bd2 in poll () at /usr/lib/x86_64-linux-gnu/libasan.so.5
#2 0x00007f75eb1e0101 in () at /usr/lib/x86_64-linux-gnu/libpulse.so.0
#3 0x00007f75eb1d1920 in pa_mainloop_poll () at /usr/lib/x86_64-linux-gnu/libpulse.so.0
#4 0x00007f75eb1d1f6e in pa_mainloop_iterate () at /usr/lib/x86_64-linux-gnu/libpulse.so.0
#5 0x00007f75eb1d2020 in pa_mainloop_run () at /usr/lib/x86_64-linux-gnu/libpulse.so.0
#6 0x00007f75eb1e0049 in () at /usr/lib/x86_64-linux-gnu/libpulse.so.0
#7 0x00007f75eb17d4f8 in () at /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-12.2.so
#8 0x00007f75edcfdfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9 0x00007f75edc2e80f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 1 (Thread 0x7f75ed75fd00 (LWP 552)):
#0 0x00007f75edb6d5cc in __GI___sigtimedwait (set=set@entry=0x7ffc722f8860, info=info@entry=0x7ffc722f7dc0, timeout=timeout@entry=0x0) at ../sysdeps/unix/sysv/linux/sigtimedwait.c:29
#1 0x00007f75edd0826c in __sigwait (set=0x7ffc722f8860, sig=0x7ffc722f87e0) at ../sysdeps/unix/sysv/linux/sigwait.c:28
#2 0x00007f75ee51b731 in () at /usr/lib/x86_64-linux-gnu/libasan.so.5
#3 0x000055b23bf14a43 in main (argc=<optimized out>, argv=<optimized out>) at ../../bin/vlc.c:262
Full step to reproduce:
- Use/Build latest VLC or use VLC 3.0 from your distrib (harder to reproduce on stable VLC 3.x: it block only one time over 10)
- Run with the following argument
./vlc <video> -Idummy --vout gl
- Close the video window
- Ctrl-c to stop VLC
Debian stretch with Intel HD 630:
- Xorg 1.20.3
- libgl1-mesa-dri 18.3.4-2 / EGL or GLX backend
Edited by Thomas Guillem