jimheath

Re: GStreamer crashing on i.MX6 (Boundary Devices Nitrogen6x)

Discussion created by jimheath on Feb 28, 2013
Branched from an earlier discussion

Hi Leo,

Thanks for your response, it's good to hear a specialist will be helping me out.

 

I think I can offer some more information on this problem. I've been trying everything I can think of to determine the root cause of the problem. From some tests I've been running yesterday and today, I believe the segmentation faults are linked to me performing a seek operation on the transport stream video when using the aiurdemux element. I'm using the GStreamer C function: gst_element_seek_simple. This is an intermittent problem so it sometimes happens upon playing the first video or 1 to 10+ minutes of looping through the various videos. If I disable my application from performing a seek and always start the video from the beginning, I'm not seeing it crash.

 

If I use the tsdemux element from the gst-bad-plugins, I can perform seeks on the same set of videos without any segmentation faults. I've run this test for over an hour without any problems. I'm using a little test application written using Qt 4.8.3 that just continuously cycles through a playlist of transport stream videos. It selects a random position in the video to begin playing and plays it for 20 seconds then moves on to the next video.

 

I would use the tsdemux element because it handles the large videos (+2GB files) but for some videos I get a generic "stream error" message and it won't play it. But these videos that won't play with tsdemux WILL play with aiurdemux as long as they are under 2GB. All videos have the same encoding (h.264) so I'm not sure why tsdemux can't deal with them.

 

With both transport stream demuxers, I still see kernel error messages every once in awhile which I attached in case these were lost from my original posts. These don't stop the execution of the program, in fact, once the program moves on to the next video, video playback continues and everything appears normal.

 

Here's a backtrace on the core dump when using aiurdemux:

#0  0x2bbd17f4 in memcpy () from /home/jim/timesys/nitrogen6x/toolchain/lib/libc.so.6

#1  0x2c26d340 in MPEG2FindH264Frames ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

#2  0x2c2607d4 in MPEG2FastFindMPEG2Frames ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

#3  0x2c260b8c in Mpeg2ScanVideoFrame ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

#4  0x2c260f10 in MPEG2_ParsePES_Scan ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

#5  0x2c261740 in Mpeg2ParserScan ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

#6  0x2c262118 in Mpeg2SeekStream ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

#7  0x2c25b9a4 in Mpeg2Seek ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

#8  0x2bfc2bb4 in gst_aiurdemux_perform_seek ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/gstreamer-0.10/libmfw_gst_aiur_demux.so

#9  0x2bfca2c4 in gst_aiurdemux_handle_src_event ()

   from /home/jim/timesys/nitrogen6x/toolchain/usr/lib/gstreamer-0.10/libmfw_gst_aiur_demux.so



Thanks again,

Jim

Original Attachment has been moved to: kernel-errors.txt.zip

Outcomes