Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deadlock in MpdBuilder causing packetization to stop after several hours #45

Closed
peyoh opened this issue Oct 26, 2015 · 19 comments
Closed
Assignees
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@peyoh
Copy link

peyoh commented Oct 26, 2015

Hello,
I'm using v1.2.0.
The command line is:

packager --udp_interface_address=172.18.0.10 'input=udp://239.101.2.1:1234,stream=audio,init_segment=/storage/web/dash/bnt1/bnt1_edash-audio.m4a,segment_template=/storage/web/dash/bnt1/bnt1_edash-audio-$Number$.m4a' 'input=udp://239.101.2.1:1234,stream=video,init_segment=/storage/web/dash/bnt1/bnt1_edash-video-1080.m4v,segment_template=/storage/web/dash/bnt1/bnt1_edash-video-1080-$Number$.m4v' 'input=udp://239.102.2.1:1234,stream=video,init_segment=/storage/web/dash/bnt1/bnt1_edash-video-720.m4v,segment_template=/storage/web/dash/bnt1/bnt1_edash-video-720-$Number$.m4v' 'input=udp://239.103.2.1:1234,stream=video,init_segment=/storage/web/dash/bnt1/bnt1_edash-video-576.m4v,segment_template=/storage/web/dash/bnt1/bnt1_edash-video-576-$Number$.m4v' --profile live --mpd_output /storage/web/dash/bnt1/bnt1.mpd -time_shift_buffer_depth 1800 -dump_stream_info

After several hours of operation, edash packager stops to fill the segments directory and .mpd file updates.
The three groups are still joined and tcpdump shows correct traffic to the system.
The last console output is:

[1026/105614:INFO:demuxer.cc(135)] Demuxer::Run() on file 'udp://239.101.2.1:1234'.
[1026/105614:INFO:demuxer.cc(135)] Demuxer::Run() on file 'udp://239.102.2.1:1234'.
[1026/105614:INFO:demuxer.cc(135)] Demuxer::Run() on file 'udp://239.103.2.1:1234'.
[1026/105614:WARNING:mpd_builder.cc(211)] Video info does not contain frame duration required for calculating framerate. @framerate is required for DASH IOP.
[1026/105614:WARNING:mpd_builder.cc(211)] Video info does not contain frame duration required for calculating framerate. @framerate is required for DASH IOP.
[1026/105615:WARNING:mpd_builder.cc(211)] Video info does not contain frame duration required for calculating framerate. @framerate is required for DASH IOP.

Any help how I can debug what's wrong? How I can increase the verbosity?

BRS/
Peyo

@kqyang
Copy link
Contributor

kqyang commented Oct 26, 2015

I suspect that somehow packager program was no longer able to receive from udp. I created a debug code at https://github.com/kqyang/edash-packager, which includes two changes:

  1. Added a 30 seconds timeout on udp recvfrom
  2. Added verbosity logging flag, which can be enabled through '--vmodule' flag: --vmodule=':'; does wild card matches on the module.

You can try with that code and see what happens. You could increase verbosity level with flag '--vmodule', e.g. --vmodule='*=5', the larger the number, the more loggings.

You could also use vlc to confirm whether the stream is still good: vlc udp://@239.101.2.1:1234 (remember to close packager program first).

@peyoh
Copy link
Author

peyoh commented Oct 27, 2015

Hello,
with this build, only 720 video profile (239.102.2.1:1234)is filled, but without mpd file.
I'm using ffmpeg.
Please note that with release 1.1, the issue cannot be reproduced. It works fine as expected.

So,
with vmodule=1,
the last debug lines are:
[1027/095148:VERBOSE1:ts_section_psi.cc(103)] Trailing bytes after a PSI section: 16 vs 183
[1027/095148:VERBOSE1:ts_section_psi.cc(103)] Trailing bytes after a PSI section: 32 vs 183
[1027/095148:VERBOSE1:mp2t_media_parser.cc(284)] RegisterPes: pes_pid=256 stream_type=1b
[1027/095148:VERBOSE1:mp2t_media_parser.cc(284)] RegisterPes: pes_pid=257 stream_type=f
[1027/095148:VERBOSE1:ts_section_psi.cc(103)] Trailing bytes after a PSI section: 16 vs 183
[1027/095148:VERBOSE1:ts_section_psi.cc(103)] Trailing bytes after a PSI section: 21 vs 183
[1027/095148:VERBOSE1:mp2t_media_parser.cc(284)] RegisterPes: pes_pid=256 stream_type=1b

With vmodule=5, the last lines before "hang" are:
[1027/095418:VERBOSE3:mp2t_media_parser.cc(381)] OnEmitSample: pid=256 size=51442 dts=942472800 pts=942476400
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE4:h264_parser.cc(433)] NALU type: 8 at: 0x255d9f7 size: 4 ref: 1
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE3:es_parser_h264.cc(214)] NALU: PPS
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE4:h264_parser.cc(412)] NALU found: size=9
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE4:h264_parser.cc(433)] NALU type: 6 at: 0x255d9ff size: 5 ref: 0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE3:es_parser_h264.cc(241)] NALU: 6
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE3:mp2t_media_parser.cc(403)] Mp2tMediaParser::EmitRemainingBuffers
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE4:h264_parser.cc(412)] NALU found: size=4906
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE4:h264_parser.cc(433)] NALU type: 1 at: 0x255da07 size: 4903 ref: 1
[1027/095418:VERBOSE3:mp2t_media_parser.cc(403)] Mp2tMediaParser::EmitRemainingBuffers
[1027/095418:VERBOSE3:es_parser_h264.cc(228)] NALU: slice IDR=0
[1027/095418:VERBOSE4:h264_parser.cc(327)] Could not find start code, end of stream?
[1027/095418:VERBOSE4:h264_parser.cc(405)] Could not find next NALU, bytes left in stream: 0
[1027/095418:VERBOSE3:es_parser_h264.cc(275)] Emit frame: stream_pos=6270636 size=4929
[1027/095418:VERBOSE3:mp2t_media_parser.cc(381)] OnEmitSample: pid=256 size=47009 dts=942472800 pts=942476400
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE5:mp2t_media_parser.cc(216)] Processing PID=256 start_unit=0
[1027/095418:VERBOSE3:mp2t_media_parser.cc(403)] Mp2tMediaParser::EmitRemainingBuffers
[1027/095418:VERBOSE3:mpd_builder.cc(1171)] MediaInfo missing field 'bandwidth'. Using estimated from segment size.
[1027/095418:VERBOSE2:xml_node.cc(140)] Passing node_.
[1027/095418:VERBOSE2:xml_node.cc(140)] Passing node_.
[1027/095418:VERBOSE2:xml_node.cc(140)] Passing node_.
[1027/095418:VERBOSE2:xml_node.cc(140)] Passing node_.

Please also note, that I'm able to see the incoming traffic with tcpdump on the interface and on parallel computer edash packager release 1.1 is still working.

BRS/
Peyo

@kqyang
Copy link
Contributor

kqyang commented Oct 27, 2015

Em... It is good to know that it works with v1.1.

I don't see anything interesting from the log. What happened after "the last debug lines"? Did packager program quit or still running but without any more logging?

Notice that the time difference between the two logs is only 3 minutes. So, you can reproduce the problem in just minutes? You mentioned 'ffmpeg'. Are you using 'ffmpeg' to reproduce it? Can you explain your duplication steps in more detail?

Thanks.

@peyoh
Copy link
Author

peyoh commented Oct 28, 2015

Hi,
after the last logs, the app is still running but without any future output - debug or files.
BTW, I've noticed that sometimes it stops after a couple of minutes.

FFmpeg config is quite simple.
One MPEG-TS multicast stream is separated in 3 different h264 resolution profiles and re-streamed in 3 different multicast groups. The 3 groups are handles by edash_packager with command line you can see in my first post.
The ffmpeg line is:
ffmpeg -v verbose -re -i 'udp://@239.100.2.1:1234?localaddr=10.0.4.36&fifo_size=100000&timeout=2&overrun_nonfatal=1' -filter_complex '[0:v]yadif,split=3[out1][out2][out3]' -map '[out1]' -vcodec libx264 -profile main -preset veryfast -s 720x576 -map 0:a -acodec aac -strict -2 -flush_packets 0 -f mpegts 'udp://239.101.2.1:1234?localaddr=172.17.0.10&pkt_size=1316&buffer_size=65536' -map '[out2]' -vcodec libx264 -profile main -preset veryfast -s 642x512 -flush_packets 0 -f mpegts 'udp://239.102.2.1:1234?localaddr=172.17.0.10&pkt_size=1316&buffer_size=65536' -map '[out3]' -vcodec libx264 -profile main -preset veryfast -s 480x384 -flush_packets 0 -f mpegts 'udp://239.103.2.1:1234?localaddr=172.17.0.10&pkt_size=1316&buffer_size=65536'

That's the setup.

BRS/
Peyo

@kqyang
Copy link
Contributor

kqyang commented Nov 7, 2015

I tried to duplicate the failure, but still not able to after running for days. Can you use gdb to attach to packager process to find out what it is doing, e.g. extract stack traces?

@dviano
Copy link

dviano commented Nov 11, 2015

Hi, I'm seeing this on my setup with a very recent build using docker. In my debugging efforts (and before finding this report) I've managed to generate a full strace (-f) of the packager while failing like this, the whole file is huge (~500M) but here I attach the last lines including the last open()+write()+close() in hope to help pin this down.

packager_strace_after_last_seg.txt (recvfrom data was edited out for size-sake)

The execve was:
(sensible data edited out)

21002 execve("/root/edash_packager/Release/packager", ["/root/edash_packager/Release/packager", "input=udp://127.0.0.1:3343,stream=audio,init_segment=a/live-audio-1447177556.mp4,segment_template=a/live-audio-1447177556-$Number$.mp4,bandwidth=140000", "input=udp://127.0.0.1:3343,stream=video,init_segment=0/live-video-1447177556.mp4,segment_template=0/live-video-1447177556-$Number$.mp4,bandwidth=2100000", "input=udp://127.0.0.1:3344,stream=video,init_segment=1/live-video-1447177556.mp4,segment_template=1/live-video-1447177556-$Number$.mp4,bandwidth=990000", "input=udp://127.0.0.1:3345,stream=video,init_segment=2/live-video-1447177556.mp4,segment_template=2/live-video-1447177556-$Number$.mp4,bandwidth=430000", "input=udp://127.0.0.1:3346,stream=video,init_segment=3/live-video-1447177556.mp4,segment_template=3/live-video-1447177556-$Number$.mp4,bandwidth=150000", "--enable_widevine_encryption", "--key_server_url", "xxx", "--content_id", "xxx", "--signer", "xxx", "--aes_signing_key", "xxx", "-aes_signing_iv", "xxx", "--segment_duration", "3", "--min_buffer_time", "30", "--suggested_presentation_delay", "15", "--time_shift_buffer_depth", "300", "--profile", "live", "--mpd_output", "live.mpd"], [/* 13 vars */]) = 0

Let me know if I can help any further.

@kqyang
Copy link
Contributor

kqyang commented Nov 11, 2015

Thanks for the report.

Can you try adding a new option "--io_cache_size=0" to see if it resolves the problem?

Also, use debug version which may reveal more information for debugging.

@dviano
Copy link

dviano commented Nov 12, 2015

Ok, so I've tried your fork, with and without "--io_cache_size=0", both with "--vmodule='*=5'", both Release version. Both hanged after a while with the following log:

[1112/115416:VERBOSE3:demuxer.cc(177)] Read 1692
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 1316
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 376
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 1692
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 1472
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 13380
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 752
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 564
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 1316
[1112/115417:VERBOSE3:demuxer.cc(177)] Read 940

I'll try the debug version of your fork now, and maybe attach a gdb and try to get a trace.

Let me know if I can help any further.

@dviano
Copy link

dviano commented Nov 12, 2015

Hi again, I've tried the debug version, and it fails a lot quickier, but looks like the same error as it just hangs there, attached a gdb while it was hanging there:

(gdb) info threads 
  Id   Target Id         Frame 
  6    Thread 0x7f58825bb700 (LWP 1063) "KeyProductionTh" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  5    Thread 0x7f5880f8d700 (LWP 2421) "RemuxJob/2421" __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
  4    Thread 0x7f587bfff700 (LWP 2422) "RemuxJob/2422" __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
  3    Thread 0x7f587b7fe700 (LWP 2423) "RemuxJob/2423" __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
  2    Thread 0x7f587affd700 (LWP 2424) "RemuxJob/2424" __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
* 1    Thread 0x7f58839bb740 (LWP 1062) "packager" 0x00007f588296e4db in pthread_join (threadid=140018097641216, thread_return=0x0) at pthread_join.c:92

also bt of a RemuxJob:

(gdb) thread 5
[Switching to thread 5 (Thread 0x7f5880f8d700 (LWP 2421))]
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
135     ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: No such file or directory.
(gdb) bt
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f588296f4b9 in _L_lock_909 () from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f588296f2e0 in __GI___pthread_mutex_lock (mutex=0x1b10378) at ../nptl/pthread_mutex_lock.c:79
#3  0x00000000006b27fb in base::internal::LockImpl::Lock (this=0x1b10378) at ../../packager/base/synchronization/lock_impl_posix.cc:45
#4  0x000000000040bd43 in base::Lock::Acquire (this=0x1b10370) at ../../packager/base/synchronization/lock.h:42
#5  0x000000000042e5d3 in base::AutoLock::AutoLock (this=0x7f5880f89268, lock=...) at ../../packager/base/synchronization/lock.h:99
#6  0x00000000004d47cd in edash_packager::SimpleMpdNotifier::NotifySampleDuration (this=0x1b10350, container_id=2, sample_duration=3600)
    at ../../packager/mpd/base/simple_mpd_notifier.cc:76
#7  0x000000000041df43 in edash_packager::media::MpdNotifyMuxerListener::OnSampleDurationReady (this=0x1b21560, sample_duration=3600)
    at ../../packager/media/event/mpd_notify_muxer_listener.cc:91
#8  0x000000000043fa8f in edash_packager::media::mp4::MultiSegmentSegmenter::WriteSegment (this=0x7f58740853e0)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:188
#9  0x000000000043edcc in edash_packager::media::mp4::MultiSegmentSegmenter::DoFinalizeSegment (this=0x7f58740853e0)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:90
#10 0x0000000000445a5c in edash_packager::media::mp4::Segmenter::FinalizeSegment (this=0x7f58740853e0) at ../../packager/media/formats/mp4/segmenter.cc:355
#11 0x0000000000444e08 in edash_packager::media::mp4::Segmenter::FinalizeFragment (this=0x7f58740853e0, finalize_segment=true, fragmenter=0x7f5874085220)
    at ../../packager/media/formats/mp4/segmenter.cc:422
#12 0x0000000000445503 in edash_packager::media::mp4::Segmenter::AddSample (this=0x7f58740853e0, stream=0x1b1efb0, sample=...)
    at ../../packager/media/formats/mp4/segmenter.cc:303
#13 0x000000000043096d in edash_packager::media::mp4::MP4Muxer::DoAddSample (this=0x1b21480, stream=0x1b1efb0, sample=...)
    at ../../packager/media/formats/mp4/mp4_muxer.cc:133
#14 0x0000000000647217 in edash_packager::media::Muxer::AddSample (this=0x1b21480, stream=0x1b1efb0, sample=...) at ../../packager/media/base/muxer.cc:110
#15 0x00000000006434b7 in edash_packager::media::MediaStream::PushSample (this=0x1b1efb0, sample=...) at ../../packager/media/base/media_stream.cc:48
#16 0x00000000006389e6 in edash_packager::media::Demuxer::NewSampleEvent (this=0x1b116c0, track_id=256, sample=...) at ../../packager/media/base/demuxer.cc:126
#17 0x000000000063b7b6 in base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run (this=0x7f5880f8b500, object=0x1b116c0, args=..., args=...) at ../../packager/base/bind_internal.h:176
#18 0x000000000063b6e9 in base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >::MakeItSo (runnable=..., args=..., args=..., args=...) at ../../packager/base/bind_internal.h:286
#19 0x000000000063b682 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, bool (edash_packager::media::Demuxer*, unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >, bool (unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(base::internal::BindStateBase*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) (base=0x1b0e640, unbound_args=..., unbound_args=...) at ../../packager/base/bind_internal.h:343
#20 0x00000000009d113b in base::Callback<bool (unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) const (this=0x1b11198, args=..., args=...) at ../../packager/base/callback.h:396
#21 0x00000000009ccf37 in edash_packager::media::mp2t::Mp2tMediaParser::EmitRemainingSamples (this=0x1b11180) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:416
#22 0x00000000009cd9e5 in edash_packager::media::mp2t::Mp2tMediaParser::Parse (this=0x1b11180, buf=0x7f5881591010 "GA\001=\001@", size=1472)
    at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:250
#23 0x0000000000638f5e in edash_packager::media::Demuxer::Parse (this=0x1b116c0) at ../../packager/media/base/demuxer.cc:185
#24 0x0000000000639290 in edash_packager::media::Demuxer::Run (this=0x1b116c0) at ../../packager/media/base/demuxer.cc:146
#25 0x000000000040f844 in edash_packager::media::RemuxJob::Run (this=0x1b1b320) at ../../packager/app/packager_main.cc:108
---Type <return> to continue, or q <return> to quit---
#26 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x1b1b320) at ../../packager/base/threading/simple_thread.cc:66
#27 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7ffe3d367c30) at ../../packager/base/threading/platform_thread_posix.cc:74
#28 0x00007f588296d0a4 in start_thread (arg=0x7f5880f8d700) at pthread_create.c:309
#29 0x00007f58826a204d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

and bt of the KeyProductionThread:

(gdb) thread 6
[Switching to thread 6 (Thread 0x7f58825bb700 (LWP 1063))]
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
185     ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: No such file or directory.
(gdb) bt
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00000000006b17a5 in base::ConditionVariable::Wait (this=0x7f58825baa98) at ../../packager/base/synchronization/condition_variable_posix.cc:54
#2  0x00000000006b319e in base::WaitableEvent::TimedWait (this=0x1b0edd8, max_time=...) at ../../packager/base/synchronization/waitable_event_posix.cc:214
#3  0x00000000006b2e06 in base::WaitableEvent::Wait (this=0x1b0edd8) at ../../packager/base/synchronization/waitable_event_posix.cc:154
#4  0x000000000064d385 in edash_packager::media::WidevineKeySource::FetchKeysTask (this=0x1b0ecc0) at ../../packager/media/base/widevine_key_source.cc:282
#5  0x0000000000657139 in base::internal::RunnableAdapter<void (edash_packager::media::WidevineKeySource::*)()>::Run (this=0x7f58825bad90, object=0x1b0ecc0)
    at ../../packager/base/bind_internal.h:176
#6  0x000000000065707c in base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::WidevineKeySource::*)()>, base::internal::TypeList<edash_packager::media::WidevineKeySource*> >::MakeItSo (runnable=..., args=0x1b0ecc0) at ../../packager/base/bind_internal.h:293
#7  0x0000000000657048 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<void (edash_packager::media::WidevineKeySource::*)()>, void (edash_packager::media::WidevineKeySource*), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::WidevineKeySource> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::WidevineKeySource> > >, base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::WidevineKeySource::*)()>, base::internal::TypeList<edash_packager::media::WidevineKeySource*> >, void ()>::Run(base::internal::BindStateBase*) (base=0x1b10140) at ../../packager/base/bind_internal.h:343
#8  0x0000000000637c3e in base::Callback<void ()>::Run() const (this=0x1b0ed18) at ../../packager/base/callback.h:396
#9  0x0000000000637bd9 in edash_packager::media::ClosureThread::Run (this=0x1b0ecd0) at ../../packager/media/base/closure_thread.cc:22
#10 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x1b0ecd0) at ../../packager/base/threading/simple_thread.cc:66
#11 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7ffe3d367870) at ../../packager/base/threading/platform_thread_posix.cc:74
#12 0x00007f588296d0a4 in start_thread (arg=0x7f58825bb700) at pthread_create.c:309
#13 0x00007f58826a204d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Again, let me know if there's anything else I can do to help nail this one.

@kqyang
Copy link
Contributor

kqyang commented Nov 12, 2015

Thanks for the traces. Can you get the back trace for all threads?

@dviano
Copy link

dviano commented Nov 12, 2015

Sure (kept it running just in case):

(gdb) thread 1
[Switching to thread 1 (Thread 0x7f58839bb740 (LWP 1062))]
#0  0x00007f588296e4db in pthread_join (threadid=140018097641216, thread_return=0x0) at pthread_join.c:92
92      pthread_join.c: No such file or directory.
(gdb) bt
#0  0x00007f588296e4db in pthread_join (threadid=140018097641216, thread_return=0x0) at pthread_join.c:92
#1  0x00000000006c2737 in base::PlatformThread::Join (thread_handle=...) at ../../packager/base/threading/platform_thread_posix.cc:221
#2  0x00000000006c375b in base::SimpleThread::Join (this=0x1b1b320) at ../../packager/base/threading/simple_thread.cc:47
#3  0x000000000040ceae in edash_packager::media::RunRemuxJobs (remux_jobs=std::__debug::vector of length 4, capacity 4 = {...}) at ../../packager/app/packager_main.cc:236
#4  0x000000000040d55f in edash_packager::media::RunPackager (stream_descriptors=std::__debug::multiset with 5 elements = {...}) at ../../packager/app/packager_main.cc:305
#5  0x000000000040d9ea in edash_packager::media::PackagerMain (argc=6, argv=0x7ffe3d3690e0) at ../../packager/app/packager_main.cc:339
#6  0x000000000040da82 in main (argc=31, argv=0x7ffe3d369018) at ../../packager/app/packager_main.cc:346
(gdb) thread 2
[Switching to thread 2 (Thread 0x7f587affd700 (LWP 2424))]
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
135     ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: No such file or directory.
(gdb) bt
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f588296f4b9 in _L_lock_909 () from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f588296f2e0 in __GI___pthread_mutex_lock (mutex=0x1b10378) at ../nptl/pthread_mutex_lock.c:79
#3  0x00000000006b27fb in base::internal::LockImpl::Lock (this=0x1b10378) at ../../packager/base/synchronization/lock_impl_posix.cc:45
#4  0x000000000040bd43 in base::Lock::Acquire (this=0x1b10370) at ../../packager/base/synchronization/lock.h:42
#5  0x000000000042e5d3 in base::AutoLock::AutoLock (this=0x7f587aff9268, lock=...) at ../../packager/base/synchronization/lock.h:99
#6  0x00000000004d47cd in edash_packager::SimpleMpdNotifier::NotifySampleDuration (this=0x1b10350, container_id=4, sample_duration=3600)
    at ../../packager/mpd/base/simple_mpd_notifier.cc:76
#7  0x000000000041df43 in edash_packager::media::MpdNotifyMuxerListener::OnSampleDurationReady (this=0x1c18a20, sample_duration=3600)
    at ../../packager/media/event/mpd_notify_muxer_listener.cc:91
#8  0x000000000043fa8f in edash_packager::media::mp4::MultiSegmentSegmenter::WriteSegment (this=0x7f586c002660)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:188
#9  0x000000000043edcc in edash_packager::media::mp4::MultiSegmentSegmenter::DoFinalizeSegment (this=0x7f586c002660)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:90
#10 0x0000000000445a5c in edash_packager::media::mp4::Segmenter::FinalizeSegment (this=0x7f586c002660) at ../../packager/media/formats/mp4/segmenter.cc:355
#11 0x0000000000444e08 in edash_packager::media::mp4::Segmenter::FinalizeFragment (this=0x7f586c002660, finalize_segment=true, fragmenter=0x7f586c0430e0)
    at ../../packager/media/formats/mp4/segmenter.cc:422
#12 0x0000000000445503 in edash_packager::media::mp4::Segmenter::AddSample (this=0x7f586c002660, stream=0x1c55e60, sample=...)
    at ../../packager/media/formats/mp4/segmenter.cc:303
#13 0x000000000043096d in edash_packager::media::mp4::MP4Muxer::DoAddSample (this=0x1c2bd80, stream=0x1c55e60, sample=...)
    at ../../packager/media/formats/mp4/mp4_muxer.cc:133
#14 0x0000000000647217 in edash_packager::media::Muxer::AddSample (this=0x1c2bd80, stream=0x1c55e60, sample=...) at ../../packager/media/base/muxer.cc:110
#15 0x00000000006434b7 in edash_packager::media::MediaStream::PushSample (this=0x1c55e60, sample=...) at ../../packager/media/base/media_stream.cc:48
#16 0x00000000006389e6 in edash_packager::media::Demuxer::NewSampleEvent (this=0x1bc6740, track_id=256, sample=...) at ../../packager/media/base/demuxer.cc:126
#17 0x000000000063b7b6 in base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run (this=0x7f587affb500, object=0x1bc6740, args=..., args=...) at ../../packager/base/bind_internal.h:176
#18 0x000000000063b6e9 in base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >::MakeItSo (runnable=..., args=..., args=..., args=...) at ../../packager/base/bind_internal.h:286
#19 0x000000000063b682 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, bool (edash_packager::media::Demuxer*, unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >, bool (unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(base::internal::BindStateBase*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) (base=0x1bc9b00, unbound_args=..., unbound_args=...) at ../../packager/base/bind_internal.h:343
#20 0x00000000009d113b in base::Callback<bool (unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) const (this=0x1bc9a68, args=..., args=...) at ../../packager/base/callback.h:396
#21 0x00000000009ccf37 in edash_packager::media::mp2t::Mp2tMediaParser::EmitRemainingSamples (this=0x1bc9a50) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:416
#22 0x00000000009cd9e5 in edash_packager::media::mp2t::Mp2tMediaParser::Parse (this=0x1bc9a50, buf=0x7f5880f8e010 "GA\001\061\001@", size=1128)
    at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:250
#23 0x0000000000638f5e in edash_packager::media::Demuxer::Parse (this=0x1bc6740) at ../../packager/media/base/demuxer.cc:185
#24 0x0000000000639290 in edash_packager::media::Demuxer::Run (this=0x1bc6740) at ../../packager/media/base/demuxer.cc:146
#25 0x000000000040f844 in edash_packager::media::RemuxJob::Run (this=0x1c60fb0) at ../../packager/app/packager_main.cc:108
---Type <return> to continue, or q <return> to quit---
#26 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x1c60fb0) at ../../packager/base/threading/simple_thread.cc:66
#27 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7ffe3d367c30) at ../../packager/base/threading/platform_thread_posix.cc:74
#28 0x00007f588296d0a4 in start_thread (arg=0x7f587affd700) at pthread_create.c:309
#29 0x00007f58826a204d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) thread 3
[Switching to thread 3 (Thread 0x7f587b7fe700 (LWP 2423))]
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
135     in ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
(gdb) bt
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f588296f4b9 in _L_lock_909 () from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f588296f2e0 in __GI___pthread_mutex_lock (mutex=0x7f58700443c8) at ../nptl/pthread_mutex_lock.c:79
#3  0x00000000006b27fb in base::internal::LockImpl::Lock (this=0x7f58700443c8) at ../../packager/base/synchronization/lock_impl_posix.cc:45
#4  0x000000000040bd43 in base::Lock::Acquire (this=0x7f58700443c0) at ../../packager/base/synchronization/lock.h:42
#5  0x000000000042e5d3 in base::AutoLock::AutoLock (this=0x7f587b7fa140, lock=...) at ../../packager/base/synchronization/lock.h:99
#6  0x00000000004b2003 in edash_packager::AdaptationSet::OnSetFrameRateForRepresentation (this=0x7f5870044360, frame_duration=3600, timescale=90000)
    at ../../packager/mpd/base/mpd_builder.cc:821
#7  0x00000000004b44db in edash_packager::(anonymous namespace)::RepresentationStateChangeListenerImpl::OnSetFrameRateForRepresentation (this=0x7f5868043c30, 
    frame_duration=3600, timescale=90000) at ../../packager/mpd/base/mpd_builder.cc:367
#8  0x00000000004b3934 in edash_packager::Representation::SetSampleDuration (this=0x7f5868043c50, sample_duration=3600) at ../../packager/mpd/base/mpd_builder.cc:1083
#9  0x00000000004d492e in edash_packager::SimpleMpdNotifier::NotifySampleDuration (this=0x1b10350, container_id=3, sample_duration=3600)
    at ../../packager/mpd/base/simple_mpd_notifier.cc:82
#10 0x000000000041df43 in edash_packager::media::MpdNotifyMuxerListener::OnSampleDurationReady (this=0x1bc7630, sample_duration=3600)
    at ../../packager/media/event/mpd_notify_muxer_listener.cc:91
#11 0x000000000043fa8f in edash_packager::media::mp4::MultiSegmentSegmenter::WriteSegment (this=0x7f5868002240)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:188
#12 0x000000000043edcc in edash_packager::media::mp4::MultiSegmentSegmenter::DoFinalizeSegment (this=0x7f5868002240)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:90
#13 0x0000000000445a5c in edash_packager::media::mp4::Segmenter::FinalizeSegment (this=0x7f5868002240) at ../../packager/media/formats/mp4/segmenter.cc:355
#14 0x0000000000444e08 in edash_packager::media::mp4::Segmenter::FinalizeFragment (this=0x7f5868002240, finalize_segment=true, fragmenter=0x7f5868043610)
    at ../../packager/media/formats/mp4/segmenter.cc:422
#15 0x0000000000445503 in edash_packager::media::mp4::Segmenter::AddSample (this=0x7f5868002240, stream=0x1c11dc0, sample=...)
    at ../../packager/media/formats/mp4/segmenter.cc:303
#16 0x000000000043096d in edash_packager::media::mp4::MP4Muxer::DoAddSample (this=0x1bc9970, stream=0x1c11dc0, sample=...)
    at ../../packager/media/formats/mp4/mp4_muxer.cc:133
#17 0x0000000000647217 in edash_packager::media::Muxer::AddSample (this=0x1bc9970, stream=0x1c11dc0, sample=...) at ../../packager/media/base/muxer.cc:110
#18 0x00000000006434b7 in edash_packager::media::MediaStream::PushSample (this=0x1c11dc0, sample=...) at ../../packager/media/base/media_stream.cc:48
#19 0x00000000006389e6 in edash_packager::media::Demuxer::NewSampleEvent (this=0x1bcf2e0, track_id=256, sample=...) at ../../packager/media/base/demuxer.cc:126
#20 0x000000000063b7b6 in base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run (this=0x7f587b7fc500, object=0x1bcf2e0, args=..., args=...) at ../../packager/base/bind_internal.h:176
#21 0x000000000063b6e9 in base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >::MakeItSo (runnable=..., args=..., args=..., args=...) at ../../packager/base/bind_internal.h:286
#22 0x000000000063b682 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, bool (edash_packager::media::Demuxer*, unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >, bool (unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(base::internal::BindStateBase*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) (base=0x1bc3820, unbound_args=..., unbound_args=...) at ../../packager/base/bind_internal.h:343
#23 0x00000000009d113b in base::Callback<bool (unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) const (this=0x1bc3788, args=..., args=...) at ../../packager/base/callback.h:396
#24 0x00000000009ccf37 in edash_packager::media::mp2t::Mp2tMediaParser::EmitRemainingSamples (this=0x1bc3770) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:416
---Type <return> to continue, or q <return> to quit---
#25 0x00000000009cd9e5 in edash_packager::media::mp2t::Mp2tMediaParser::Parse (this=0x1bc3770, buf=0x7f588118f010 "GA\001=\001@", size=1316)
    at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:250
#26 0x0000000000638f5e in edash_packager::media::Demuxer::Parse (this=0x1bcf2e0) at ../../packager/media/base/demuxer.cc:185
#27 0x0000000000639290 in edash_packager::media::Demuxer::Run (this=0x1bcf2e0) at ../../packager/media/base/demuxer.cc:146
#28 0x000000000040f844 in edash_packager::media::RemuxJob::Run (this=0x1bc9d30) at ../../packager/app/packager_main.cc:108
#29 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x1bc9d30) at ../../packager/base/threading/simple_thread.cc:66
#30 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7ffe3d367c30) at ../../packager/base/threading/platform_thread_posix.cc:74
#31 0x00007f588296d0a4 in start_thread (arg=0x7f587b7fe700) at pthread_create.c:309
#32 0x00007f58826a204d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) thread 4
[Switching to thread 4 (Thread 0x7f587bfff700 (LWP 2422))]
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
135     in ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
(gdb) bt
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f588296f4b9 in _L_lock_909 () from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f588296f2e0 in __GI___pthread_mutex_lock (mutex=0x7f5868043d40) at ../nptl/pthread_mutex_lock.c:79
#3  0x00000000006b27fb in base::internal::LockImpl::Lock (this=0x7f5868043d40) at ../../packager/base/synchronization/lock_impl_posix.cc:45
#4  0x000000000040bd43 in base::Lock::Acquire (this=0x7f5868043d38) at ../../packager/base/synchronization/lock.h:42
#5  0x000000000042e5d3 in base::AutoLock::AutoLock (this=0x7f587bff9b78, lock=...) at ../../packager/base/synchronization/lock.h:99
#6  0x00000000004b0ed7 in edash_packager::Representation::GetXml (this=0x7f5868043c50) at ../../packager/mpd/base/mpd_builder.cc:1096
#7  0x00000000004acf5f in edash_packager::AdaptationSet::GetXml (this=0x7f5870044360) at ../../packager/mpd/base/mpd_builder.cc:731
#8  0x00000000004ac718 in edash_packager::MpdBuilder::GenerateMpd (this=0x1b10e80) at ../../packager/mpd/base/mpd_builder.cc:448
#9  0x00000000004b5225 in edash_packager::MpdBuilder::WriteMpdToOutput<std::string> (this=0x1b10e80, output=0x7f587bffaf18) at ../../packager/mpd/base/mpd_builder.cc:419
#10 0x00000000004ac5d9 in edash_packager::MpdBuilder::ToString (this=0x1b10e80, output=0x7f587bffaf18) at ../../packager/mpd/base/mpd_builder.cc:413
#11 0x00000000004cb4e1 in edash_packager::WriteMpdToFile (output_path="live.mpd", mpd_builder=0x1b10e80) at ../../packager/mpd/base/mpd_notifier_util.cc:24
#12 0x00000000004d5090 in edash_packager::SimpleMpdNotifier::Flush (this=0x1b10350) at ../../packager/mpd/base/simple_mpd_notifier.cc:130
#13 0x000000000041e6db in edash_packager::media::MpdNotifyMuxerListener::OnNewSegment (this=0x1bcf0d0, start_time=3403087200, duration=270000, segment_file_size=363131)
    at ../../packager/media/event/mpd_notify_muxer_listener.cc:157
#14 0x000000000043fae1 in edash_packager::media::mp4::MultiSegmentSegmenter::WriteSegment (this=0x7f58700024a0)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:189
#15 0x000000000043edcc in edash_packager::media::mp4::MultiSegmentSegmenter::DoFinalizeSegment (this=0x7f58700024a0)
    at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:90
#16 0x0000000000445a5c in edash_packager::media::mp4::Segmenter::FinalizeSegment (this=0x7f58700024a0) at ../../packager/media/formats/mp4/segmenter.cc:355
#17 0x0000000000444e08 in edash_packager::media::mp4::Segmenter::FinalizeFragment (this=0x7f58700024a0, finalize_segment=true, fragmenter=0x7f5870043f50)
    at ../../packager/media/formats/mp4/segmenter.cc:422
#18 0x0000000000445503 in edash_packager::media::mp4::Segmenter::AddSample (this=0x7f58700024a0, stream=0x1bc2e70, sample=...)
    at ../../packager/media/formats/mp4/segmenter.cc:303
#19 0x000000000043096d in edash_packager::media::mp4::MP4Muxer::DoAddSample (this=0x1bd0740, stream=0x1bc2e70, sample=...)
    at ../../packager/media/formats/mp4/mp4_muxer.cc:133
#20 0x0000000000647217 in edash_packager::media::Muxer::AddSample (this=0x1bd0740, stream=0x1bc2e70, sample=...) at ../../packager/media/base/muxer.cc:110
#21 0x00000000006434b7 in edash_packager::media::MediaStream::PushSample (this=0x1bc2e70, sample=...) at ../../packager/media/base/media_stream.cc:48
#22 0x00000000006389e6 in edash_packager::media::Demuxer::NewSampleEvent (this=0x1b1d080, track_id=256, sample=...) at ../../packager/media/base/demuxer.cc:126
#23 0x000000000063b7b6 in base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run (this=0x7f587bffd500, object=0x1b1d080, args=..., args=...) at ../../packager/base/bind_internal.h:176
#24 0x000000000063b6e9 in base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >::MakeItSo (runnable=..., args=..., args=..., args=...) at ../../packager/base/bind_internal.h:286
#25 0x000000000063b682 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, bool (edash_packager::media::Demuxer*, unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >, bool (unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(base::internal::BindStateBase*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) (base=0x1b190f0, unbound_args=..., unbound_args=...) at ../../packager/base/bind_internal.h:343
#26 0x00000000009d113b in base::Callback<bool (unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) const (this=0x1b1b3d8, args=..., args=...) at ../../packager/base/callback.h:396
#27 0x00000000009ccf37 in edash_packager::media::mp2t::Mp2tMediaParser::EmitRemainingSamples (this=0x1b1b3c0) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:416
---Type <return> to continue, or q <return> to quit---
#28 0x00000000009cd9e5 in edash_packager::media::mp2t::Mp2tMediaParser::Parse (this=0x1b1b3c0, buf=0x7f5881390010 "GA\001=\001@", size=1472)
    at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:250
#29 0x0000000000638f5e in edash_packager::media::Demuxer::Parse (this=0x1b1d080) at ../../packager/media/base/demuxer.cc:185
#30 0x0000000000639290 in edash_packager::media::Demuxer::Run (this=0x1b1d080) at ../../packager/media/base/demuxer.cc:146
#31 0x000000000040f844 in edash_packager::media::RemuxJob::Run (this=0x1bd5ad0) at ../../packager/app/packager_main.cc:108
#32 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x1bd5ad0) at ../../packager/base/threading/simple_thread.cc:66
#33 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7ffe3d367c30) at ../../packager/base/threading/platform_thread_posix.cc:74
#34 0x00007f588296d0a4 in start_thread (arg=0x7f587bfff700) at pthread_create.c:309
#35 0x00007f58826a204d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

@kqyang
Copy link
Contributor

kqyang commented Nov 12, 2015

Cool, thanks for the detailed traces. The traces show that there is a dead lock in mpd generation.

Thread 2: waiting for SimpleMpdNotifier::Lock in NotifySampleDuration
Thread 3: hold lock SimpleMpdNotifier::Lock and Representation::Lock
waiting for AdaptationSet::Lock inside OnSetFrameRateForRepresentation
Thread 4: hold lock AdaptationSet::Lock
waiting for Representation::Lock inside GetXml

@rkuroiwa , can you take a look? Thanks.

@peyoh
Copy link
Author

peyoh commented Nov 13, 2015

Hello,
sorry for my late reply.
Here also my traces.

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0x00007fc7fa7d0f27 in pthread_join () from /lib64/libpthread.so.0
Missing separate debuginfos, use: debuginfo-install glibc-2.17-78.el7.x86_64 libgcc-4.8.3-9.el7.x86_64 libstdc++-4.8.3-9.el7.x86_64
(gdb) where
#0  0x00007fc7fa7d0f27 in pthread_join () from /lib64/libpthread.so.0
#1  0x00000000006c2737 in base::PlatformThread::Join (thread_handle=...) at ../../packager/base/threading/platform_thread_posix.cc:221
#2  0x00000000006c375b in base::SimpleThread::Join (this=0x2f4f550) at ../../packager/base/threading/simple_thread.cc:47
#3  0x000000000040ceae in edash_packager::media::RunRemuxJobs (remux_jobs=std::__debug::vector of length 3, capacity 4 = {...}) at ../../packager/app/packager_main.cc:236
Python Exception <type 'exceptions.IndexError'> list index out of range: 
#4  0x000000000040d55f in edash_packager::media::RunPackager (stream_descriptors=std::__debug::multiset with 4 elements) at ../../packager/app/packager_main.cc:305
#5  0x000000000040d9ea in edash_packager::media::PackagerMain (argc=5, argv=0x7fff131ee2d8) at ../../packager/app/packager_main.cc:339
#6  0x000000000040da82 in main (argc=13, argv=0x7fff131ee298) at ../../packager/app/packager_main.cc:346
(gdb) thread apply all bt

Thread 7 (Thread 0x7fc7f8003700 (LWP 6437)):
#0  0x00007fc7fa7d3705 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00000000006b17a5 in base::ConditionVariable::Wait (this=0x7fc7f8002068) at ../../packager/base/synchronization/condition_variable_posix.cc:54
#2  0x00000000006b319e in base::WaitableEvent::TimedWait (this=0x2f3cd68, max_time=...) at ../../packager/base/synchronization/waitable_event_posix.cc:214
#3  0x00000000006b2e06 in base::WaitableEvent::Wait (this=0x2f3cd68) at ../../packager/base/synchronization/waitable_event_posix.cc:154
#4  0x000000000042de4e in edash_packager::media::IoCache::Write (this=0x2f3cd30, buffer=0x7fc7f8004010, size=1316) at ../../packager/media/file/io_cache.cc:76
#5  0x0000000000429333 in edash_packager::media::ThreadedIoFile::RunInInputMode (this=0x2f3cd10) at ../../packager/media/file/threaded_io_file.cc:126
#6  0x000000000042b5f9 in base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>::Run (this=0x7fc7f8002d90, object=0x2f3cd10) at ../../packager/base/bind_internal.h:176
#7  0x000000000042b53c in base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, base::internal::TypeList<edash_packager::media::ThreadedIoFile*> >::MakeItSo (runnable=..., args=0x2f3cd10) at ../../packager/base/bind_internal.h:293
#8  0x000000000042b508 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, void (edash_packager::media::ThreadedIoFile*), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::ThreadedIoFile> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::ThreadedIoFile> > >, base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, base::internal::TypeList<edash_packager::media::ThreadedIoFile*> >, void ()>::Run(base::internal::BindStateBase*) (base=0x2f3fe50) at ../../packager/base/bind_internal.h:343
#9  0x0000000000637c3e in base::Callback<void ()>::Run() const (this=0x2f3ca98) at ../../packager/base/callback.h:396
#10 0x0000000000637bd9 in edash_packager::media::ClosureThread::Run (this=0x2f3ca50) at ../../packager/media/base/closure_thread.cc:22
#11 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x2f3ca50) at ../../packager/base/threading/simple_thread.cc:66
#12 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7fff131ebb60) at ../../packager/base/threading/platform_thread_posix.cc:74
#13 0x00007fc7fa7cfdf5 in start_thread () from /lib64/libpthread.so.0
#14 0x00007fc7fa4fd1ad in clone () from /lib64/libc.so.6

Thread 6 (Thread 0x7fc7f53ff700 (LWP 6459)):
#0  0x00007fc7fa7d3705 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00000000006b17a5 in base::ConditionVariable::Wait (this=0x7fc7f53fe068) at ../../packager/base/synchronization/condition_variable_posix.cc:54
#2  0x00000000006b319e in base::WaitableEvent::TimedWait (this=0x2f7dcf8, max_time=...) at ../../packager/base/synchronization/waitable_event_posix.cc:214
#3  0x00000000006b2e06 in base::WaitableEvent::Wait (this=0x2f7dcf8) at ../../packager/base/synchronization/waitable_event_posix.cc:154
#4  0x000000000042de4e in edash_packager::media::IoCache::Write (this=0x2f7dcc0, buffer=0x7fc7f5400010, size=1316) at ../../packager/media/file/io_cache.cc:76
#5  0x0000000000429333 in edash_packager::media::ThreadedIoFile::RunInInputMode (this=0x2f7dca0) at ../../packager/media/file/threaded_io_file.cc:126
#6  0x000000000042b5f9 in base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>::Run (this=0x7fc7f53fed90, object=0x2f7dca0) at ../../packager/base/bind_internal.h:176
#7  0x000000000042b53c in base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, base::internal::TypeList<edash_packager::media::ThreadedIoFile*> >::MakeItSo (runnable=..., args=0x2f7dca0) at ../../packager/base/bind_internal.h:293
#8  0x000000000042b508 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, void (edash_packager::media::ThreadedIoFile*), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::ThreadedIoFile> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::ThreadedIoFile> > >, base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, base::internal::TypeList<edash_packager::media::ThreadedIoFile*> >, void ()>::Run(base::internal::BindStateBase*) (base=0x2f3de80) at ../../packager/base/bind_internal.h:343
#9  0x0000000000637c3e in base::Callback<void ()>::Run() const (this=0x2f48028) at ../../packager/base/callback.h:396
#10 0x0000000000637bd9 in edash_packager::media::ClosureThread::Run (this=0x2f47fe0) at ../../packager/media/base/closure_thread.cc:22
#11 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x2f47fe0) at ../../packager/base/threading/simple_thread.cc:66
#12 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7fff131ebb60) at ../../packager/base/threading/platform_thread_posix.cc:74
#13 0x00007fc7fa7cfdf5 in start_thread () from /lib64/libpthread.so.0
#14 0x00007fc7fa4fd1ad in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7fc7edffe700 (LWP 6465)):
#0  0x00007fc7fa7d3705 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00000000006b17a5 in base::ConditionVariable::Wait (this=0x7fc7edffd068) at ../../packager/base/synchronization/condition_variable_posix.cc:54
#2  0x00000000006b319e in base::WaitableEvent::TimedWait (this=0x2fd46f8, max_time=...) at ../../packager/base/synchronization/waitable_event_posix.cc:214
#3  0x00000000006b2e06 in base::WaitableEvent::Wait (this=0x2fd46f8) at ../../packager/base/synchronization/waitable_event_posix.cc:154
#4  0x000000000042de4e in edash_packager::media::IoCache::Write (this=0x2fd46c0, buffer=0x7fc7f47fd010, size=1316) at ../../packager/media/file/io_cache.cc:76
#5  0x0000000000429333 in edash_packager::media::ThreadedIoFile::RunInInputMode (this=0x2fd46a0) at ../../packager/media/file/threaded_io_file.cc:126
#6  0x000000000042b5f9 in base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>::Run (this=0x7fc7edffdd90, object=0x2fd46a0) at ../../packager/base/bind_internal.h:176
#7  0x000000000042b53c in base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, base::internal::TypeList<edash_packager::media::ThreadedIoFile*> >::MakeItSo (runnable=..., args=0x2fd46a0) at ../../packager/base/bind_internal.h:293
#8  0x000000000042b508 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, void (edash_packager::media::ThreadedIoFile*), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::ThreadedIoFile> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::ThreadedIoFile> > >, base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (edash_packager::media::ThreadedIoFile::*)()>, base::internal::TypeList<edash_packager::m---Type <return> to continue, or q <return> to quit--- 
edia::ThreadedIoFile*> >, void ()>::Run(base::internal::BindStateBase*) (base=0x2fd4910) at ../../packager/base/bind_internal.h:343
#9  0x0000000000637c3e in base::Callback<void ()>::Run() const (this=0x2fd48f8) at ../../packager/base/callback.h:396
#10 0x0000000000637bd9 in edash_packager::media::ClosureThread::Run (this=0x2fd48b0) at ../../packager/media/base/closure_thread.cc:22
#11 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x2fd48b0) at ../../packager/base/threading/simple_thread.cc:66
#12 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7fff131ebb60) at ../../packager/base/threading/platform_thread_posix.cc:74
#13 0x00007fc7fa7cfdf5 in start_thread () from /lib64/libpthread.so.0
#14 0x00007fc7fa4fd1ad in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7fc7ed7fd700 (LWP 6497)):
#0  0x00007fc7fa7d5f7d in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007fc7fa7d1d32 in _L_lock_791 () from /lib64/libpthread.so.0
#2  0x00007fc7fa7d1c38 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x00000000006b27fb in base::internal::LockImpl::Lock (this=0x2f3cbb8) at ../../packager/base/synchronization/lock_impl_posix.cc:45
#4  0x000000000040bd43 in base::Lock::Acquire (this=0x2f3cbb0) at ../../packager/base/synchronization/lock.h:42
#5  0x000000000042e5d3 in base::AutoLock::AutoLock (this=0x7fc7ed7f9268, lock=...) at ../../packager/base/synchronization/lock.h:99
#6  0x00000000004d47cd in edash_packager::SimpleMpdNotifier::NotifySampleDuration (this=0x2f3cb90, container_id=3, sample_duration=3600) at ../../packager/mpd/base/simple_mpd_notifier.cc:76
#7  0x000000000041df43 in edash_packager::media::MpdNotifyMuxerListener::OnSampleDurationReady (this=0x2f4e350, sample_duration=3600) at ../../packager/media/event/mpd_notify_muxer_listener.cc:91
#8  0x000000000043fa8f in edash_packager::media::mp4::MultiSegmentSegmenter::WriteSegment (this=0x7fc7dc434130) at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:188
#9  0x000000000043edcc in edash_packager::media::mp4::MultiSegmentSegmenter::DoFinalizeSegment (this=0x7fc7dc434130) at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:90
#10 0x0000000000445a5c in edash_packager::media::mp4::Segmenter::FinalizeSegment (this=0x7fc7dc434130) at ../../packager/media/formats/mp4/segmenter.cc:355
#11 0x0000000000444e08 in edash_packager::media::mp4::Segmenter::FinalizeFragment (this=0x7fc7dc434130, finalize_segment=true, fragmenter=0x7fc7dc2adfc0) at ../../packager/media/formats/mp4/segmenter.cc:422
#12 0x0000000000445503 in edash_packager::media::mp4::Segmenter::AddSample (this=0x7fc7dc434130, stream=0x2f54b80, sample=...) at ../../packager/media/formats/mp4/segmenter.cc:303
#13 0x000000000043096d in edash_packager::media::mp4::MP4Muxer::DoAddSample (this=0x2f4b0b0, stream=0x2f54b80, sample=...) at ../../packager/media/formats/mp4/mp4_muxer.cc:133
#14 0x0000000000647217 in edash_packager::media::Muxer::AddSample (this=0x2f4b0b0, stream=0x2f54b80, sample=...) at ../../packager/media/base/muxer.cc:110
#15 0x00000000006434b7 in edash_packager::media::MediaStream::PushSample (this=0x2f54b80, sample=...) at ../../packager/media/base/media_stream.cc:48
#16 0x00000000006389e6 in edash_packager::media::Demuxer::NewSampleEvent (this=0x2f3cc80, track_id=256, sample=...) at ../../packager/media/base/demuxer.cc:126
#17 0x000000000063b7b6 in base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run (this=0x7fc7ed7fb500, 
    object=0x2f3cc80, args=..., args=...) at ../../packager/base/bind_internal.h:176
#18 0x000000000063b6e9 in base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >::MakeItSo (runnable=..., args=..., args=..., args=...)
    at ../../packager/base/bind_internal.h:286
#19 0x000000000063b682 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, bool (edash_packager::media::Demuxer*, unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >, bool (unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(base::internal::BindStateBase*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) (base=0x2f3ceb0, unbound_args=..., unbound_args=...) at ../../packager/base/bind_internal.h:343
#20 0x00000000009d113b in base::Callback<bool (unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) const (
    this=0x2f3e758, args=..., args=...) at ../../packager/base/callback.h:396
#21 0x00000000009ccf37 in edash_packager::media::mp2t::Mp2tMediaParser::EmitRemainingSamples (this=0x2f3e740) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:416
#22 0x00000000009cd9e5 in edash_packager::media::mp2t::Mp2tMediaParser::Parse (this=0x2f3e740, buf=0x7fc7fa206010 "GA", size=13160) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:250
#23 0x0000000000638f5e in edash_packager::media::Demuxer::Parse (this=0x2f3cc80) at ../../packager/media/base/demuxer.cc:185
#24 0x0000000000639290 in edash_packager::media::Demuxer::Run (this=0x2f3cc80) at ../../packager/media/base/demuxer.cc:146
#25 0x000000000040f844 in edash_packager::media::RemuxJob::Run (this=0x2f4f550) at ../../packager/app/packager_main.cc:108
#26 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x2f4f550) at ../../packager/base/threading/simple_thread.cc:66
#27 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7fff131eceb0) at ../../packager/base/threading/platform_thread_posix.cc:74
#28 0x00007fc7fa7cfdf5 in start_thread () from /lib64/libpthread.so.0
#29 0x00007fc7fa4fd1ad in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7fc7ecffc700 (LWP 6498)):
#0  0x00007fc7fa7d5f7d in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007fc7fa7d1d32 in _L_lock_791 () from /lib64/libpthread.so.0
#2  0x00007fc7fa7d1c38 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x00000000006b27fb in base::internal::LockImpl::Lock (this=0x7fc7d4003820) at ../../packager/base/synchronization/lock_impl_posix.cc:45
#4  0x000000000040bd43 in base::Lock::Acquire (this=0x7fc7d4003818) at ../../packager/base/synchronization/lock.h:42
#5  0x000000000042e5d3 in base::AutoLock::AutoLock (this=0x7fc7ecff6b78, lock=...) at ../../packager/base/synchronization/lock.h:99
---Type <return> to continue, or q <return> to quit---
#6  0x00000000004b0ed7 in edash_packager::Representation::GetXml (this=0x7fc7d4003730) at ../../packager/mpd/base/mpd_builder.cc:1096
#7  0x00000000004acf5f in edash_packager::AdaptationSet::GetXml (this=0x7fc7d40031a0) at ../../packager/mpd/base/mpd_builder.cc:731
#8  0x00000000004ac718 in edash_packager::MpdBuilder::GenerateMpd (this=0x2f3c740) at ../../packager/mpd/base/mpd_builder.cc:448
#9  0x00000000004b5225 in edash_packager::MpdBuilder::WriteMpdToOutput<std::string> (this=0x2f3c740, output=0x7fc7ecff7f18) at ../../packager/mpd/base/mpd_builder.cc:419
#10 0x00000000004ac5d9 in edash_packager::MpdBuilder::ToString (this=0x2f3c740, output=0x7fc7ecff7f18) at ../../packager/mpd/base/mpd_builder.cc:413
#11 0x00000000004cb4e1 in edash_packager::WriteMpdToFile (output_path="/storage/web/dash/bnt1/bnt1.mpd", mpd_builder=0x2f3c740) at ../../packager/mpd/base/mpd_notifier_util.cc:24
#12 0x00000000004d5090 in edash_packager::SimpleMpdNotifier::Flush (this=0x2f3cb90) at ../../packager/mpd/base/simple_mpd_notifier.cc:130
#13 0x000000000041e6db in edash_packager::media::MpdNotifyMuxerListener::OnNewSegment (this=0x2f705c0, start_time=2409012000, duration=900000, segment_file_size=1248189)
    at ../../packager/media/event/mpd_notify_muxer_listener.cc:157
#14 0x000000000043fae1 in edash_packager::media::mp4::MultiSegmentSegmenter::WriteSegment (this=0x7fc7e01407b0) at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:189
#15 0x000000000043edcc in edash_packager::media::mp4::MultiSegmentSegmenter::DoFinalizeSegment (this=0x7fc7e01407b0) at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:90
#16 0x0000000000445a5c in edash_packager::media::mp4::Segmenter::FinalizeSegment (this=0x7fc7e01407b0) at ../../packager/media/formats/mp4/segmenter.cc:355
#17 0x0000000000444e08 in edash_packager::media::mp4::Segmenter::FinalizeFragment (this=0x7fc7e01407b0, finalize_segment=true, fragmenter=0x7fc7e0031620) at ../../packager/media/formats/mp4/segmenter.cc:422
#18 0x0000000000445503 in edash_packager::media::mp4::Segmenter::AddSample (this=0x7fc7e01407b0, stream=0x2f7c3f0, sample=...) at ../../packager/media/formats/mp4/segmenter.cc:303
#19 0x000000000043096d in edash_packager::media::mp4::MP4Muxer::DoAddSample (this=0x2f77fa0, stream=0x2f7c3f0, sample=...) at ../../packager/media/formats/mp4/mp4_muxer.cc:133
#20 0x0000000000647217 in edash_packager::media::Muxer::AddSample (this=0x2f77fa0, stream=0x2f7c3f0, sample=...) at ../../packager/media/base/muxer.cc:110
#21 0x00000000006434b7 in edash_packager::media::MediaStream::PushSample (this=0x2f7c3f0, sample=...) at ../../packager/media/base/media_stream.cc:48
#22 0x00000000006389e6 in edash_packager::media::Demuxer::NewSampleEvent (this=0x2f4c1b0, track_id=256, sample=...) at ../../packager/media/base/demuxer.cc:126
#23 0x000000000063b7b6 in base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run (this=0x7fc7ecffa500, 
    object=0x2f4c1b0, args=..., args=...) at ../../packager/base/bind_internal.h:176
#24 0x000000000063b6e9 in base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >::MakeItSo (runnable=..., args=..., args=..., args=...)
    at ../../packager/base/bind_internal.h:286
#25 0x000000000063b682 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, bool (edash_packager::media::Demuxer*, unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >, bool (unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(base::internal::BindStateBase*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) (base=0x2f7d570, unbound_args=..., unbound_args=...) at ../../packager/base/bind_internal.h:343
#26 0x00000000009d113b in base::Callback<bool (unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) const (
    this=0x2f4e728, args=..., args=...) at ../../packager/base/callback.h:396
#27 0x00000000009ccf37 in edash_packager::media::mp2t::Mp2tMediaParser::EmitRemainingSamples (this=0x2f4e710) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:416
#28 0x00000000009cd9e5 in edash_packager::media::mp2t::Mp2tMediaParser::Parse (this=0x2f4e710, buf=0x7fc7f7602010 "G\001", size=2632) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:250
#29 0x0000000000638f5e in edash_packager::media::Demuxer::Parse (this=0x2f4c1b0) at ../../packager/media/base/demuxer.cc:185
#30 0x0000000000639290 in edash_packager::media::Demuxer::Run (this=0x2f4c1b0) at ../../packager/media/base/demuxer.cc:146
#31 0x000000000040f844 in edash_packager::media::RemuxJob::Run (this=0x2f74bf0) at ../../packager/app/packager_main.cc:108
#32 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x2f74bf0) at ../../packager/base/threading/simple_thread.cc:66
#33 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7fff131eceb0) at ../../packager/base/threading/platform_thread_posix.cc:74
#34 0x00007fc7fa7cfdf5 in start_thread () from /lib64/libpthread.so.0
#35 0x00007fc7fa4fd1ad in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7fc7dbfff700 (LWP 6499)):
#0  0x00007fc7fa7d5f7d in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007fc7fa7d1d32 in _L_lock_791 () from /lib64/libpthread.so.0
#2  0x00007fc7fa7d1c38 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x00000000006b27fb in base::internal::LockImpl::Lock (this=0x7fc7d4003208) at ../../packager/base/synchronization/lock_impl_posix.cc:45
#4  0x000000000040bd43 in base::Lock::Acquire (this=0x7fc7d4003200) at ../../packager/base/synchronization/lock.h:42
#5  0x000000000042e5d3 in base::AutoLock::AutoLock (this=0x7fc7dbffaf18, lock=...) at ../../packager/base/synchronization/lock.h:99
#6  0x00000000004b1b35 in edash_packager::AdaptationSet::OnNewSegmentForRepresentation (this=0x7fc7d40031a0, representation_id=1, start_time=2409012000, duration=900000)
    at ../../packager/mpd/base/mpd_builder.cc:807
#7  0x00000000004b449c in edash_packager::(anonymous namespace)::RepresentationStateChangeListenerImpl::OnNewSegmentForRepresentation (this=0x7fc7d4003690, start_time=2409012000, duration=900000)
    at ../../packager/mpd/base/mpd_builder.cc:361
#8  0x00000000004b2be1 in edash_packager::Representation::AddNewSegment (this=0x7fc7d4003730, start_time=2409012000, duration=900000, size=1238756) at ../../packager/mpd/base/mpd_builder.cc:1062
#9  0x00000000004d4b61 in edash_packager::SimpleMpdNotifier::NotifyNewSegment (this=0x2f3cb90, container_id=1, start_time=2409012000, duration=900000, size=1238756)
    at ../../packager/mpd/base/simple_mpd_notifier.cc:96
#10 0x000000000041e6bf in edash_packager::media::MpdNotifyMuxerListener::OnNewSegment (this=0x2f63fb0, start_time=2409012000, duration=900000, segment_file_size=1238756)
---Type <return> to continue, or q <return> to quit---
    at ../../packager/media/event/mpd_notify_muxer_listener.cc:155
#11 0x000000000043fae1 in edash_packager::media::mp4::MultiSegmentSegmenter::WriteSegment (this=0x7fc7d40029f0) at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:189
#12 0x000000000043edcc in edash_packager::media::mp4::MultiSegmentSegmenter::DoFinalizeSegment (this=0x7fc7d40029f0) at ../../packager/media/formats/mp4/multi_segment_segmenter.cc:90
#13 0x0000000000445a5c in edash_packager::media::mp4::Segmenter::FinalizeSegment (this=0x7fc7d40029f0) at ../../packager/media/formats/mp4/segmenter.cc:355
#14 0x0000000000444e08 in edash_packager::media::mp4::Segmenter::FinalizeFragment (this=0x7fc7d40029f0, finalize_segment=true, fragmenter=0x7fc7d4002f10) at ../../packager/media/formats/mp4/segmenter.cc:422
#15 0x0000000000445503 in edash_packager::media::mp4::Segmenter::AddSample (this=0x7fc7d40029f0, stream=0x2f63df0, sample=...) at ../../packager/media/formats/mp4/segmenter.cc:303
#16 0x000000000043096d in edash_packager::media::mp4::MP4Muxer::DoAddSample (this=0x2f63ed0, stream=0x2f63df0, sample=...) at ../../packager/media/formats/mp4/mp4_muxer.cc:133
#17 0x0000000000647217 in edash_packager::media::Muxer::AddSample (this=0x2f63ed0, stream=0x2f63df0, sample=...) at ../../packager/media/base/muxer.cc:110
#18 0x00000000006434b7 in edash_packager::media::MediaStream::PushSample (this=0x2f63df0, sample=...) at ../../packager/media/base/media_stream.cc:48
#19 0x00000000006389e6 in edash_packager::media::Demuxer::NewSampleEvent (this=0x2fd4610, track_id=256, sample=...) at ../../packager/media/base/demuxer.cc:126
#20 0x000000000063b7b6 in base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run (this=0x7fc7dbffd500, 
    object=0x2fd4610, args=..., args=...) at ../../packager/base/bind_internal.h:176
#21 0x000000000063b6e9 in base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >::MakeItSo (runnable=..., args=..., args=..., args=...)
    at ../../packager/base/bind_internal.h:286
#22 0x000000000063b682 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, bool (edash_packager::media::Demuxer*, unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&), base::internal::TypeList<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<edash_packager::media::Demuxer> > >, base::internal::InvokeHelper<false, bool, base::internal::RunnableAdapter<bool (edash_packager::media::Demuxer::*)(unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>, base::internal::TypeList<edash_packager::media::Demuxer*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&> >, bool (unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(base::internal::BindStateBase*, unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) (base=0x2fd49c0, unbound_args=..., unbound_args=...) at ../../packager/base/bind_internal.h:343
#23 0x00000000009d113b in base::Callback<bool (unsigned int, scoped_refptr<edash_packager::media::MediaSample> const&)>::Run(unsigned int const&, scoped_refptr<edash_packager::media::MediaSample> const&) const (
    this=0x2fd4b98, args=..., args=...) at ../../packager/base/callback.h:396
#24 0x00000000009ccf37 in edash_packager::media::mp2t::Mp2tMediaParser::EmitRemainingSamples (this=0x2fd4b80) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:416
#25 0x00000000009cd9e5 in edash_packager::media::mp2t::Mp2tMediaParser::Parse (this=0x2fd4b80, buf=0x7fc7f49fe010 "G\001", size=6580) at ../../packager/media/formats/mp2t/mp2t_media_parser.cc:250
#26 0x0000000000638f5e in edash_packager::media::Demuxer::Parse (this=0x2fd4610) at ../../packager/media/base/demuxer.cc:185
#27 0x0000000000639290 in edash_packager::media::Demuxer::Run (this=0x2fd4610) at ../../packager/media/base/demuxer.cc:146
#28 0x000000000040f844 in edash_packager::media::RemuxJob::Run (this=0x2f644f0) at ../../packager/app/packager_main.cc:108
#29 0x00000000006c3821 in base::SimpleThread::ThreadMain (this=0x2f644f0) at ../../packager/base/threading/simple_thread.cc:66
#30 0x00000000006c2c3a in base::(anonymous namespace)::ThreadFunc (params=0x7fff131eceb0) at ../../packager/base/threading/platform_thread_posix.cc:74
#31 0x00007fc7fa7cfdf5 in start_thread () from /lib64/libpthread.so.0
#32 0x00007fc7fa4fd1ad in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7fc7fb81f740 (LWP 6436)):
#0  0x00007fc7fa7d0f27 in pthread_join () from /lib64/libpthread.so.0
#1  0x00000000006c2737 in base::PlatformThread::Join (thread_handle=...) at ../../packager/base/threading/platform_thread_posix.cc:221
#2  0x00000000006c375b in base::SimpleThread::Join (this=0x2f4f550) at ../../packager/base/threading/simple_thread.cc:47
#3  0x000000000040ceae in edash_packager::media::RunRemuxJobs (remux_jobs=std::__debug::vector of length 3, capacity 4 = {...}) at ../../packager/app/packager_main.cc:236
Python Exception <type 'exceptions.IndexError'> list index out of range: 
#4  0x000000000040d55f in edash_packager::media::RunPackager (stream_descriptors=std::__debug::multiset with 4 elements) at ../../packager/app/packager_main.cc:305
#5  0x000000000040d9ea in edash_packager::media::PackagerMain (argc=5, argv=0x7fff131ee2d8) at ../../packager/app/packager_main.cc:339
#6  0x000000000040da82 in main (argc=13, argv=0x7fff131ee298) at ../../packager/app/packager_main.cc:346

@kqyang kqyang added the type: bug Something isn't working correctly label Nov 16, 2015
@kqyang kqyang added this to the 1.3.0 milestone Nov 16, 2015
rkuroiwa pushed a commit that referenced this issue Nov 16, 2015
- Since most use cases use notifier implementations that already uses
  locks, removing locks from MpdBuilder.
- Added locks to MpdNotifier::Flush() implementations. Multiple threads
  were able to write to the same file.

Issue #45, #49

Change-Id: I6e39824485672f40e6c947da97f1743fac174167
@kqyang
Copy link
Contributor

kqyang commented Nov 16, 2015

This bug should have been fixed.

@peyoh @dviano Can you try and verify with latest cl submitted by Rintaro? Let us know the results. Thanks again for reporting the issue and helps on debugging.

@dviano
Copy link

dviano commented Nov 17, 2015

It's been running fine for 3 hours now (longer than the average before), I'll leave it running for 24hs and confirm again tomorrow.

@dviano
Copy link

dviano commented Nov 18, 2015

I can confirm now, that after 24hs it keeps running ok.

@kqyang kqyang changed the title Packetization stops after several hours Deadlock in MpdBuilder causing packetization to stop after several hours Nov 18, 2015
@kqyang
Copy link
Contributor

kqyang commented Nov 18, 2015

Cool. Thanks!

@kqyang kqyang closed this as completed Nov 18, 2015
rkuroiwa pushed a commit that referenced this issue Nov 19, 2015
- Since most use cases use notifier implementations that already uses
  locks, removing locks from MpdBuilder.
- Added locks to MpdNotifier::Flush() implementations. Multiple threads
  were able to write to the same file.

Issue #45, #49

Change-Id: I6e39824485672f40e6c947da97f1743fac174167
@peyoh
Copy link
Author

peyoh commented Nov 19, 2015

Hi,
it's ok now.

Thank you.

@kqyang
Copy link
Contributor

kqyang commented Nov 19, 2015

Cool. Thanks for the update.

@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Apr 19, 2018
@shaka-project shaka-project locked and limited conversation to collaborators Apr 19, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
Development

No branches or pull requests

5 participants