Decoding deadlock hint during seek

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Decoding deadlock hint during seek

Michael Nazzareno Trimarchi
Hi all

1   __libc_do_syscall                         libc-do-syscall.S
            48   0xb4f10054
2   __lll_lock_wait                           lowlevellock.c
            46   0xb4f0de42
3   __GI___pthread_mutex_lock                 pthread_mutex_lock.c
            113  0xb4f088ac
4   g_rec_mutex_lock                          gthread-posix.c
            308  0xb4b87120
5   gst_pad_stop_task                         gstpad.c
            6301 0xaddf1d68
6   gst_mpp_video_dec_sink_event              gstmppvideodec.c
            786  0xac00e816
7   gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
8   gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
9   gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
10  gst_base_transform_sink_eventfunc         gstbasetransform.c
            1910 0xadeaed82
11  gst_capsfilter_sink_event                 gstevent.h
            436  0xad5547e2
12  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
13  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
14  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
15  gst_base_parse_sink_event_default         gstbaseparse.c
            1466 0xade96b6a
16  gst_h264_parse_event                      gsth264parse.c
            2905 0xac0752d8
17  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
18  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
19  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
20  gst_multi_queue_sink_event                gstmultiqueue.c
            2274 0xad56cb50
21  gst_pad_send_event_unchecked              gstpad.c
            5760 0xadde88d8
22  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
23  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
24  gst_qtdemux_push_event                    qtdemux.c
            1007 0xac98f082
25  gst_qtdemux_do_seek                       qtdemux.c
            1659 0xac99efca
26  gst_qtdemux_handle_src_event              qtdemux.c
            1791 0xac99efca
27  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
28  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
29  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
30  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
31  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
32  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
33  gst_base_parse_handle_seek                gstevent.h
            436  0xade92c4e
34  gst_base_parse_src_event_default          gstbaseparse.c
            1635 0xade92c4e
35  gst_h264_parse_src_event                  gsth264parse.c
            2942 0xac079b50
36  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
37  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
38  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
39  gst_base_transform_src_eventfunc          gstbasetransform.c
            1962 0xadeaf226
40  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
41  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
42  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
43  gst_video_decoder_src_event_default       gstvideodecoder.c
            1494 0xad7b9ba6
44  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
45  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
46  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
47  event_forward_func                        gstevent.h
            436  0xaddf0f7e

Need some help/idea how debug decoder deadlock on seek on video decoding.

Michael


--
Michael Nazzareno Trimarchi
Amarula Solutions BV
COO Co-Founder
Cruquiuskade 47 Amsterdam 1018 AM NL
T. +31(0)851119172
M. +39(0)3479132170
[`as] https://www.amarulasolutions.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Decoding deadlock hint during seek

David Ing
In the past, I have encountered deadlocks when a part of my pipeline has a demuxer or a tee, or basically some kind of element which "splits" a single stream into multiple streams.  The outputs (source pads) of all such elements should always be attached to some kind of queue because a queue is a thread boundary.

So I guess step 1 is to analyze your pipeline and make sure you have queues in the right places.

If you are still stuck then sometimes you can add more queues into random spots in your pipeline to see if that fixes the problem.


On Thu, Jul 16, 2020 at 7:16 AM Michael Nazzareno Trimarchi <[hidden email]> wrote:
Hi all

1   __libc_do_syscall                         libc-do-syscall.S
            48   0xb4f10054
2   __lll_lock_wait                           lowlevellock.c
            46   0xb4f0de42
3   __GI___pthread_mutex_lock                 pthread_mutex_lock.c
            113  0xb4f088ac
4   g_rec_mutex_lock                          gthread-posix.c
            308  0xb4b87120
5   gst_pad_stop_task                         gstpad.c
            6301 0xaddf1d68
6   gst_mpp_video_dec_sink_event              gstmppvideodec.c
            786  0xac00e816
7   gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
8   gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
9   gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
10  gst_base_transform_sink_eventfunc         gstbasetransform.c
            1910 0xadeaed82
11  gst_capsfilter_sink_event                 gstevent.h
            436  0xad5547e2
12  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
13  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
14  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
15  gst_base_parse_sink_event_default         gstbaseparse.c
            1466 0xade96b6a
16  gst_h264_parse_event                      gsth264parse.c
            2905 0xac0752d8
17  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
18  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
19  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
20  gst_multi_queue_sink_event                gstmultiqueue.c
            2274 0xad56cb50
21  gst_pad_send_event_unchecked              gstpad.c
            5760 0xadde88d8
22  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
23  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
24  gst_qtdemux_push_event                    qtdemux.c
            1007 0xac98f082
25  gst_qtdemux_do_seek                       qtdemux.c
            1659 0xac99efca
26  gst_qtdemux_handle_src_event              qtdemux.c
            1791 0xac99efca
27  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
28  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
29  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
30  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
31  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
32  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
33  gst_base_parse_handle_seek                gstevent.h
            436  0xade92c4e
34  gst_base_parse_src_event_default          gstbaseparse.c
            1635 0xade92c4e
35  gst_h264_parse_src_event                  gsth264parse.c
            2942 0xac079b50
36  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
37  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
38  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
39  gst_base_transform_src_eventfunc          gstbasetransform.c
            1962 0xadeaf226
40  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
41  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
42  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
43  gst_video_decoder_src_event_default       gstvideodecoder.c
            1494 0xad7b9ba6
44  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
45  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
46  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
47  event_forward_func                        gstevent.h
            436  0xaddf0f7e

Need some help/idea how debug decoder deadlock on seek on video decoding.

Michael


--
Michael Nazzareno Trimarchi
Amarula Solutions BV
COO Co-Founder
Cruquiuskade 47 Amsterdam 1018 AM NL
T. +31(0)851119172
M. +39(0)3479132170
[`as] https://www.amarulasolutions.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

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

Re: Decoding deadlock hint during seek

Michael Nazzareno Trimarchi
Hi

This is more straight forward and happen using QTMultimedia and seek on mpp

Michael

On Thu, Jul 16, 2020 at 7:23 PM David Ing <[hidden email]> wrote:

>
> In the past, I have encountered deadlocks when a part of my pipeline has a demuxer or a tee, or basically some kind of element which "splits" a single stream into multiple streams.  The outputs (source pads) of all such elements should always be attached to some kind of queue because a queue is a thread boundary.
>
> So I guess step 1 is to analyze your pipeline and make sure you have queues in the right places.
>
> If you are still stuck then sometimes you can add more queues into random spots in your pipeline to see if that fixes the problem.
>
>
> On Thu, Jul 16, 2020 at 7:16 AM Michael Nazzareno Trimarchi <[hidden email]> wrote:
>>
>> Hi all
>>
>> 1   __libc_do_syscall                         libc-do-syscall.S
>>             48   0xb4f10054
>> 2   __lll_lock_wait                           lowlevellock.c
>>             46   0xb4f0de42
>> 3   __GI___pthread_mutex_lock                 pthread_mutex_lock.c
>>             113  0xb4f088ac
>> 4   g_rec_mutex_lock                          gthread-posix.c
>>             308  0xb4b87120
>> 5   gst_pad_stop_task                         gstpad.c
>>             6301 0xaddf1d68
>> 6   gst_mpp_video_dec_sink_event              gstmppvideodec.c
>>             786  0xac00e816
>> 7   gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 8   gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 9   gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 10  gst_base_transform_sink_eventfunc         gstbasetransform.c
>>             1910 0xadeaed82
>> 11  gst_capsfilter_sink_event                 gstevent.h
>>             436  0xad5547e2
>> 12  gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 13  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 14  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 15  gst_base_parse_sink_event_default         gstbaseparse.c
>>             1466 0xade96b6a
>> 16  gst_h264_parse_event                      gsth264parse.c
>>             2905 0xac0752d8
>> 17  gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 18  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 19  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 20  gst_multi_queue_sink_event                gstmultiqueue.c
>>             2274 0xad56cb50
>> 21  gst_pad_send_event_unchecked              gstpad.c
>>             5760 0xadde88d8
>> 22  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 23  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 24  gst_qtdemux_push_event                    qtdemux.c
>>             1007 0xac98f082
>> 25  gst_qtdemux_do_seek                       qtdemux.c
>>             1659 0xac99efca
>> 26  gst_qtdemux_handle_src_event              qtdemux.c
>>             1791 0xac99efca
>> 27  gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 28  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 29  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 30  gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 31  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 32  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 33  gst_base_parse_handle_seek                gstevent.h
>>             436  0xade92c4e
>> 34  gst_base_parse_src_event_default          gstbaseparse.c
>>             1635 0xade92c4e
>> 35  gst_h264_parse_src_event                  gsth264parse.c
>>             2942 0xac079b50
>> 36  gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 37  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 38  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 39  gst_base_transform_src_eventfunc          gstbasetransform.c
>>             1962 0xadeaf226
>> 40  gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 41  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 42  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 43  gst_video_decoder_src_event_default       gstvideodecoder.c
>>             1494 0xad7b9ba6
>> 44  gst_pad_send_event_unchecked              gstpad.c
>>             5761 0xadde8aec
>> 45  gst_pad_push_event_unchecked              gstpad.c
>>             5406 0xadde8fa6
>> 46  gst_pad_push_event                        gstpad.c
>>             5543 0xaddf0cbc
>> 47  event_forward_func                        gstevent.h
>>             436  0xaddf0f7e
>>
>> Need some help/idea how debug decoder deadlock on seek on video decoding.
>>
>> Michael
>>
>>
>> --
>> Michael Nazzareno Trimarchi
>> Amarula Solutions BV
>> COO Co-Founder
>> Cruquiuskade 47 Amsterdam 1018 AM NL
>> T. +31(0)851119172
>> M. +39(0)3479132170
>> [`as] https://www.amarulasolutions.com
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



--
Michael Nazzareno Trimarchi
Amarula Solutions BV
COO Co-Founder
Cruquiuskade 47 Amsterdam 1018 AM NL
T. +31(0)851119172
M. +39(0)3479132170
[`as] https://www.amarulasolutions.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Decoding deadlock hint during seek

Michael Nazzareno Trimarchi
Hi

From the stacktrace look like that I'm here

GST_PAD_STREAM_LOCK (pad); <----- pad is already locked
GST_PAD_STREAM_UNLOCK (pad);

Can someone explain me this code?

On Thu, Jul 16, 2020 at 7:51 PM Michael Nazzareno Trimarchi
<[hidden email]> wrote:

>
> Hi
>
> This is more straight forward and happen using QTMultimedia and seek on mpp
>
> Michael
>
> On Thu, Jul 16, 2020 at 7:23 PM David Ing <[hidden email]> wrote:
> >
> > In the past, I have encountered deadlocks when a part of my pipeline has a demuxer or a tee, or basically some kind of element which "splits" a single stream into multiple streams.  The outputs (source pads) of all such elements should always be attached to some kind of queue because a queue is a thread boundary.
> >
> > So I guess step 1 is to analyze your pipeline and make sure you have queues in the right places.
> >
> > If you are still stuck then sometimes you can add more queues into random spots in your pipeline to see if that fixes the problem.
> >
> >
> > On Thu, Jul 16, 2020 at 7:16 AM Michael Nazzareno Trimarchi <[hidden email]> wrote:
> >>
> >> Hi all
> >>
> >> 1   __libc_do_syscall                         libc-do-syscall.S
> >>             48   0xb4f10054
> >> 2   __lll_lock_wait                           lowlevellock.c
> >>             46   0xb4f0de42
> >> 3   __GI___pthread_mutex_lock                 pthread_mutex_lock.c
> >>             113  0xb4f088ac
> >> 4   g_rec_mutex_lock                          gthread-posix.c
> >>             308  0xb4b87120
> >> 5   gst_pad_stop_task                         gstpad.c
> >>             6301 0xaddf1d68
> >> 6   gst_mpp_video_dec_sink_event              gstmppvideodec.c
> >>             786  0xac00e816
> >> 7   gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 8   gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 9   gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 10  gst_base_transform_sink_eventfunc         gstbasetransform.c
> >>             1910 0xadeaed82
> >> 11  gst_capsfilter_sink_event                 gstevent.h
> >>             436  0xad5547e2
> >> 12  gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 13  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 14  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 15  gst_base_parse_sink_event_default         gstbaseparse.c
> >>             1466 0xade96b6a
> >> 16  gst_h264_parse_event                      gsth264parse.c
> >>             2905 0xac0752d8
> >> 17  gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 18  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 19  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 20  gst_multi_queue_sink_event                gstmultiqueue.c
> >>             2274 0xad56cb50
> >> 21  gst_pad_send_event_unchecked              gstpad.c
> >>             5760 0xadde88d8
> >> 22  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 23  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 24  gst_qtdemux_push_event                    qtdemux.c
> >>             1007 0xac98f082
> >> 25  gst_qtdemux_do_seek                       qtdemux.c
> >>             1659 0xac99efca
> >> 26  gst_qtdemux_handle_src_event              qtdemux.c
> >>             1791 0xac99efca
> >> 27  gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 28  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 29  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 30  gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 31  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 32  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 33  gst_base_parse_handle_seek                gstevent.h
> >>             436  0xade92c4e
> >> 34  gst_base_parse_src_event_default          gstbaseparse.c
> >>             1635 0xade92c4e
> >> 35  gst_h264_parse_src_event                  gsth264parse.c
> >>             2942 0xac079b50
> >> 36  gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 37  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 38  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 39  gst_base_transform_src_eventfunc          gstbasetransform.c
> >>             1962 0xadeaf226
> >> 40  gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 41  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 42  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 43  gst_video_decoder_src_event_default       gstvideodecoder.c
> >>             1494 0xad7b9ba6
> >> 44  gst_pad_send_event_unchecked              gstpad.c
> >>             5761 0xadde8aec
> >> 45  gst_pad_push_event_unchecked              gstpad.c
> >>             5406 0xadde8fa6
> >> 46  gst_pad_push_event                        gstpad.c
> >>             5543 0xaddf0cbc
> >> 47  event_forward_func                        gstevent.h
> >>             436  0xaddf0f7e
> >>
> >> Need some help/idea how debug decoder deadlock on seek on video decoding.
> >>
> >> Michael
> >>
> >>
> >> --
> >> Michael Nazzareno Trimarchi
> >> Amarula Solutions BV
> >> COO Co-Founder
> >> Cruquiuskade 47 Amsterdam 1018 AM NL
> >> T. +31(0)851119172
> >> M. +39(0)3479132170
> >> [`as] https://www.amarulasolutions.com
> >> _______________________________________________
> >> gstreamer-devel mailing list
> >> [hidden email]
> >> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> --
> Michael Nazzareno Trimarchi
> Amarula Solutions BV
> COO Co-Founder
> Cruquiuskade 47 Amsterdam 1018 AM NL
> T. +31(0)851119172
> M. +39(0)3479132170
> [`as] https://www.amarulasolutions.com



--
Michael Nazzareno Trimarchi
Amarula Solutions BV
COO Co-Founder
Cruquiuskade 47 Amsterdam 1018 AM NL
T. +31(0)851119172
M. +39(0)3479132170
[`as] https://www.amarulasolutions.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Decoding deadlock hint during seek

Olivier Crête-3
Hi,

On Thu, 2020-07-16 at 20:01 +0200, Michael Nazzareno Trimarchi wrote:
From the stacktrace look like that I'm here

GST_PAD_STREAM_LOCK (pad); <----- pad is already locked
GST_PAD_STREAM_UNLOCK (pad);

Can someone explain me this code?

This pattern is used to ensure that the pad lock has been released by other code before proceding further. Normally after stopping a task. So if it stops there, you want to look at the other thread holding the lock and find out why it's not stopping, there is probably somethign blocking downstream.

Olivier


On Thu, Jul 16, 2020 at 7:51 PM Michael Nazzareno Trimarchi
<
[hidden email]
> wrote:

Hi

This is more straight forward and happen using QTMultimedia and seek on mpp

Michael

On Thu, Jul 16, 2020 at 7:23 PM David Ing <
[hidden email]
> wrote:

In the past, I have encountered deadlocks when a part of my pipeline has a demuxer or a tee, or basically some kind of element which "splits" a single stream into multiple streams.  The outputs (source pads) of all such elements should always be attached to some kind of queue because a queue is a thread boundary.

So I guess step 1 is to analyze your pipeline and make sure you have queues in the right places.

If you are still stuck then sometimes you can add more queues into random spots in your pipeline to see if that fixes the problem.


On Thu, Jul 16, 2020 at 7:16 AM Michael Nazzareno Trimarchi <
[hidden email]
> wrote:

Hi all

1   __libc_do_syscall                         libc-do-syscall.S
            48   0xb4f10054
2   __lll_lock_wait                           lowlevellock.c
            46   0xb4f0de42
3   __GI___pthread_mutex_lock                 pthread_mutex_lock.c
            113  0xb4f088ac
4   g_rec_mutex_lock                          gthread-posix.c
            308  0xb4b87120
5   gst_pad_stop_task                         gstpad.c
            6301 0xaddf1d68
6   gst_mpp_video_dec_sink_event              gstmppvideodec.c
            786  0xac00e816
7   gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
8   gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
9   gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
10  gst_base_transform_sink_eventfunc         gstbasetransform.c
            1910 0xadeaed82
11  gst_capsfilter_sink_event                 gstevent.h
            436  0xad5547e2
12  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
13  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
14  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
15  gst_base_parse_sink_event_default         gstbaseparse.c
            1466 0xade96b6a
16  gst_h264_parse_event                      gsth264parse.c
            2905 0xac0752d8
17  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
18  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
19  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
20  gst_multi_queue_sink_event                gstmultiqueue.c
            2274 0xad56cb50
21  gst_pad_send_event_unchecked              gstpad.c
            5760 0xadde88d8
22  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
23  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
24  gst_qtdemux_push_event                    qtdemux.c
            1007 0xac98f082
25  gst_qtdemux_do_seek                       qtdemux.c
            1659 0xac99efca
26  gst_qtdemux_handle_src_event              qtdemux.c
            1791 0xac99efca
27  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
28  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
29  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
30  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
31  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
32  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
33  gst_base_parse_handle_seek                gstevent.h
            436  0xade92c4e
34  gst_base_parse_src_event_default          gstbaseparse.c
            1635 0xade92c4e
35  gst_h264_parse_src_event                  gsth264parse.c
            2942 0xac079b50
36  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
37  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
38  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
39  gst_base_transform_src_eventfunc          gstbasetransform.c
            1962 0xadeaf226
40  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
41  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
42  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
43  gst_video_decoder_src_event_default       gstvideodecoder.c
            1494 0xad7b9ba6
44  gst_pad_send_event_unchecked              gstpad.c
            5761 0xadde8aec
45  gst_pad_push_event_unchecked              gstpad.c
            5406 0xadde8fa6
46  gst_pad_push_event                        gstpad.c
            5543 0xaddf0cbc
47  event_forward_func                        gstevent.h
            436  0xaddf0f7e

Need some help/idea how debug decoder deadlock on seek on video decoding.

Michael


--
Michael Nazzareno Trimarchi
Amarula Solutions BV
COO Co-Founder
Cruquiuskade 47 Amsterdam 1018 AM NL
T. +31(0)851119172
M. +39(0)3479132170
[`as] 
https://www.amarulasolutions.com

_______________________________________________
gstreamer-devel mailing list
[hidden email]

https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]

https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel




--
Michael Nazzareno Trimarchi
Amarula Solutions BV
COO Co-Founder
Cruquiuskade 47 Amsterdam 1018 AM NL
T. +31(0)851119172
M. +39(0)3479132170
[`as] 
https://www.amarulasolutions.com




-- 
Olivier Crête


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

Re: Decoding deadlock hint during seek

Michael Nazzareno Trimarchi
Hi Olivier

I think that there are two thread. One is the mainapplication and one
is the decoder.
sink_event come from the main application but the decoding is on another thread.

static gboolean
gst_mpp_video_dec_sink_event (GstVideoDecoder * decoder, GstEvent * event)
{
  GstMppVideoDec *self = GST_MPP_VIDEO_DEC (decoder);
  gboolean ret;

  switch (GST_EVENT_TYPE (event)) {
    case GST_EVENT_FLUSH_START:
      GST_DEBUG_OBJECT (self, "flush start");
      gst_mpp_video_dec_unlock (self);
      break;
    default:
      break;
  }

  ret = GST_VIDEO_DECODER_CLASS (parent_class)->sink_event (decoder, event);

  switch (GST_EVENT_TYPE (event)) {
    case GST_EVENT_FLUSH_START:
      gst_pad_stop_task (decoder->srcpad);

If the decoding thread is working and we are in FLUSH_START I don't
need to stop here the the decoder because should be stop later
int the flash but in gst_v4l2_video_dec_sink_event, we do similar
things but forcing maybe before to unlock the pad.

Michael


      GST_DEBUG_OBJECT (self, "flush done");
      break;
    default:
      break;
  }

  return ret;
}

On Thu, Jul 16, 2020 at 8:16 PM Olivier Crête
<[hidden email]> wrote:

>
> Hi,
>
> On Thu, 2020-07-16 at 20:01 +0200, Michael Nazzareno Trimarchi wrote:
>
> From the stacktrace look like that I'm here
>
>
> GST_PAD_STREAM_LOCK (pad); <----- pad is already locked
>
> GST_PAD_STREAM_UNLOCK (pad);
>
>
> Can someone explain me this code?
>
>
> This pattern is used to ensure that the pad lock has been released by other code before proceding further. Normally after stopping a task. So if it stops there, you want to look at the other thread holding the lock and find out why it's not stopping, there is probably somethign blocking downstream.
>
> Olivier
>
>
> On Thu, Jul 16, 2020 at 7:51 PM Michael Nazzareno Trimarchi
>
> <
>
> [hidden email]
>
> > wrote:
>
>
> Hi
>
>
> This is more straight forward and happen using QTMultimedia and seek on mpp
>
>
> Michael
>
>
> On Thu, Jul 16, 2020 at 7:23 PM David Ing <
>
> [hidden email]
>
> > wrote:
>
>
> In the past, I have encountered deadlocks when a part of my pipeline has a demuxer or a tee, or basically some kind of element which "splits" a single stream into multiple streams.  The outputs (source pads) of all such elements should always be attached to some kind of queue because a queue is a thread boundary.
>
>
> So I guess step 1 is to analyze your pipeline and make sure you have queues in the right places.
>
>
> If you are still stuck then sometimes you can add more queues into random spots in your pipeline to see if that fixes the problem.
>
>
>
> On Thu, Jul 16, 2020 at 7:16 AM Michael Nazzareno Trimarchi <
>
> [hidden email]
>
> > wrote:
>
>
> Hi all
>
>
> 1   __libc_do_syscall                         libc-do-syscall.S
>
>             48   0xb4f10054
>
> 2   __lll_lock_wait                           lowlevellock.c
>
>             46   0xb4f0de42
>
> 3   __GI___pthread_mutex_lock                 pthread_mutex_lock.c
>
>             113  0xb4f088ac
>
> 4   g_rec_mutex_lock                          gthread-posix.c
>
>             308  0xb4b87120
>
> 5   gst_pad_stop_task                         gstpad.c
>
>             6301 0xaddf1d68
>
> 6   gst_mpp_video_dec_sink_event              gstmppvideodec.c
>
>             786  0xac00e816
>
> 7   gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 8   gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 9   gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 10  gst_base_transform_sink_eventfunc         gstbasetransform.c
>
>             1910 0xadeaed82
>
> 11  gst_capsfilter_sink_event                 gstevent.h
>
>             436  0xad5547e2
>
> 12  gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 13  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 14  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 15  gst_base_parse_sink_event_default         gstbaseparse.c
>
>             1466 0xade96b6a
>
> 16  gst_h264_parse_event                      gsth264parse.c
>
>             2905 0xac0752d8
>
> 17  gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 18  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 19  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 20  gst_multi_queue_sink_event                gstmultiqueue.c
>
>             2274 0xad56cb50
>
> 21  gst_pad_send_event_unchecked              gstpad.c
>
>             5760 0xadde88d8
>
> 22  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 23  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 24  gst_qtdemux_push_event                    qtdemux.c
>
>             1007 0xac98f082
>
> 25  gst_qtdemux_do_seek                       qtdemux.c
>
>             1659 0xac99efca
>
> 26  gst_qtdemux_handle_src_event              qtdemux.c
>
>             1791 0xac99efca
>
> 27  gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 28  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 29  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 30  gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 31  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 32  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 33  gst_base_parse_handle_seek                gstevent.h
>
>             436  0xade92c4e
>
> 34  gst_base_parse_src_event_default          gstbaseparse.c
>
>             1635 0xade92c4e
>
> 35  gst_h264_parse_src_event                  gsth264parse.c
>
>             2942 0xac079b50
>
> 36  gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 37  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 38  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 39  gst_base_transform_src_eventfunc          gstbasetransform.c
>
>             1962 0xadeaf226
>
> 40  gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 41  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 42  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 43  gst_video_decoder_src_event_default       gstvideodecoder.c
>
>             1494 0xad7b9ba6
>
> 44  gst_pad_send_event_unchecked              gstpad.c
>
>             5761 0xadde8aec
>
> 45  gst_pad_push_event_unchecked              gstpad.c
>
>             5406 0xadde8fa6
>
> 46  gst_pad_push_event                        gstpad.c
>
>             5543 0xaddf0cbc
>
> 47  event_forward_func                        gstevent.h
>
>             436  0xaddf0f7e
>
>
> Need some help/idea how debug decoder deadlock on seek on video decoding.
>
>
> Michael
>
>
>
> --
>
> Michael Nazzareno Trimarchi
>
> Amarula Solutions BV
>
> COO Co-Founder
>
> Cruquiuskade 47 Amsterdam 1018 AM NL
>
> T. +31(0)851119172
>
> M. +39(0)3479132170
>
> [`as]
>
> https://www.amarulasolutions.com
>
>
> _______________________________________________
>
> gstreamer-devel mailing list
>
> [hidden email]
>
>
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> _______________________________________________
>
> gstreamer-devel mailing list
>
> [hidden email]
>
>
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
>
>
> --
>
> Michael Nazzareno Trimarchi
>
> Amarula Solutions BV
>
> COO Co-Founder
>
> Cruquiuskade 47 Amsterdam 1018 AM NL
>
> T. +31(0)851119172
>
> M. +39(0)3479132170
>
> [`as]
>
> https://www.amarulasolutions.com
>
>
>
>
>
> --
>
> Olivier Crête
> [hidden email]
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



--
Michael Nazzareno Trimarchi
Amarula Solutions BV
COO Co-Founder
Cruquiuskade 47 Amsterdam 1018 AM NL
T. +31(0)851119172
M. +39(0)3479132170
[`as] https://www.amarulasolutions.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel