CGLCreateContext hangs on a lock with context sharing and java (maybe CFRunLoop issues?)
Submitted by gohai
Link to original bug (#768630)
Description
I have a playbin-pipeline of a local file, which is initially being set to paused to allow for seeking etc. When I call gst_element_get_state() afterwards, to wait for the asynchronous state change to succeed this hangs forever.
My application uses GL context sharing. Marcin spotted the following line in the logs, which he thought was suspicious "pad_query:glcolorconvertelement0:src pad peer query failed". Indeed, when I remove the glcolorconvert from the pipeline, the problem (hang) disappears.
You find the setup of the application's pipeline here:
https://github.com/gohai/processing-glvideo/blob/b8bc94f59630b010e52fe25846e1c5423c8398dd/src/native/impl.c#L240
I am attaching a GST_DEBUG=*:5 trace. When I gdb the process as it hangs I find the following two threads that are gstreamer-related:
Thread 36 (Thread 0x3c03 of process 35111):
#0 0x00007fff8a68707a in ?? () from /usr/lib/system/libsystem_kernel.dylib
#1 0x000000012dc0a0fa in g_poll () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#2 0x000000012dbfbc9d in g_main_context_iterate () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#3 0x000000012dbfc01f in g_main_loop_run () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#4 0x000000012d9ffe41 in gst_gl_window_navigation_thread () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libgstgl-1.0.0.dylib
#5 0x000000012dc2344a in g_thread_proxy () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#6 0x00007fff8ed6699d in ?? () from /usr/lib/system/libsystem_pthread.dylib
#7 0x000000000000f503 in ?? ()
#8 0x0000700002006000 in ?? ()
#9 0x0000700002005f50 in ?? ()
#10 0x00007fff8ed6691a in ?? () from /usr/lib/system/libsystem_pthread.dylib
#11 0x0000000000000000 in ?? ()
Thread 27 (Thread 0x3303 of process 35111):
#0 0x00007fff8a68707a in ?? () from /usr/lib/system/libsystem_kernel.dylib
#1 0x000000012dc0a0fa in g_poll () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#2 0x000000012dbfbc9d in g_main_context_iterate () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#3 0x000000012dbfc01f in g_main_loop_run () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#4 0x000000012d9db68c in glvideo_mainloop () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglvideo.jnilib
#5 0x000000012dc2344a in g_thread_proxy () from /Users/gohai/Documents/Code/processing-glvideo/library/macosx/libglib-2.0.0.dylib
#6 0x00007fff8ed6699d in ?? () from /usr/lib/system/libsystem_pthread.dylib
#7 0x000000000000ed07 in ?? ()
#8 0x0000700001c71000 in ?? ()
#9 0x0000700001c70f50 in ?? ()
#10 0x00007fff8ed6691a in ?? () from /usr/lib/system/libsystem_pthread.dylib
#11 0x0000000000000000 in ?? ()
Version: 1.8.1