[FFmpeg-trac] #1383(avformat:new): HTTP playback will crash if URL can't be opened for whatever reasons

FFmpeg trac at avcodec.org
Thu May 31 18:10:52 CEST 2012


#1383: HTTP playback will crash if URL can't be opened for whatever reasons
-----------------------------------+---------------------------------------
             Reporter:  jyavenard  |                     Type:  defect
               Status:  new        |                 Priority:  critical
            Component:  avformat   |                  Version:  unspecified
             Keywords:             |               Blocked By:
             Blocking:             |  Reproduced by developer:  0
Analyzed by developer:  0          |
-----------------------------------+---------------------------------------
 Problem was introduced by commit ba354a8c

 backtrace:
 ffplay
 http://stream7.france24.yacast.net/iphone/france24/fr/iPad.f24_fr.m3u8

 ffplay(80831,0x10679b000) malloc: *** error for object 0x101120f00:
 pointer being freed was not allocated
 *** set a breakpoint in malloc_error_break to debug


 {{{
 Program received signal SIGABRT, Aborted.
 [Switching to process 80831 thread 0x6a03]
 0x00007fff95723ce2 in __pthread_kill ()
 (gdb) thread apply all bt full

 Thread 6 (process 80831):
 #0  0x00007fff95723ce2 in __pthread_kill ()
 No symbol table info available.
 #1  0x00007fff920db7d2 in pthread_kill ()
 No symbol table info available.
 #2  0x00007fff920cca7a in abort ()
 No symbol table info available.
 #3  0x00007fff9212b84c in free ()
 No symbol table info available.

 Thread 5 (process 80831):
 #0  0x00007fff95723e42 in __semwait_signal ()
 No symbol table info available.
 #1  0x00007fff9208fdea in nanosleep ()
 No symbol table info available.
 #2  0x0000000100e25386 in RunTimer ()
 No symbol table info available.
 #3  0x0000000100de9368 in SDL_RunThread ()
 No symbol table info available.
 #4  0x0000000100e20e09 in RunThread ()
 No symbol table info available.
 #5  0x00007fff920d98bf in _pthread_start ()
 No symbol table info available.
 #6  0x00007fff920dcb75 in thread_start ()
 No symbol table info available.

 Thread 4 (process 80831):
 #0  0x00007fff95724192 in __workq_kernreturn ()
 No symbol table info available.
 #1  0x00007fff920db594 in _pthread_wqthread ()
 No symbol table info available.
 #2  0x00007fff920dcb85 in start_wqthread ()
 No symbol table info available.

 Thread 3 (process 80831):
 #0  0x00007fff95724192 in __workq_kernreturn ()
 No symbol table info available.
 #1  0x00007fff920db594 in _pthread_wqthread ()
 No symbol table info available.
 #2  0x00007fff920dcb85 in start_wqthread ()
 No symbol table info available.

 Thread 2 (process 80831):
 #0  0x00007fff957247e6 in kevent ()
 No symbol table info available.
 #1  0x00007fff8da9978a in _dispatch_mgr_invoke ()
 No symbol table info available.
 #2  0x00007fff8da9831a in _dispatch_mgr_thread ()
 No symbol table info available.

 Thread 1 (process 80831):
 #0  0x00007fff95723e42 in __semwait_signal ()
 No symbol table info available.
 #1  0x00007fff9208fdea in nanosleep ()
 No symbol table info available.
 #2  0x0000000100e252b6 in SDL_Delay ()
 No symbol table info available.
 #3  0x0000000100de5abe in SDL_WaitEvent ()
 No symbol table info available.
 #4  0x0000000100007f94 in SDL_main ()
 No symbol table info available.
 #5  0x00007fff8f7afd0e in __-[NSNotificationCenter
 addObserver:selector:name:object:]_block_invoke_1 ()
 No symbol table info available.
 #6  0x00007fff8e4a67ba in _CFXNotificationPost ()
 No symbol table info available.
 #7  0x00007fff8f79bfc3 in -[NSNotificationCenter
 postNotificationName:object:userInfo:] ()
 No symbol table info available.
 #8  0x00007fff92b4c4e3 in -[NSApplication _postDidFinishNotification] ()
 No symbol table info available.
 #9  0x00007fff92b4c249 in -[NSApplication
 _sendFinishLaunchingNotification] ()
 No symbol table info available.
 #10 0x00007fff92b4af10 in -[NSApplication(NSAppleEventHandling)
 _handleAEOpenEvent:] ()
 No symbol table info available.
 #11 0x00007fff92b4ac71 in -[NSApplication(NSAppleEventHandling)
 _handleCoreEvent:withReplyEvent:] ()
 No symbol table info available.
 #12 0x00007fff8e4f0541 in -[NSObject
 performSelector:withObject:withObject:] ()
 No symbol table info available.
 #13 0x00007fff8f7d27c7 in __-[NSAppleEventManager
 setEventHandler:andSelector:forEventClass:andEventID:]_block_invoke_1 ()
 No symbol table info available.
 #14 0x00007fff8f7d174e in -[NSAppleEventManager
 dispatchRawAppleEvent:withRawReply:handlerRefCon:] ()
 No symbol table info available.
 #15 0x00007fff8f7d15dc in _NSAppleEventManagerGenericHandler ()
 No symbol table info available.
 #16 0x00007fff923b9c25 in aeDispatchAppleEvent ()
 No symbol table info available.
 #17 0x00007fff923b9b03 in dispatchEventAndSendReply ()
 No symbol table info available.
 #18 0x00007fff923b99f7 in aeProcessAppleEvent ()
 No symbol table info available.
 #19 0x00007fff8c6ded7d in AEProcessAppleEvent ()
 No symbol table info available.
 #20 0x00007fff92b4807d in _DPSNextEvent ()
 No symbol table info available.
 #21 0x00007fff92b47735 in -[NSApplication
 nextEventMatchingMask:untilDate:inMode:dequeue:] ()
 No symbol table info available.
 #22 0x00007fff92b44071 in -[NSApplication run] ()
 No symbol table info available.
 #23 0x00000001005ff320 in ff_get_cpu_flags_x86 ()
 No symbol table info available.
 #24 0x00000001000018b4 in start ()
 No symbol table info available.
 }}}

 sorry for the poor quality of the backtrace.

 here is the one from MythTV using identical call to ffplay when trying to
 play a URL and calling
 ffurl_open(&context, filename, AVIO_FLAG_READ, NULL, NULL);

 where filename is
 "http://stream7.france24.yacast.net/iphone/france24/fr/iPad.f24_fr.m3u8"

 {{{
 #0  0x00007fff95723ce2 in __pthread_kill ()
 #1  0x00007fff920db7d2 in pthread_kill ()
 #2  0x00007fff920cca7a in abort ()
 #3  0x00007fff9212b84c in free ()
 #4  0x000000010008ba60 in ffurl_close (h=0x2d03) at avio.c:332
 #5  0x00000001000a5912 in http_open_cnx (h=0x7fff5fbfcff0) at http.c:192
 #6  0x000000010008be28 in ffurl_connect (uc=0x2d03,
 options=0x7fff5fbfae28) at avio.c:184
 #7  0x000000010008c347 in ffurl_open (puc=0x7fff5fbfd4a0, filename=0x6
 <Address 0x6 out of bounds>, flags=0, int_cb=0x7fff5fbfae28, options=0x0)
 at avio.c:244
 #8  0x00000001013b5bc8 in HLSRingBuffer::TestForHTTPLiveStreaming
 (filename=@0x7fff5fbfd708) at httplivestreambuffer.cpp:1627
 #9  0x00000001010bb608 in RingBuffer::Create (xfilename=@0x7fff5fbfdcb0,
 write=false, usereadahead=true, timeout_ms=2000, stream_only=false) at
 ringbuffer.cpp:119
 #10 0x000000010147cd14 in TV::HandleStateChange (this=0x110138390,
 mctx=0x110138f30, ctx=0x110138f30) at tv_play.cpp:2283
 #11 0x0000000101485dec in TV::Playback (this=0x110138390,
 rcinfo=@0x11013a2b0) at tv_play.cpp:2032
 #12 0x00000001014e2cda in TV::StartTV (tvrec=0x7fff5fbff450, flags=0) at
 tv_play.cpp:335
 #13 0x000000010000c6db in main (argc=7, argv=0x7fff5fbffa88) at
 main.cpp:256
 }}}

 The commit mentioned above also introduced a compilation regression when
 compiling with HTTPS support.

 The addition of url_shutdown wasn't added in this particular spot

 Following patch is required:
 {{{
 diff --git a/libavformat/http.c b/libavformat/http.c
 index ddba5f5..79ff7f4 100644
 --- a/libavformat/http.c
 +++ b/libavformat/http.c
 @@ -655,6 +655,7 @@ URLProtocol ff_https_protocol = {
      .url_seek            = http_seek,
      .url_close           = http_close,
      .url_get_file_handle = http_get_file_handle,
 +    .url_shutdown        = http_shutdown,
      .priv_data_size      = sizeof(HTTPContext),
      .priv_data_class     = &https_context_class,
      .flags               = URL_PROTOCOL_FLAG_NETWORK,
 }}}

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1383>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list