[FFmpeg-trac] #650(avutil:new): Segmentation Fault when using av_opt_set to set h264 options
FFmpeg
trac at avcodec.org
Mon Nov 14 12:51:05 CET 2011
#650: Segmentation Fault when using av_opt_set to set h264 options
-------------------------------------+-------------------------------------
Reporter: | Owner: michael
apolychrono | Status: new
Type: defect | Component: avutil
Priority: normal | Keywords: av_set_opt
Version: git- | av_opt_find2 h265 options
master | Blocking:
Blocked By: | Analyzed by developer: 0
Reproduced by developer: 0 |
-------------------------------------+-------------------------------------
Tested with ffmpeg latest release. I use the av_opt_set as below:
{{{
static AVStream *add_video_stream(AVFormatContext *oc, enum CodecID
codec_id)
{
AVCodecContext *c;
AVStream *st;
st = av_new_stream(oc, 0);
if (!st) {
fprintf(stderr, "Could not alloc stream\n");
exit(1);
}
c = st->codec;
c->flags = CODEC_FLAG_GLOBAL_HEADER;
/* default-setting for x264 */
c->me_range = 16;
c->max_qdiff = 4;
c->qmin = 10;
c->qmax = 51;
c->qcompress = 0.6;
c->codec_id = codec_id;
c->codec_type = AVMEDIA_TYPE_VIDEO;
c->bit_rate = 200000;
c->width = WIDTH;
c->height = HEIGHT;
c->time_base.den = STREAM_FRAME_RATE;
c->time_base.num = 1;
c->gop_size = STREAM_FRAME_RATE;
c->pix_fmt = STREAM_PIX_FMT;
if (c->codec_id == CODEC_ID_MPEG2VIDEO) {
c->max_b_frames = 2;
}
if (c->codec_id == CODEC_ID_MPEG1VIDEO){
c->mb_decision=2;
}
if (oc->oformat->flags & AVFMT_GLOBALHEADER)
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
if(codec_id == CODEC_ID_H264)
av_opt_set(c->priv_data, "preset", "slow", 0);
return st;
}
}}}
Below is the gdb report:
{{{
apolychrono at apolychrono-desktop:~/Software/ffmpeg-14-11-2011/doc/examples$
gdb muxing
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from
/home/apolychrono/Software/ffmpeg-14-11-2011/doc/examples/muxing...done.
(gdb) run ~/Videos/yuv/sample_352x288 at 10_YUV420p.yuv
Starting program:
/home/apolychrono/Software/ffmpeg-14-11-2011/doc/examples/muxing
~/Videos/yuv/sample_352x288 at 10_YUV420p.yuv
[Thread debugging using libthread_db enabled]
total-frames: 526
pixels: 101376
Program received signal SIGSEGV, Segmentation fault.
av_opt_find2 (obj=0x0, name=0xbb236e "preset", unit=0x0, search_flags=0,
target_obj=0x7fffffffd9d8, opt_flags=<value optimized out>) at
libavutil/opt.c:756
756 const AVClass *c = *(AVClass**)obj;
(gdb) bt
#0 av_opt_find2 (obj=0x0, name=0xbb236e "preset", unit=0x0,
search_flags=0, target_obj=0x7fffffffd9d8, opt_flags=<value optimized
out>) at libavutil/opt.c:756
#1 0x0000000000baab05 in av_opt_set (obj=0x0, name=0xbb236e "preset",
val=0xbb2369 "slow", search_flags=0) at libavutil/opt.c:228
#2 0x0000000000432792 in add_video_stream (oc=0x1520040,
codec_id=CODEC_ID_H264) at muxing.c:282
#3 0x00000000004333e1 in main (argc=2, argv=0x7fffffffe0d8) at
muxing.c:625
(gdb) disass $pc-32,$pc+32
Dump of assembler code from 0xba9f9d to 0xba9fdd:
0x0000000000ba9f9d <set_string_binary+349>: pop %rsp
0x0000000000ba9f9e <set_string_binary+350>: retq
0x0000000000ba9f9f: nop
0x0000000000ba9fa0 <av_opt_find2+0>: push %r15
0x0000000000ba9fa2 <av_opt_find2+2>: mov %ecx,%r15d
0x0000000000ba9fa5 <av_opt_find2+5>: push %r14
0x0000000000ba9fa7 <av_opt_find2+7>: mov %rdi,%r14
0x0000000000ba9faa <av_opt_find2+10>: push %r13
0x0000000000ba9fac <av_opt_find2+12>: mov %rdx,%r13
0x0000000000ba9faf <av_opt_find2+15>: push %r12
0x0000000000ba9fb1 <av_opt_find2+17>: push %rbp
0x0000000000ba9fb2 <av_opt_find2+18>: push %rbx
0x0000000000ba9fb3 <av_opt_find2+19>: mov %rsi,%rbx
0x0000000000ba9fb6 <av_opt_find2+22>: sub $0x28,%rsp
0x0000000000ba9fba <av_opt_find2+26>: test $0x1,%cl
=> 0x0000000000ba9fbd <av_opt_find2+29>: mov (%rdi),%rbp
0x0000000000ba9fc0 <av_opt_find2+32>: mov %r8,0x8(%rsp)
0x0000000000ba9fc5 <av_opt_find2+37>: je 0xbaa02e
<av_opt_find2+142>
0x0000000000ba9fc7 <av_opt_find2+39>: xor %r12d,%r12d
0x0000000000ba9fca <av_opt_find2+42>: test $0x2,%cl
0x0000000000ba9fcd <av_opt_find2+45>: je 0xbaa0f7
<av_opt_find2+343>
0x0000000000ba9fd3 <av_opt_find2+51>: movq $0x0,0x18(%rsp)
0x0000000000ba9fdc <av_opt_find2+60>: xor %edi,%edi
End of assembler dump.
(gdb) info all-registers
rax 0x0 0
rbx 0xbb236e 12264302
rcx 0x0 0
rdx 0x0 0
rsi 0xbb236e 12264302
rdi 0x0 0
rbp 0xbb2369 0xbb2369
rsp 0x7fffffffd970 0x7fffffffd970
r8 0x7fffffffd9d8 140737488345560
r9 0x8000000000000000 -9223372036854775808
r10 0x8000000000000000 -9223372036854775808
r11 0x8000000000000000 -9223372036854775808
r12 0x432044 4399172
r13 0x0 0
r14 0x0 0
r15 0x0 0
rip 0xba9fbd 0xba9fbd <av_opt_find2+29>
eflags 0x10246 [ PF ZF IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
st0 0 (raw 0x00000000000000000000)
st1 0 (raw 0x00000000000000000000)
st2 0 (raw 0x00000000000000000000)
st3 0 (raw 0x00000000000000000000)
st4 0 (raw 0x00000000000000000000)
st5 0 (raw 0x00000000000000000000)
st6 0 (raw 0x00000000000000000000)
st7 0 (raw 0x00000000000000000000)
fctrl 0x37f 895
fstat 0x0 0
ftag 0xffff 65535
fiseg 0x0 0
fioff 0x0 0
foseg 0x0 0
fooff 0x0 0
fop 0x0 0
xmm0 {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x1, 0x0},
v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x3ff0, 0x0, 0x0, 0x0,
0x0}, v4_int32 = {0x0, 0x3ff00000, 0x0, 0x0},
v2_int64 = {0x3ff0000000000000, 0x0}, uint128 =
0x00000000000000003ff0000000000000}
xmm1 {v4_float = {0x0, 0xffffffff, 0x0, 0x0}, v2_double =
{0xffffffffffffffff, 0x8000000000000000}, v16_int8 = {0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xf0, 0xbf, 0xff, 0xff, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff},
v8_int16 = {0x0, 0x0, 0x0, 0xbff0, 0xffff, 0xff00,
0xffff, 0xffff}, v4_int32 = {0x0, 0xbff00000, 0xff00ffff, 0xffffffff},
v2_int64 = {0xbff0000000000000, 0xffffffffff00ffff}, uint128 =
0xffffffffff00ffffbff0000000000000}
xmm2 {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x1,
0x8000000000000000}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f,
0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x66}, v8_int16 = {0x0, 0x0,
0x0, 0x3ff0, 0x6173, 0x706d, 0x656c, 0x665f},
v4_int32 = {0x0, 0x3ff00000, 0x706d6173, 0x665f656c}, v2_int64 =
{0x3ff0000000000000, 0x665f656c706d6173}, uint128 =
0x665f656c706d61733ff0000000000000}
xmm3 {v4_float = {0x0, 0xffffffff, 0x0, 0x0}, v2_double =
{0xffffffffffffffff, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0,
0xbff0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0,
0xbff00000, 0x0, 0x0}, v2_int64 = {0xbff0000000000000, 0x0}, uint128 =
0x0000000000000000bff0000000000000}
xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
{0x8000000000000000, 0x8000000000000000}, v16_int8 = {0x73, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x5f, 0x66, 0x6d, 0x74, 0x0, 0x38, 0x2d, 0x62, 0x69,
0x74}, v8_int16 = {0x6173, 0x706d, 0x656c, 0x665f, 0x746d,
0x3800, 0x622d, 0x7469}, v4_int32 = {0x706d6173, 0x665f656c,
0x3800746d, 0x7469622d}, v2_int64 = {0x665f656c706d6173,
0x7469622d3800746d}, uint128 = 0x7469622d3800746d665f656c706d6173}
xmm5 {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x0, 0x0},
v16_int8 = {0x0, 0x0, 0x0, 0xe0, 0x95, 0x9c, 0xe7, 0x3f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0xe000, 0x9c95, 0x3fe7, 0x0,
0x0, 0x0, 0x0}, v4_int32 = {0xe0000000, 0x3fe79c95,
0x0, 0x0}, v2_int64 = {0x3fe79c95e0000000, 0x0}, uint128 =
0x00000000000000003fe79c95e0000000}
xmm6 {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x1, 0x0},
v16_int8 = {0x6d, 0x7d, 0xbf, 0xbb, 0x27, 0xaf, 0xf5, 0x3f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x7d6d, 0xbbbf, 0xaf27, 0x3ff5, 0x0,
0x0, 0x0, 0x0}, v4_int32 = {0xbbbf7d6d,
0x3ff5af27, 0x0, 0x0}, v2_int64 = {0x3ff5af27bbbf7d6d, 0x0}, uint128 =
0x00000000000000003ff5af27bbbf7d6d}
xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x68, 0xc8, 0xbc, 0x3b, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0xc868, 0x3bbc, 0x0, 0x0,
0x0, 0x0}, v4_int32 = {0x0, 0x3bbcc868, 0x0, 0x0},
v2_int64 = {0x3bbcc86800000000, 0x0}, uint128 =
0x00000000000000003bbcc86800000000}
xmm8 {v4_float = {0x0, 0xfffffffd, 0x0, 0x0}, v2_double =
{0xffffffffffffffd2, 0x0}, v16_int8 = {0xe0, 0xe6, 0x35, 0x67, 0x9e, 0x6,
0x47, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xe6e0,
0x6735, 0x69e, 0xc047, 0x0, 0x0, 0x0, 0x0},
v4_int32 = {0x6735e6e0, 0xc047069e, 0x0, 0x0}, v2_int64 =
{0xc047069e6735e6e0, 0x0}, uint128 = 0x0000000000000000c047069e6735e6e0}
xmm9 {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x1, 0x0},
v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x3ff0, 0x0, 0x0, 0x0,
0x0}, v4_int32 = {0x0, 0x3ff00000, 0x0, 0x0},
v2_int64 = {0x3ff0000000000000, 0x0}, uint128 =
0x00000000000000003ff0000000000000}
xmm10 {v4_float = {0x0, 0xffffffff, 0x0, 0x0}, v2_double =
{0xffffffffffffffff, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0,
0xbff0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0,
0xbff00000, 0x0, 0x0}, v2_int64 = {0xbff0000000000000, 0x0}, uint128 =
0x0000000000000000bff0000000000000}
xmm11 {v4_float = {0x9689a800, 0x0, 0x0, 0x0}, v2_double = {0x0,
0x0}, v16_int8 = {0x6a, 0xa2, 0x65, 0x50, 0xf2, 0xea, 0x8f, 0xbd, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xa26a, 0x5065, 0xeaf2,
0xbd8f, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x5065a26a,
---Type <return> to continue, or q <return> to quit---
0xbd8feaf2, 0x0, 0x0}, v2_int64 = {0xbd8feaf25065a26a, 0x0}, uint128 =
0x0000000000000000bd8feaf25065a26a}
xmm12 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
v16_int8 = {0x29, 0xf2, 0x88, 0x6c, 0xa6, 0x49, 0xde, 0x3e, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xf229, 0x6c88, 0x49a6, 0x3ede, 0x0,
0x0, 0x0, 0x0}, v4_int32 = {0x6c88f229,
0x3ede49a6, 0x0, 0x0}, v2_int64 = {0x3ede49a66c88f229, 0x0}, uint128 =
0x00000000000000003ede49a66c88f229}
xmm13 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
v16_int8 = {0xb3, 0x12, 0x58, 0x17, 0x64, 0x46, 0xe6, 0x3b, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x12b3, 0x1758, 0x4664, 0x3be6, 0x0,
0x0, 0x0, 0x0}, v4_int32 = {0x175812b3,
0x3be64664, 0x0, 0x0}, v2_int64 = {0x3be64664175812b3, 0x0}, uint128 =
0x00000000000000003be64664175812b3}
xmm14 {v4_float = {0x0, 0x3, 0x0, 0x0}, v2_double = {0x2d, 0x0},
v16_int8 = {0xc0, 0x9, 0xf2, 0x16, 0xb5, 0xdf, 0x46, 0x40, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x9c0, 0x16f2, 0xdfb5, 0x4046, 0x0,
0x0, 0x0, 0x0}, v4_int32 = {0x16f209c0,
0x4046dfb5, 0x0, 0x0}, v2_int64 = {0x4046dfb516f209c0, 0x0}, uint128 =
0x00000000000000004046dfb516f209c0}
xmm15 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
mxcsr 0x1fa0 [ PE IM DM ZM OM UM PM ]
}}}
Thanks in advance.
--
Ticket URL: <http://ffmpeg.org/trac/ffmpeg/ticket/650>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list