Quantcast

Deadlock changing state in imx6

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Deadlock changing state in imx6

Jorge

Hi all!


I've a little problem with a C++ application implementing the next pipeline in a imx6 platform.


gst-launch-1.0 filesrc location=<filename.mp4> typefind=true ! video/quicktime ! qtdemux ! vpudec ! appsink


We're using GStreamer 1.4.5 and gst1.0-fsl-plugins-4.0.8 from Freescale. The components are built using Yocto.

VPUDec does the hardware decoding and we're using appsink to get the buffers and rendering over a texture

using the glTexDirectVIVMap functions from Freescale.


The playing works ok but sometimes we get some deadlocks. Always at the end of the video playing when we are changing

to GST_STATE_READY. I've been able to catch a gdb backtrace. It seems that the qtdemux is waiting for free buffers

(gstbufferpool.c:1120) and the main thread is waiting trying to change some component from PAUSED to READY.


The interesting threads. First the thread related to qtdemux...


(gdb) thr 31
[Switching to thread 31 (Thread 0x37b00410 (LWP 489))]
#0  0x75d05394 in __GI_ppoll (fds=0x417fd240, nfds=1, timeout=<optimized out>, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:56
56    ../sysdeps/unix/sysv/linux/ppoll.c: No such file or directory.
(gdb) bt
#0  0x75d05394 in __GI_ppoll (fds=0x417fd240, nfds=1, timeout=<optimized out>, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:56
#1  0x761ffc48 in gst_poll_wait (set=0x52e372c8, timeout=<optimized out>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpoll.c:1248
#2  0x761b4318 in default_acquire_buffer (pool=0x415eb360 [GstVideoBufferPool], buffer=0x37aff794, params=0x3eb)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstbufferpool.c:1120
#3  0x761b5c04 in gst_buffer_pool_acquire_buffer (pool=0x415eb360 [GstVideoBufferPool], buffer=0x37aff794, buffer@entry=0x37aff78c, params=params@entry=0x0)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstbufferpool.c:1209
#4  0x50d233b8 in gst_video_decoder_allocate_output_buffer (decoder=decoder@entry=0x50ea2138 [GstVpuDec])
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi/gstreamer1.0-plugins-base/1.4.5-r0/gst-plugins-base-1.4.5/gst-libs/gst/video/gstvideodecoder.c:3520
#5  0x50bef348 in gst_vpu_dec_object_get_gst_buffer (bdec=0x50ea2138 [GstVpuDec], bdec@entry=0x761db7cc, vpu_dec_object=vpu_dec_object@entry=0x50ea7118 [GstVpuDecObject])
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/imx6unidesa-poky-linux-gnueabi/gst1.0-fsl-plugin/4.0.8-r0/gst1.0-fsl-plugins-4.0.8/plugins/vpu/gstvpudecobject.c:1006
#6  0x50bf1ce8 in gst_vpu_dec_object_decode (vpu_dec_object=0x50ea7118 [GstVpuDecObject], bdec=0x761db7cc, frame=0x50bf8290 <__FUNCTION__.23893>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/imx6unidesa-poky-linux-gnueabi/gst1.0-fsl-plugin/4.0.8-r0/gst1.0-fsl-plugins-4.0.8/plugins/vpu/gstvpudecobject.c:1231
#7  0x50d1a750 in gst_video_decoder_decode_frame (decoder=decoder@entry=0x50ea2138 [GstVpuDec], frame=0x423b7aa0)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi/gstreamer1.0-plugins-base/1.4.5-r0/gst-plugins-base-1.4.5/gst-libs/gst/video/gstvideodecoder.c:3015
#8  0x50d1aa88 in gst_video_decoder_chain_forward (decoder=decoder@entry=0x50ea2138 [GstVpuDec], buf=buf@entry=0x423adb28, at_eos=at_eos@entry=0)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi/gstreamer1.0-plugins-base/1.4.5-r0/gst-plugins-base-1.4.5/gst-libs/gst/video/gstvideodecoder.c:1882
#9  0x50d1d298 in gst_video_decoder_chain (pad=<optimized out>, parent=0x50ea2138 [GstVpuDec], buf=0x423adb28)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi/gstreamer1.0-plugins-base/1.4.5-r0/gst-plugins-base-1.4.5/gst-libs/gst/video/gstvideodecoder.c:2183
#10 0x761e90f0 in gst_pad_push_data (data=0x423adb28, type=4112, pad=0x50e8d540 [GstPad])
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpad.c:3830
#11 0x761e90f0 in gst_pad_push_data (pad=0x50e8dba8 [GstPad], type=type@entry=4112, data=<optimized out>, data@entry=0x423adb28)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpad.c:4063
#12 0x761f1a50 in gst_pad_push (pad=<optimized out>, buffer=buffer@entry=0x423adb28)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpad.c:4174
#13 0x50db8550 in gst_qtdemux_decorate_and_push_buffer (qtdemux=0x50e9c070 [GstQTDemux], qtdemux@entry=0x11493, stream=stream@entry=0x4c2e7a00, buf=0x423adb28, dts=400000000, dts@entry=2908, pts=400000000,
    pts@entry=5830142779776457216, duration=40000000, duration@entry=5830142781093310468, keyframe=0, keyframe@entry=40000000, position=position@entry=400000000, byte_position=<optimized out>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-good/1.4.5-r0/gst-plugins-good-1.4.5/gst/isomp4/qtdemux.c:4139
#14 0x50dcd988 in gst_qtdemux_loop (qtdemux=0x11493)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-good/1.4.5-r0/gst-plugins-good-1.4.5/gst/isomp4/qtdemux.c:4286
#15 0x50dcd988 in gst_qtdemux_loop (pad=0x7627e220)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-good/1.4.5-r0/gst-plugins-good-1.4.5/gst/isomp4/qtdemux.c:4363
#16 0x762206ec in gst_task_func (task=0x74b97760 [GstTask])
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gsttask.c:316
#17 0x762f8230 in g_thread_pool_thread_proxy (data=<optimized out>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/glib-2.0/1_2.42.1-r0/glib-2.42.1/glib/gthreadpool.c:307
#18 0x762f7704 in g_thread_proxy (data=0x50e97d80)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/glib-2.0/1_2.42.1-r0/glib-2.42.1/glib/gthread.c:764
#19 0x769dade0 in start_thread (arg=0x37b00410) at pthread_create.c:338
#20 0x75d11fa0 in  () at ../sysdeps/unix/sysv/linux/arm/clone.S:89



The second one, is from the main thread when we try to change the state to READY


(gdb) thr 3
[Switching to thread 3 (Thread 0x747ff410 (LWP 455))]
#0  0x769e4198 in __lll_lock_wait (futex=0x50e75048, private=0) at lowlevellock.c:46
46    lowlevellock.c: No such file or directory.
(gdb) bt
#0  0x769e4198 in __lll_lock_wait (futex=0x50e75048, private=0) at lowlevellock.c:46
#1  0x769dd944 in __GI___pthread_mutex_lock (mutex=0x50e75048) at pthread_mutex_lock.c:115
#2  0x761ee020 in gst_pad_activate_mode (new_mode=GST_PAD_MODE_NONE, pad=0x50e8d540 [GstPad])
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpad.c:966
#3  0x761ee020 in gst_pad_activate_mode (pad=pad@entry=0x50e8d540 [GstPad], mode=mode@entry=GST_PAD_MODE_PUSH, active=active@entry=0)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpad.c:1154
#4  0x761ee8b4 in gst_pad_set_active (pad=0x50e8d540 [GstPad], active=0)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpad.c:1031
#5  0x761cb124 in activate_pads (vpad=<optimized out>, ret=0x747fe890, active=0x747fe8d4)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2687
#6  0x761de210 in gst_iterator_fold (it=it@entry=0x52e36a50, func=func@entry=0x761cb10c <activate_pads>, ret=ret@entry=0x747fe890, user_data=user_data@entry=0x747fe8d4)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstiterator.c:612
#7  0x761cb51c in iterator_activate_fold_with_resync (iter=iter@entry=0x52e36a50, user_data=user_data@entry=0x747fe8d4, func=0x761cb10c <activate_pads>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2707
#8  0x761cd82c in gst_element_pads_activate (element=element@entry=0x50ea2138 [GstVpuDec], active=active@entry=0)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2751
#9  0x761cdbc8 in gst_element_change_state_func (element=0x50ea2138 [GstVpuDec], transition=<optimized out>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2815
#10 0x50d1ffdc in gst_video_decoder_change_state (element=0x50ea2138 [GstVpuDec], transition=GST_STATE_CHANGE_PAUSED_TO_READY)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi/gstreamer1.0-plugins-base/1.4.5-r0/gst-plugins-base-1.4.5/gst-libs/gst/video/gstvideodecoder.c:2228
#11 0x761cfd1c in gst_element_change_state (element=element@entry=0x50ea2138 [GstVpuDec], transition=transition@entry=GST_STATE_CHANGE_PAUSED_TO_READY)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2602
#12 0x761d0358 in gst_element_set_state_func (element=0x50ea2138 [GstVpuDec], state=<optimized out>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2558
Python Exception <class 'gdb.error'> Unable to access DWARF register number 0x20:
#13 0x761ae2c8 in gst_bin_change_state_func (next=<optimized out>, current=<optimized out>, start_time=#14 0x761ae2c8 in gst_bin_change_state_func (element=0x50e7b0e8 [GstPipeline], transition=31)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstbin.c:2665
#15 0x761f5cb4 in gst_pipeline_change_state (element=0x50e7b0e8 [GstPipeline], transition=GST_STATE_CHANGE_PAUSED_TO_READY)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpipeline.c:469
#16 0x761cfd1c in gst_element_change_state (element=element@entry=0x50e7b0e8 [GstPipeline], transition=<optimized out>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2602
#17 0x761d075c in gst_element_continue_state (element=element@entry=0x50e7b0e8 [GstPipeline], ret=ret@entry=GST_STATE_CHANGE_SUCCESS)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2312
#18 0x761cfe74 in gst_element_change_state (element=element@entry=0x50e7b0e8 [GstPipeline], transition=transition@entry=GST_STATE_CHANGE_PLAYING_TO_PAUSED)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2639
#19 0x761d0358 in gst_element_set_state_func (element=0x50e7b0e8 [GstPipeline], state=<optimized out>)
    at /mnt/develop/imx6unidesa/yocto-unidesa-3.14.52-1.1.1/build-imx6unidesa-fb/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstelement.c:2558
#20 0x002d45bc in GSLib::gplayer_poll_for_state_change(GstState, GSLib::gplayer_private_data*) (new_state=GST_STATE_READY, priv=0x511fc240) at ../TC-Platform/presentation/src/lib_gs/src/TGSGStreamer.cpp:313
#21 0x002d5294 in GSLib::gplayer_stop(GSLib::gplayer_property*) (pproperty=0x4620b7b0) at ../TC-Platform/presentation/src/lib_gs/src/TGSGStreamer.cpp:700
#22 0x002d83bc in GSLib::TGSGStreamer::Stop() (this=0x436eb700) at ../TC-Platform/presentation/src/lib_gs/src/TGSGStreamer.cpp:2531


The complete threads info:


(gdb) info thr
  Id   Target Id         Frame
  31   Thread 0x37b00410 (LWP 489) "qtdemux0:sink" 0x75d05394 in __GI_ppoll (fds=0x417fd240, nfds=1, timeout=<optimized out>, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:56
  30   Thread 0x3efff410 (LWP 487) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x4c21e540, mutex=<optimized out>) at pthread_cond_wait.c:186
  29   Thread 0x3f7ff410 (LWP 486) "Tucan" 0x769e4690 in read () at ../sysdeps/unix/syscall-template.S:81
  28   Thread 0x401ff410 (LWP 485) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  27   Thread 0x409ff410 (LWP 484) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  26   Thread 0x413ff410 (LWP 483) "Tucan" 0x769e4690 in read () at ../sysdeps/unix/syscall-template.S:81
  25   Thread 0x42ddd410 (LWP 482) "Tucan" 0x769e136c in __pthread_cond_timedwait (cond=<optimized out>, mutex=<optimized out>, abstime=0x42ddcabc) at pthread_cond_timedwait.c:198
  24   Thread 0x435dd410 (LWP 481) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x74a87d50, mutex=<optimized out>) at pthread_cond_wait.c:186
  23   Thread 0x449ff410 (LWP 480) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x4c21c680, mutex=<optimized out>) at pthread_cond_wait.c:186
  22   Thread 0x451ff410 (LWP 479) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x4c21c2c0, mutex=<optimized out>) at pthread_cond_wait.c:186
  21   Thread 0x461ff410 (LWP 478) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x461fecd8, mutex=<optimized out>) at pthread_cond_wait.c:186
  20   Thread 0x46bff410 (LWP 477) "Tucan" 0x75d0b614 in select () at ../sysdeps/unix/syscall-template.S:81
  19   Thread 0x473ff410 (LWP 476) "Tucan" 0x75d0b614 in select () at ../sysdeps/unix/syscall-template.S:81
  18   Thread 0x47dff410 (LWP 475) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  17   Thread 0x485ff410 (LWP 474) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  16   Thread 0x48dff410 (LWP 473) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  15   Thread 0x495ff410 (LWP 472) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  14   Thread 0x49dff410 (LWP 471) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  13   Thread 0x4a7ff410 (LWP 470) "Tucan" 0x75d0b614 in select () at ../sysdeps/unix/syscall-template.S:81
  12   Thread 0x4afff410 (LWP 469) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  11   Thread 0x4b7ff410 (LWP 468) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  10   Thread 0x4bfff410 (LWP 467) "Tucan" 0x769e136c in __pthread_cond_timedwait (cond=<optimized out>, mutex=<optimized out>, abstime=0x4bffedb0) at pthread_cond_timedwait.c:198
  9    Thread 0x4d62f410 (LWP 462) "Tucan" 0x769e33bc in futex_abstimed_wait (cancel=true, private=0, abstime=0x0, expected=1, futex=0x75697540) at sem_waitcommon.c:42
  8    Thread 0x4de2f410 (LWP 461) "Tucan" 0x75cdeaf0 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  7    Thread 0x4e62f410 (LWP 460) "Tucan" 0x75d0b614 in select () at ../sysdeps/unix/syscall-template.S:81
  6    Thread 0x507ff410 (LWP 458) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x73e10028, mutex=<optimized out>) at pthread_cond_wait.c:186
  5    Thread 0x51ce1410 (LWP 457) "Tucan" 0x75d0acb8 in ioctl () at ../sysdeps/unix/syscall-template.S:81
  4    Thread 0x73dff410 (LWP 456) "Tucan" 0x769e5130 in nanosleep () at ../sysdeps/unix/syscall-template.S:81
  3    Thread 0x747ff410 (LWP 455) "Tucan" 0x769e4198 in __lll_lock_wait (futex=0x50e75048, private=0) at lowlevellock.c:46
  2    Thread 0x755ff410 (LWP 454) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x756422c0, mutex=<optimized out>) at pthread_cond_wait.c:186
* 1    Thread 0x75ae6000 (LWP 451) "Tucan" 0x769e0fa8 in __pthread_cond_wait (cond=0x7575a740, mutex=<optimized out>) at pthread_cond_wait.c:186



How can I debug this situation?? Maybe this deadlock is something already fixed in a more recent version... But I have to use this

version because the Freescale components are related to this one... Any hint is welcome!


Regards

Jorge


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Deadlock changing state in imx6

Nicolas Dufresne-5
Le lundi 27 mars 2017 à 19:02 +0000, Jorge Fernandez Monteagudo a
écrit :

> I've a little problem with a C++ application implementing the next
> pipeline in a imx6 platform.
>
> gst-launch-1.0 filesrc location=<filename.mp4> typefind=true !
> video/quicktime ! qtdemux ! vpudec ! appsink
>
> We're using GStreamer 1.4.5 and gst1.0-fsl-plugins-4.0.8 from
> Freescale. The components are built using Yocto.
> VPUDec does the hardware decoding and we're using appsink to get the
> buffers and rendering over a texture
> using the glTexDirectVIVMap functions from Freescale.
This is quite ancient. About your deadlock, have you verified that the
fsl plugin (we don't support that one in general, because there is no
upstream) properly stop() or set_flushing() it's buffer pool when the
state change goes to READY (before you try to deactivate the pad) ?

Nicolas

p.s. You should probably use gst-plugins-imx and newer GStreamer
version. In 1.12, the vivante GL extension will be supported by
GStreamer upstream opengl plugin (no need for appsink).
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (188 bytes) Download Attachment
Loading...