SEGV while attempting to play DASH

*nix specific usage questions
thoth
New Cone
New Cone
Posts: 5
Joined: 13 Apr 2010 21:35

SEGV while attempting to play DASH

Postby thoth » 13 Dec 2011 17:51

I'm in the process of adding DASH manifest generation to an existing HLS segmentation engine.

I decided to see what VLC would do given one of our MPDs. VLC SEGV'd.

Code: Select all

(gdb) where #0 0x00007ffff44f7d8e in std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_begin (this=0x8) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.5/include/g++-v4/bits/stl_tree.h:488 #1 0x00007ffff44f90b8 in std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::find (this=0x8, __k=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.5/include/g++-v4/bits/stl_tree.h:1434 #2 0x00007ffff44f9035 in std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::find (this=0x8, __x=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.5/include/g++-v4/bits/stl_map.h:674 #3 0x00007ffff44fdf67 in dash::mpd::MPD::isLive (this=0x0) at mpd/MPD.cpp:99 #4 0x00007ffff45067ca in Open (p_obj=0x7fffe8005fb8) at dash.cpp:109 #5 0x00007ffff79501e4 in generic_start (func=0x7ffff4506614, ap=0x7fffed649b00) at modules/modules.c:413 #6 0x00007ffff794fe9a in vlc_module_load (p_this=0x7fffe8005fb8, psz_capability=0x7ffff7990248 "stream_filter", psz_name=0x0, b_strict=true, probe=0x7ffff7950171 <generic_start>) at modules/modules.c:342 #7 0x00007ffff79502a3 in module_need (obj=0x7fffe8005fb8, cap=0x7ffff7990248 "stream_filter", name=0x0, strict=true) at modules/modules.c:428 #8 0x00007ffff791ee8f in stream_FilterNew (p_source=0x7fffe800b7a8, psz_stream_filter=0x0) at input/stream_filter.c:62 #9 0x00007ffff791eef2 in stream_FilterChainNew (p_source=0x7fffe800b7a8, psz_chain=0x0, b_record=true) at input/stream_filter.c:82 #10 0x00007ffff79151ad in InputSourceInit (p_input=0x7afce8, in=0x6c3bb0, psz_mrl=0x6b6a60 "http://localhost:4046/live/Kung%20Fu%20Panda/index.mpd", psz_forced_demux=0x0, b_in_can_fail=false) at input/input.c:2540 #11 0x00007ffff791160e in Init (p_input=0x7afce8) at input/input.c:1240 #12 0x00007ffff790f75d in Run (obj=0x7afce8) at input/input.c:542 #13 0x00007ffff6fd2c1a in start_thread () from /lib64/libpthread.so.0 #14 0x00007ffff6b342cd in clone () from /lib64/libc.so.6 (gdb) up #4 0x00007ffff45067ca in Open (p_obj=0x7fffe8005fb8) at dash.cpp:109 109 p_sys->isLive = p_dashManager->getMpdManager()->getMPD()->isLive(); (gdb) print p_dashManager->mpdManager ->getMPD() $9 = (const dash::mpd::MPD *) 0x0

Code: Select all

$ wget -q -O - http://localhost:4046/live/Kung%20Fu%20Panda/index.mpd <?xml version="1.0" encoding="UTF-8"?> <MPD xmlns="urn:mpeg:mpegB:schema:DASH:MPD:DIS2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="urn:mpeg:mpegB:schema:DASH:MPD:DIS2011" profiles="urn:MPEG:MPEGB:profile:dash:full:2011" minBufferTime="PT10.0S"> <Period> <Group mimeType="video/mp2t"> <SegmentInfo duration="PT10.0S"> <SegmentTimeline> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> <S d="10" /> </SegmentTimeline> <Url sourceURL="frag00094.mpeg" /> <Url sourceURL="frag00095.mpeg" /> <Url sourceURL="frag00096.mpeg" /> <Url sourceURL="frag00097.mpeg" /> <Url sourceURL="frag00098.mpeg" /> <Url sourceURL="frag00099.mpeg" /> <Url sourceURL="frag00100.mpeg" /> <Url sourceURL="frag00101.mpeg" /> <Url sourceURL="frag00102.mpeg" /> <Url sourceURL="frag00103.mpeg" /> <Url sourceURL="frag00104.mpeg" /> <Url sourceURL="frag00105.mpeg" /> </SegmentInfo> </Group> </Period> </MPD>
I've seen other articles that VLC's DASH support did not handle MPEG TS fragments, but based on the logs from the HTTP daemon VLC is blowing up before fetching any segments.

I am pretty sure the VLC application should never SEGV. Ideally it would give a diagnostic that tells you exactly what it doesn't like, but error checking code is often a low priority.

Jean-Baptiste Kempf
Site Administrator
Site Administrator
Posts: 37523
Joined: 22 Jul 2005 15:29
VLC version: 4.0.0-git
Operating System: Linux, Windows, Mac
Location: Cone, France
Contact:

Re: SEGV while attempting to play DASH

Postby Jean-Baptiste Kempf » 13 Dec 2011 23:27

0x00007ffff44fdf67 in dash::mpd::MPD::isLive (this=0x0) at mpd/MPD.cpp:99

0x0 here seems weird.
Jean-Baptiste Kempf
http://www.jbkempf.com/ - http://www.jbkempf.com/blog/category/Videolan
VLC media player developer, VideoLAN President and Sites administrator
If you want an answer to your question, just be specific and precise. Don't use Private Messages.

thoth
New Cone
New Cone
Posts: 5
Joined: 13 Apr 2010 21:35

Re: SEGV while attempting to play DASH

Postby thoth » 13 Dec 2011 23:30

0x0 here seems weird.
That's what led me to ask GDB to print out
p_dashManager->mpdManager ->getMPD()
in the statement
p_sys->isLive = p_dashManager->getMpdManager()->getMPD()->isLive();

It's pretty clear that's why (this) is 0.


Return to “VLC media player for Linux and friends Troubleshooting”

Who is online

Users browsing this forum: No registered users and 31 guests