[FFmpeg-trac] #3564(avformat:new): random RTMP crash
FFmpeg
trac at avcodec.org
Tue Apr 15 05:41:53 CEST 2014
#3564: random RTMP crash
------------------------------------+--------------------------------------
Reporter: kyh96403 | Type: defect
Status: new | Priority: normal
Component: avformat | Version: git-master
Keywords: rtmp crash | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+--------------------------------------
When internet connection is break or time-out is short...
Sometime crash is occur.
Backtrace is follow.
Program terminated with signal 11, Segmentation fault.
#0 0x0000003d222728ae in free () from /lib64/libc.so.6
(gdb) bt
#0 0x0000003d222728ae in free () from /lib64/libc.so.6
#1 0x0000000000b9dc1c in av_free (arg=0x2aab3b1be6a8) at
libavutil/mem.c:232
#2 av_freep (arg=0x2aab3b1be6a8) at libavutil/mem.c:239
#3 0x0000000000528fe5 in ff_rtmp_packet_destroy (h=0x1a21c4a0,
p=0x2aab3b1be690, chunk_size=4096, prev_pkt_ptr=<value optimized out>,
nb_prev_pkt=<value optimized out>, hdr=100 'd') at
libavformat/rtmppkt.c:410
#4 rtmp_packet_read_one_chunk (h=0x1a21c4a0, p=0x2aab3b1be690,
chunk_size=4096, prev_pkt_ptr=<value optimized out>, nb_prev_pkt=<value
optimized out>,
hdr=100 'd') at libavformat/rtmppkt.c:264
#5 0x000000000052922a in ff_rtmp_packet_read_internal (h=0x1a21c4a0,
p=0x2aab3b1be690, chunk_size=4096, prev_pkt=0x1a21c050,
nb_prev_pkt=0x1a21c060)
at libavformat/rtmppkt.c:289
#6 ff_rtmp_packet_read (h=0x1a21c4a0, p=0x2aab3b1be690, chunk_size=4096,
prev_pkt=0x1a21c050, nb_prev_pkt=0x1a21c060) at libavformat/rtmppkt.c:161
#7 0x00000000004cf309 in get_packet (s=0x1a21bfc0, for_header=<value
optimized out>) at libavformat/rtmpproto.c:2262
#8 0x00000000004cf78e in rtmp_read (s=0x2aab7a62a040, buf=0x1a22e7e0
"\b", size=32768) at libavformat/rtmpproto.c:2628
#9 0x000000000043d411 in retry_transfer_wrapper (h=0x1a21bfc0,
buf=0x1a22e7e0 "\b", size=32768) at libavformat/avio.c:303
#10 ffurl_read (h=0x1a21bfc0, buf=0x1a22e7e0 "\b", size=32768) at
libavformat/avio.c:334
#11 0x000000000043dfa3 in fill_buffer (s=0x1a21d220) at
libavformat/aviobuf.c:449
#12 0x000000000043e0d5 in avio_r8 (s=0x2aab7a62a040) at
libavformat/aviobuf.c:495
#13 0x0000000000452dcc in flv_read_packet (s=0x1a21b9c0,
pkt=0x2aab3b1be950) at libavformat/flvdec.c:771
#14 0x0000000000508f0e in ff_read_packet (s=0x1a21b9c0,
pkt=0x2aab3b1be950) at libavformat/utils.c:767
#15 0x000000000050b45b in read_frame_internal (s=0x1a21b9c0,
pkt=0x2aab3b1c9ef0) at libavformat/utils.c:1436
#16 0x000000000050c29a in av_read_frame (s=0x2aab7a62a040,
pkt=0x2aab3b1c9ef0) at libavformat/utils.c:1573
That is can be fix by...
rtmppkt.c
{{{
static int rtmp_packet_read_one_chunk(URLContext *h, RTMPPacket *p,
int chunk_size, RTMPPacket
**prev_pkt_ptr,
int *nb_prev_pkt, uint8_t hdr)
....
....
....
if (size > 0) {
RTMPPacket *prev = &prev_pkt[channel_id];
prev->data = p->data;
prev->read = p->read;
prev->offset = p->offset;
// added by K.Y.H for fix crash....
p->data = NULL;
return AVERROR(EAGAIN);
}
prev_pkt[channel_id].read = 0; // read complete; reset if needed
return p->read;
}
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/3564>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list