[FFmpeg-devel] [PATCH] libavformat/rtspdec: Don't send teardown if rtsp_hd_out is null

Ross Nicholson phunkyfish at gmail.com
Thu Aug 29 19:04:19 EEST 2019


Hey Jun,

So I got kodi running with FFmpeg n4.2 and the issue persists. Here's the
debugger output after trying to play the test link you provided.

With the patch this does not occur so their must be some way to call
function with rt->rtsp_hd_out as NULL;

Thanks,

Ross

Process 92017 stopped

* thread #28, name = 'VideoPlayer', stop reason = EXC_BAD_ACCESS (code=1,
address=0x20)

    frame #0: 0x00000001037af09e kodi.bin`ffurl_write(h=0x0000000000000000,
buf="TEARDOWN  RTSP/1.0\r\nCSeq: 1\r\nUser-Agent: Lavf58.29.100\r\n\r\n",
size=58) at avio.c:423:20 [opt]

   420

   421 int ffurl_write(URLContext *h, const unsigned char *buf, int size)

   422 {

-> 423     if (!(h->flags & AVIO_FLAG_WRITE))

   424         return AVERROR(EIO);

   425     /* avoid sending too big packets */

   426     if (h->max_packet_size && size > h->max_packet_size)

Target 0: (kodi.bin) stopped.


And the backtrace:


* thread #28, name = 'VideoPlayer', stop reason = EXC_BAD_ACCESS (code=1,
address=0x20)

  * frame #0: 0x00000001037af09e kodi.bin`ffurl_write(h=0x0000000000000000,
buf="TEARDOWN  RTSP/1.0\r\nCSeq: 1\r\nUser-Agent: Lavf58.29.100\r\n\r\n",
size=58) at avio.c:423:20 [opt]

    frame #1: 0x00000001038c3be9
kodi.bin`rtsp_send_cmd_with_content_async(s=0x000000011989c000,
method=<unavailable>, url=<unavailable>, headers=<unavailable>,
send_content=0x0000000000000000, send_content_length=0) at rtsp.c:1352:5
[opt]

    frame #2: 0x00000001038c928c
kodi.bin`rtsp_read_close(s=0x000000011989c000) at rtspdec.c:61:9 [opt]

    frame #3: 0x00000001038f9994
kodi.bin`avformat_close_input(ps=0x000000014dbb8000) at utils.c:4450:13
[opt]

    frame #4: 0x00000001004c7841
kodi.bin`CDVDDemuxFFmpeg::Open(this=0x000000014dbb7ff0,
pInput=std::__1::shared_ptr<CDVDInputStream>::element_type @
0x000000014dbb7d10 strong=4 weak=1, streaminfo=true, fileinfo=false) at
DVDDemuxFFmpeg.cpp:278:7

    frame #5: 0x00000001004eb802
kodi.bin`CDVDFactoryDemuxer::CreateDemuxer(pInputStream=std::__1::shared_ptr<CDVDInputStream>::element_type
@ 0x000000014dbb7d10 strong=4 weak=1, fileinfo=false) at
DVDFactoryDemuxer.cpp:88:15

    frame #6: 0x0000000100575ff3
kodi.bin`CVideoPlayer::OpenDemuxStream(this=0x000000011d90d800) at
VideoPlayer.cpp:822:18

    frame #7: 0x0000000100579642
kodi.bin`CVideoPlayer::Prepare(this=0x000000011d90d800) at
VideoPlayer.cpp:1224:8

    frame #8: 0x000000010057b70f
kodi.bin`CVideoPlayer::Process(this=0x000000011d90d800) at
VideoPlayer.cpp:1310:3

    frame #9: 0x0000000100aa7a04
kodi.bin`CThread::Action(this=0x000000011d90d800) at Thread.cpp:282:5

    frame #10: 0x0000000100aadc90
kodi.bin`CThread::Create(this=0x000000014d19f670,
pThread=0x000000011d90d800, promise=promise<bool> @
0x000070000b522e70)::$_0::operator()(CThread*, std::__1::promise<bool>)
const at Thread.cpp:140:18

    frame #11: 0x0000000100aad9eb kodi.bin`decltype(__f=0x000000014d19f670,
__args=0x000000014d19f678,
__args=0x000000014d19f680)::$_0>(fp)(std::__1::forward<CThread*>(fp0),
std::__1::forward<std::__1::promise<bool> >(fp0)))
std::__1::__invoke<CThread::Create(bool)::$_0, CThread*,
std::__1::promise<bool> >(CThread::Create(bool)::$_0&&, CThread*&&,
std::__1::promise<bool>&&) at type_traits:4339:1

    frame #12: 0x0000000100aad917 kodi.bin`void
std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct,
std::__1::default_delete<std::__1::__thread_struct> >,
CThread::Create(bool)::$_0, CThread*, std::__1::promise<bool>, 2ul,
3ul>(__t=size=4, (null)=__tuple_indices<2, 3> @ 0x000070000b522eb8)::$_0,
CThread*, std::__1::promise<bool> >&, std::__1::__tuple_indices<2ul, 3ul>)
at thread:342:5

    frame #13: 0x0000000100aad026 kodi.bin`void*
std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct,
std::__1::default_delete<std::__1::__thread_struct> >,
CThread::Create(bool)::$_0, CThread*, std::__1::promise<bool> >
>(__vp=0x000000014d19f670) at thread:352:5

    frame #14: 0x00007fff68c1c2eb libsystem_pthread.dylib`_pthread_body +
126

    frame #15: 0x00007fff68c1f249 libsystem_pthread.dylib`_pthread_start +
66

    frame #16: 0x00007fff68c1b40d libsystem_pthread.dylib`thread_start + 13



On Thu, 29 Aug 2019 at 00:20, Jun Li <junli1026 at gmail.com> wrote:

> On Wed, Aug 28, 2019 at 3:09 PM Carl Eugen Hoyos <ceffmpeg at gmail.com>
> wrote:
>
> > Am Mo., 5. Aug. 2019 um 09:19 Uhr schrieb Ross Nicholson <
> > phunkyfish at gmail.com>:
> > >
> > > Example stream that does not work: rtsp://
> > > 184.72.239.149/vod/mp4:BigBuckBunny_115k.mov
> >
> > Is this still valid?
> >
> >
> Carl, you can try this one for validation: rtsp://
> wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
>
> Hi Ross,
> Just curious, is there any case the rt->rtsp_hd_out is NULL ?
> Looks like the hd_out is either TCP or HTTP(http tunnel case) for RTSP
> connection. And I only see it is set to NULL in ff_rtsp_close_connections,
> which is called after your check.
>
> -Jun
>
> I get a time-out both with and without your patch.
> >
> > Carl Eugen
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel at ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list