[FFmpeg-trac] #4897(undetermined:new): decklink output driver segfaults
FFmpeg
trac at avcodec.org
Thu Oct 1 00:20:54 CEST 2015
#4897: decklink output driver segfaults
-------------------------------------+-------------------------------------
Reporter: Sesse | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Hi,
I'm using ffmpeg git as of Sep 19 (e3cf97), compiled with --enable-nonfree
--enable-gpl --enable-decklink --enable-shared --enable-debug --disable-
stripping. I'm using this command line to try to play files on my SDI
card:
{{{
./ffmpeg -i file.mp4 -f decklink -pix_fmt uyvy422 -s 1280x720 -r
60000/1001 -ar 48000 -ac 2 'DeckLink Studio 2'
}}}
It works fine with some files, but with most it segfaults. An example of a
file that segfaults is http://cdn.capped.tv/vhq/cncd_fairlight-
ceasefire_all_falls_down.mp4. The stack trace looks like this:
{{{
Program terminated with signal SIGSEGV, Segmentation fault.
#0 __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-
sse2-unaligned.S:33
33 ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: No such file
or directory.
(gdb) bt
#0 __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-
sse2-unaligned.S:33
#1 0x00007f4dcd8cb24e in av_image_copy_plane (dst=<optimized out>,
dst_linesize=2560, src=<optimized out>,
src_linesize=2560, bytewidth=2560, height=720) at
libavutil/imgutils.c:282
#2 0x00007f4dcd8cb3d3 in av_image_copy (dst_data=0x1f15440,
dst_linesizes=0x1f15480,
src_data=src_data at entry=0x2035280,
src_linesizes=src_linesizes at entry=0x20352c0, pix_fmt=AV_PIX_FMT_UYVY422,
width=1280, height=720) at libavutil/imgutils.c:320
#3 0x00007f4dcfcbfbcc in decklink_write_video_packet (pkt=0x7ffc6047baa0,
pkt=0x7ffc6047baa0, avctx=0x1ec3f80)
at libavdevice/decklink_enc.cpp:237
#4 ff_decklink_write_packet (avctx=0x1ec3f80, pkt=0x7ffc6047baa0) at
libavdevice/decklink_enc.cpp:419
#5 0x00007f4dcf630a1e in write_packet (pkt=0x7ffc6047baa0, s=0x1ec3f80)
at libavformat/mux.c:660
#6 av_interleaved_write_frame (s=s at entry=0x1ec3f80, pkt=0x0,
pkt at entry=0x7ffc6047bdd0) at libavformat/mux.c:970
#7 0x000000000042018f in write_frame (s=s at entry=0x1ec3f80,
pkt=pkt at entry=0x7ffc6047bdd0, ost=ost at entry=0x1ec5be0)
at ffmpeg.c:780
#8 0x000000000042359b in do_audio_out (frame=<optimized out>,
ost=0x1ec5be0, s=0x1ec3f80) at ffmpeg.c:858
#9 reap_filters (flush=flush at entry=0) at ffmpeg.c:1391
#10 0x0000000000407f61 in transcode_step () at ffmpeg.c:3931
#11 transcode () at ffmpeg.c:3974
#12 main (argc=<optimized out>, argv=<optimized out>) at ffmpeg.c:4157
}}}
valgrind complains, among others, about these (I've snipped away many more
that seem less relevant):
{{{
==22881== Source and destination overlap in memcpy(0x2ef2e840, 0x2ef2e840,
2560)
==22881== at 0x4C2D75D: memcpy@@GLIBC_2.14 (vg_replace_strmem.c:915)
==22881== by 0x741524D: av_image_copy_plane (imgutils.c:282)
==22881== by 0x74153D2: av_image_copy (imgutils.c:320)
==22881== by 0x5051BCB: decklink_write_video_packet
(decklink_enc.cpp:237)
==22881== by 0x5051BCB: ff_decklink_write_packet (decklink_enc.cpp:419)
==22881== by 0x56B2A1D: write_packet (mux.c:660)
==22881== by 0x56B2A1D: av_interleaved_write_frame (mux.c:970)
==22881== by 0x42018E: write_frame (ffmpeg.c:780)
==22881== by 0x42359A: do_audio_out (ffmpeg.c:858)
==22881== by 0x42359A: reap_filters (ffmpeg.c:1391)
==22881== by 0x407F60: transcode_step (ffmpeg.c:3931)
==22881== by 0x407F60: transcode (ffmpeg.c:3974)
==22881== by 0x407F60: main (ffmpeg.c:4157)
==22881== Invalid read of size 8
==22881== at 0x4C2D940: memcpy@@GLIBC_2.14 (vg_replace_strmem.c:915)
==22881== by 0x741524D: av_image_copy_plane (imgutils.c:282)
==22881== by 0x74153D2: av_image_copy (imgutils.c:320)
==22881== by 0x5051BCB: decklink_write_video_packet
(decklink_enc.cpp:237)
==22881== by 0x5051BCB: ff_decklink_write_packet (decklink_enc.cpp:419)
==22881== by 0x56B2A1D: write_packet (mux.c:660)
==22881== by 0x56B2A1D: av_interleaved_write_frame (mux.c:970)
==22881== by 0x42018E: write_frame (ffmpeg.c:780)
==22881== by 0x42359A: do_audio_out (ffmpeg.c:858)
==22881== by 0x42359A: reap_filters (ffmpeg.c:1391)
==22881== by 0x407F60: transcode_step (ffmpeg.c:3931)
==22881== by 0x407F60: transcode (ffmpeg.c:3974)
==22881== by 0x407F60: main (ffmpeg.c:4157)
==22881== Address 0x2f210220 is 0 bytes inside a block of size 1,884,191
free'd
==22881== at 0x4C29E90: free (vg_replace_malloc.c:473)
==22881== by 0x7407FCE: buffer_replace (buffer.c:119)
==22881== by 0x7407FCE: av_buffer_unref (buffer.c:129)
==22881== by 0x7412463: av_frame_unref (frame.c:479)
==22881== by 0x420ED0: do_video_out (ffmpeg.c:1241)
==22881== by 0x42332A: reap_filters (ffmpeg.c:1382)
==22881== by 0x407F60: transcode_step (ffmpeg.c:3931)
==22881== by 0x407F60: transcode (ffmpeg.c:3974)
==22881== by 0x407F60: main (ffmpeg.c:4157)
}}}
Do you think you could have a look?
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4897>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list