[FFmpeg-trac] #6861(avutil:new): ABI broken by "add vector_dmac_scalar()"
FFmpeg
trac at avcodec.org
Fri Nov 24 16:45:07 EET 2017
#6861: ABI broken by "add vector_dmac_scalar()"
-------------------------------------+-------------------------------------
Reporter: cehoyos | Owner:
Type: defect | Status: new
Priority: important | Component: avutil
Version: 3.4 | Keywords: crash
Blocked By: | regression
Reproduced by developer: 0 | Blocking:
| Analyzed by developer: 0
-------------------------------------+-------------------------------------
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=882598
Crash on decoding AC-3 when updating (only) libavutil since
4dc2dd80dc78f4abb19052682bfb68d64a7a96d6
{{{
$ ffmpeg -f lavfi -i sine=d=1 test.ac3
}}}
{{{
(gdb) r -i test.ac3 -f null -
Starting program: ffmpeg_g -i test.ac3 -f null -
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
ffmpeg version N-85441-g9cd44e6 Copyright (c) 2000-2017 the FFmpeg
developers
built with gcc 4.7 (SUSE Linux)
configuration: --enable-shared
libavutil 55. 60.100 / 55. 78.100
libavcodec 57. 92.100 / 57. 92.100
libavformat 57. 72.100 / 57. 72.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 84.101 / 6. 84.101
libswscale 4. 7.100 / 4. 7.100
libswresample 2. 8.100 / 2. 8.100
[ac3 @ 0x63a3c0] Estimating duration from bitrate, this may be inaccurate
Input #0, ac3, from 'test.ac3':
Duration: 00:00:01.01, start: 0.000000, bitrate: 96 kb/s
Stream #0:0: Audio: ac3, 44100 Hz, mono, fltp, 96 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (ac3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff55553b3 in ff_vector_dmul_scalar_avx () from
libavutil/libavutil.so.55
(gdb) bt
#0 0x00007ffff55553b3 in ff_vector_dmul_scalar_avx () from
libavutil/libavutil.so.55
#1 0x00007ffff5d70b75 in do_imdct (channels=1, s=0x64b1c0) at
libavcodec/ac3dec.c:713
#2 decode_audio_block (s=s at entry=0x64b1c0, blk=6675712, blk at entry=0) at
libavcodec/ac3dec.c:1449
#3 0x00007ffff5d722bb in ac3_decode_frame (avctx=<optimized out>,
data=<optimized out>,
got_frame_ptr=0x7fffffffd23c, avpkt=<optimized out>) at
libavcodec/ac3dec.c:1610
#4 0x00007ffff5e1a14a in avcodec_decode_audio4
(avctx=avctx at entry=0x63c940, frame=0x66a000,
got_frame_ptr=got_frame_ptr at entry=0x7fffffffd23c,
avpkt=avpkt at entry=0x7fffffffd730)
at libavcodec/decode.c:531
#5 0x00007ffff5e1aae8 in do_decode (avctx=avctx at entry=0x63c940,
pkt=pkt at entry=0x7fffffffd730)
at libavcodec/decode.c:229
#6 0x00007ffff5e1aef1 in avcodec_send_packet (avctx=avctx at entry=0x63c940,
avpkt=<optimized out>,
avpkt at entry=0x7fffffffd730) at libavcodec/decode.c:319
#7 0x0000000000425e2a in decode (pkt=0x7fffffffd730,
got_frame=0x7fffffffd428, frame=0x66b300, avctx=0x63c940)
at ffmpeg.c:2254
#8 decode_audio (ist=ist at entry=0x63daa0, pkt=0x7fffffffd730,
got_output=got_output at entry=0x7fffffffd428,
decode_failed=decode_failed at entry=0x7fffffffd42c) at ffmpeg.c:2311
#9 0x0000000000429230 in process_input_packet (no_eof=0,
pkt=0x7fffffffd6d0, ist=0x63daa0) at ffmpeg.c:2629
#10 process_input (file_index=6544040) at ffmpeg.c:4390
#11 transcode_step () at ffmpeg.c:4501
#12 transcode () at ffmpeg.c:4555
#13 0x0000000000409e62 in main (argc=<optimized out>, argv=<optimized
out>) at ffmpeg.c:4760
(gdb) disass $pc-19,$pc+32
Dump of assembler code from 0x7ffff55553a0 to 0x7ffff55553d3:
0x00007ffff55553a0 <ff_vector_dmul_scalar_avx+0>: vmovlhps
%xmm0,%xmm0,%xmm0
0x00007ffff55553a4 <ff_vector_dmul_scalar_avx+4>: vinsertf128
$0x1,%xmm0,%ymm0,%ymm0
0x00007ffff55553aa <ff_vector_dmul_scalar_avx+10>: lea
-0x40(,%edx,8),%rdx
=> 0x00007ffff55553b3 <ff_vector_dmul_scalar_avx+19>: vmulpd
(%rsi,%rdx,1),%ymm0,%ymm1
0x00007ffff55553b8 <ff_vector_dmul_scalar_avx+24>: vmulpd
0x20(%rsi,%rdx,1),%ymm0,%ymm2
0x00007ffff55553be <ff_vector_dmul_scalar_avx+30>: vmovaps
%ymm1,(%rdi,%rdx,1)
0x00007ffff55553c3 <ff_vector_dmul_scalar_avx+35>: vmovaps
%ymm2,0x20(%rdi,%rdx,1)
0x00007ffff55553c9 <ff_vector_dmul_scalar_avx+41>: sub $0x40,%rdx
0x00007ffff55553cd <ff_vector_dmul_scalar_avx+45>: jge
0x7ffff55553b3 <ff_vector_dmul_scalar_avx+19>
0x00007ffff55553cf <ff_vector_dmul_scalar_avx+47>: vzeroupper
0x00007ffff55553d2 <ff_vector_dmul_scalar_avx+50>: retq
End of assembler dump.
(gdb) info all-register
rax 0x66a2a0 6726304
rbx 0x65e300 6677248
rcx 0x65dd00 6675712
rdx 0x32f07c0 53413824
rsi 0x65c100 6668544
rdi 0x66b760 6731616
rbp 0x65e100 0x65e100
rsp 0x7fffffffce48 0x7fffffffce48
r8 0x80 128
r9 0x65c100 6668544
r10 0x66a980 6728064
r11 0x66afa0 6729632
r12 0x64b5c0 6600128
r13 0x0 0
r14 0x64b1c0 6599104
r15 0x1 1
rip 0x7ffff55553b3 0x7ffff55553b3
<ff_vector_dmul_scalar_avx+19>
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.010737659167264571302894782083015013 (raw
0x3ff8afed01bd6030746e)
st7 0.99994234967602390229575448632459711 (raw
0x3ffefffc38c9be717754)
fctrl 0x37f 895
fstat 0x220 544
ftag 0xffff 65535
fiseg 0x7fff 32767
fioff 0xf50234a7 -184404825
foseg 0x7fff 32767
fooff 0xffffcba8 -13400
fop 0x0 0
mxcsr 0x1fa0 [ PE IM DM ZM OM UM PM ]
ymm0 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0, 0x90, 0x81, 0x38, 0x0, 0x0, 0x96, 0x35, 0x0, 0x90,
0x81, 0x38, 0x0, 0x0, 0x96, 0x35, 0x0,
0x90, 0x81, 0x38, 0x0, 0x0, 0x96, 0x35, 0x0, 0x90, 0x81, 0x38, 0x0,
0x0, 0x96, 0x35}, v16_int16 = {0x9000,
0x3881, 0x0, 0x3596, 0x9000, 0x3881, 0x0, 0x3596, 0x9000, 0x3881, 0x0,
0x3596, 0x9000, 0x3881, 0x0, 0x3596},
v8_int32 = {0x38819000, 0x35960000, 0x38819000, 0x35960000, 0x38819000,
0x35960000, 0x38819000, 0x35960000},
v4_int64 = {0x3596000038819000, 0x3596000038819000, 0x3596000038819000,
0x3596000038819000}, v2_int128 = {
0x35960000388190003596000038819000,
0x35960000388190003596000038819000}}
ymm1 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0xae, 0x44, 0xf5, 0x3b, 0x90, 0x33, 0xbe, 0x3c, 0xf6, 0x8a,
0x1d, 0x3d, 0xd4, 0x9c, 0x59, 0x3d,
0x0 <repeats 16 times>}, v16_int16 = {0x44ae, 0x3bf5, 0x3390, 0x3cbe,
0x8af6, 0x3d1d, 0x9cd4, 0x3d59, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x3bf544ae,
0x3cbe3390, 0x3d1d8af6, 0x3d599cd4, 0x0, 0x0,
0x0, 0x0}, v4_int64 = {0x3cbe33903bf544ae, 0x3d599cd43d1d8af6, 0x0,
0x0}, v2_int128 = {
0x3d599cd43d1d8af63cbe33903bf544ae,
0x00000000000000000000000000000000}}
ymm2 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0xd4, 0xeb, 0xdb, 0x39, 0x3b, 0x7d, 0x81, 0x3c, 0xb6, 0x9d,
0xfe, 0x3c, 0x54, 0x10, 0x3c, 0x3d,
0x0 <repeats 16 times>}, v16_int16 = {0xebd4, 0x39db, 0x7d3b, 0x3c81,
0x9db6, 0x3cfe, 0x1054, 0x3d3c, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x39dbebd4,
0x3c817d3b, 0x3cfe9db6, 0x3d3c1054, 0x0, 0x0,
0x0, 0x0}, v4_int64 = {0x3c817d3b39dbebd4, 0x3d3c10543cfe9db6, 0x0,
0x0}, v2_int128 = {
0x3d3c10543cfe9db63c817d3b39dbebd4,
0x00000000000000000000000000000000}}
ymm3 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0, 0xc0, 0xb9, 0x36, 0x0, 0x0, 0xcc, 0x36, 0x0, 0x48, 0x8,
0xb8, 0x0, 0xfc, 0x10, 0x38,
0x0 <repeats 16 times>}, v16_int16 = {0xc000, 0x36b9, 0x0, 0x36cc,
0x4800, 0xb808, 0xfc00, 0x3810, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x36b9c000, 0x36cc0000,
0xb8084800, 0x3810fc00, 0x0, 0x0, 0x0,
0x0}, v4_int64 = {0x36cc000036b9c000, 0x3810fc00b8084800, 0x0, 0x0},
v2_int128 = {
0x3810fc00b808480036cc000036b9c000,
0x00000000000000000000000000000000}}
ymm4 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0xb6, 0x9d, 0xfe, 0x3c, 0xf6, 0x8a, 0x1d, 0x3d, 0x54, 0x10,
0x3c, 0x3d, 0xd4, 0x9c, 0x59, 0x3d,
0x0 <repeats 16 times>}, v16_int16 = {0x9db6, 0x3cfe, 0x8af6, 0x3d1d,
0x1054, 0x3d3c, 0x9cd4, 0x3d59, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x3cfe9db6,
0x3d1d8af6, 0x3d3c1054, 0x3d599cd4, 0x0, 0x0,
0x0, 0x0}, v4_int64 = {0x3d1d8af63cfe9db6, 0x3d599cd43d3c1054, 0x0,
0x0}, v2_int128 = {
0x3d599cd43d3c10543d1d8af63cfe9db6,
0x00000000000000000000000000000000}}
ymm5 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0, 0x64, 0x1c, 0x38, 0x0, 0x48, 0x8, 0xb8, 0x0, 0x18, 0x1,
0x38, 0x0, 0xfc, 0x10, 0x38,
0x0 <repeats 16 times>}, v16_int16 = {0x6400, 0x381c, 0x4800, 0xb808,
0x1800, 0x3801, 0xfc00, 0x3810, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x381c6400,
0xb8084800, 0x38011800, 0x3810fc00, 0x0, 0x0,
0x0, 0x0}, v4_int64 = {0xb8084800381c6400, 0x3810fc0038011800, 0x0,
0x0}, v2_int128 = {
0x3810fc0038011800b8084800381c6400,
0x00000000000000000000000000000000}}
ymm6 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0xd4, 0xeb, 0xdb, 0x39, 0xae, 0x44, 0xf5, 0x3b, 0x3b, 0x7d,
0x81, 0x3c, 0x90, 0x33, 0xbe, 0x3c,
0x0 <repeats 16 times>}, v16_int16 = {0xebd4, 0x39db, 0x44ae, 0x3bf5,
0x7d3b, 0x3c81, 0x3390, 0x3cbe, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x39dbebd4,
0x3bf544ae, 0x3c817d3b, 0x3cbe3390, 0x0, 0x0,
0x0, 0x0}, v4_int64 = {0x3bf544ae39dbebd4, 0x3cbe33903c817d3b, 0x0,
0x0}, v2_int128 = {
0x3cbe33903c817d3b3bf544ae39dbebd4,
0x00000000000000000000000000000000}}
ymm7 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0, 0x90, 0x81, 0x38, 0x0, 0xc0, 0xb9, 0x36, 0x0, 0x0,
0x96, 0x35, 0x0, 0x0, 0xcc, 0x36,
0x0 <repeats 16 times>}, v16_int16 = {0x9000, 0x3881, 0xc000, 0x36b9,
0x0, 0x3596, 0x0, 0x36cc, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x38819000, 0x36b9c000,
0x35960000, 0x36cc0000, 0x0, 0x0, 0x0,
0x0}, v4_int64 = {0x36b9c00038819000, 0x36cc000035960000, 0x0, 0x0},
v2_int128 = {
0x36cc00003596000036b9c00038819000,
0x00000000000000000000000000000000}}
ymm8 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0 <repeats 24
times>}, v16_int16 = {0x0, 0x0, 0x0,
0x8000, 0x0 <repeats 12 times>}, v8_int32 = {0x0, 0x80000000, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {
0x8000000000000000, 0x0, 0x0, 0x0}, v2_int128 =
{0x00000000000000008000000000000000,
0x00000000000000000000000000000000}}
ymm9 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0 <repeats 24
times>}, v16_int16 = {0x0, 0x0, 0x0,
0x8000, 0x0 <repeats 12 times>}, v8_int32 = {0x0, 0x80000000, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {
0x8000000000000000, 0x0, 0x0, 0x0}, v2_int128 =
{0x00000000000000008000000000000000,
0x00000000000000000000000000000000}}
ymm10 {v8_float = {0xffffcfa4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0}, v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x16, 0x70, 0x41, 0xc6, 0x58, 0xac, 0x98, 0xb5, 0x0 <repeats
24 times>}, v16_int16 = {0x7016,
0xc641, 0xac58, 0xb598, 0x0 <repeats 12 times>}, v8_int32 =
{0xc6417016, 0xb598ac58, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0}, v4_int64 = {0xb598ac58c6417016, 0x0, 0x0, 0x0}, v2_int128 =
{0x0000000000000000b598ac58c6417016,
0x00000000000000000000000000000000}}
ymm11 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0, 0x0, 0x0, 0xb8, 0x76, 0x19, 0x1f, 0xb9, 0x0 <repeats 24
times>}, v16_int16 = {0x0, 0xb800,
0x1976, 0xb91f, 0x0 <repeats 12 times>}, v8_int32 = {0xb8000000,
0xb91f1976, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_int64 = {0xb91f1976b8000000, 0x0, 0x0, 0x0}, v2_int128 =
{0x0000000000000000b91f1976b8000000,
0x00000000000000000000000000000000}}
ymm12 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16
times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 =
{0x00000000000000000000000000000000,
0x00000000000000000000000000000000}}
ymm13 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16
times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 =
{0x00000000000000000000000000000000,
0x00000000000000000000000000000000}}
ymm14 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0xa0, 0x83, 0x47, 0x3, 0x1d, 0x3c, 0x8a, 0xb5, 0x0 <repeats
24 times>}, v16_int16 = {0x83a0,
0x347, 0x3c1d, 0xb58a, 0x0 <repeats 12 times>}, v8_int32 = {0x34783a0,
0xb58a3c1d, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0}, v4_int64 = {0xb58a3c1d034783a0, 0x0, 0x0, 0x0}, v2_int128 =
{0x0000000000000000b58a3c1d034783a0,
0x00000000000000000000000000000000}}
ymm15 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_double = {0x0, 0x0, 0x0, 0x0},
v32_int8 = {0xa0, 0x83, 0x47, 0x3, 0x1d, 0x3c, 0xaa, 0xb5, 0x0 <repeats
24 times>}, v16_int16 = {0x83a0,
0x347, 0x3c1d, 0xb5aa, 0x0 <repeats 12 times>}, v8_int32 = {0x34783a0,
0xb5aa3c1d, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0}, v4_int64 = {0xb5aa3c1d034783a0, 0x0, 0x0, 0x0}, v2_int128 =
{0x0000000000000000b5aa3c1d034783a0,
0x00000000000000000000000000000000}}
}}}
Also reproducible using a 3.3 binary as in the Debian report.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6861>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list