#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 _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://avcodec.org/mailman/listinfo/ffmpeg-trac