[Bug lto/85132] New: ffmpeg runtime segfault with lto

manuel.lauss at googlemail dot com gcc-bugzilla@gcc.gnu.org
Fri Mar 30 18:31:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85132

            Bug ID: 85132
           Summary: ffmpeg runtime segfault with lto
           Product: gcc
           Version: 8.0.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: manuel.lauss at googlemail dot com
                CC: marxin at gcc dot gnu.org
  Target Milestone: ---

ffmpeg-3.4.2 built with gcc-8 as of 20180330 and LTO enabled causes a runtime
segfault:

Thread 1 "mpv" received signal SIGSEGV, Segmentation fault.
0x00007ffff686b305 in ff_sine_window_init (window=0x7ffff739a2c0 <ff_sine_960>,
n=960) at src/libavcodec/sinewin_tablegen.h:73
73              window[i] = SIN_FIX(sinf((i + 0.5) * (M_PI / (2.0 * n))));
(gdb) bt
#0  0x00007ffff686b305 in ff_sine_window_init (window=0x7ffff739a2c0
<ff_sine_960>, n=960) at src/libavcodec/sinewin_tablegen.h:73
#1  0x00007ffff6861d54 in aac_static_table_init () at
src/libavcodec/aacdec_template.c:1142
#2  0x00007ffff511d187 in __pthread_once_slow (once_control=0x7ffff7b4cf20
<aac_table_init.lto_priv>, init_routine=0x7ffff6861256 <aac_static_table_init>)
at pthread_once.c:116
#3  0x00007ffff6862aae in aac_decode_init (avctx=0xa5ef00) at
src/libavcodec/aacdec_template.c:1159
#4  0x00007ffff6ecbef6 in avcodec_open2 (avctx=0xa5ef00, codec=<optimized out>,
options=<optimized out>) at src/libavcodec/utils.c:1020
#5  0x0000000000502b3a in ?? ()
#6  0x00000000004fb7be in ?? ()
#7  0x000000000045afb7 in ?? ()
#8  0x000000000045b8af in ?? ()
#9  0x00000000004d3246 in ?? ()
#10 0x000000000040fa21 in ?? ()
#11 0x00007ffff4c8854b in __libc_start_main (main=0x40f9d0, argc=2,
argv=0x7fffffffd1c8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffd1b8)
    at ../csu/libc-start.c:308
#12 0x000000000040fb9a in ?? ()
(gdb) disass
Dump of assembler code for function ff_sine_window_init:
   0x00007ffff686b2c9 <+0>:     push   %r12
   0x00007ffff686b2cb <+2>:     mov    %rdi,%r12
   0x00007ffff686b2ce <+5>:     push   %rbp
   0x00007ffff686b2cf <+6>:     mov    %esi,%ebp
   0x00007ffff686b2d1 <+8>:     push   %rbx
   0x00007ffff686b2d2 <+9>:     xor    %ebx,%ebx
   0x00007ffff686b2d4 <+11>:    cmp    %ebx,%ebp
   0x00007ffff686b2d6 <+13>:    jle    0x7ffff686b310 <ff_sine_window_init+71>
   0x00007ffff686b2d8 <+15>:    vmovsd 0x878108(%rip),%xmm2        #
0x7ffff70e33e8
   0x00007ffff686b2e0 <+23>:    vcvtsi2sd %ebp,%xmm0,%xmm0
   0x00007ffff686b2e4 <+27>:    vaddsd %xmm0,%xmm0,%xmm0
   0x00007ffff686b2e8 <+31>:    vcvtsi2sd %ebx,%xmm1,%xmm1
   0x00007ffff686b2ec <+35>:    vaddsd 0x87811c(%rip),%xmm1,%xmm1        #
0x7ffff70e3410
   0x00007ffff686b2f4 <+43>:    vdivsd %xmm0,%xmm2,%xmm0
   0x00007ffff686b2f8 <+47>:    vmulsd %xmm1,%xmm0,%xmm0
   0x00007ffff686b2fc <+51>:    vcvtsd2ss %xmm0,%xmm0,%xmm0
   0x00007ffff686b300 <+55>:    callq  0x7ffff6801db0 <sinf@plt>
=> 0x00007ffff686b305 <+60>:    vmovss %xmm0,(%r12,%rbx,4)
   0x00007ffff686b30b <+66>:    inc    %rbx
   0x00007ffff686b30e <+69>:    jmp    0x7ffff686b2d4 <ff_sine_window_init+11>
   0x00007ffff686b310 <+71>:    pop    %rbx
   0x00007ffff686b311 <+72>:    pop    %rbp
   0x00007ffff686b312 <+73>:    pop    %r12
   0x00007ffff686b314 <+75>:    retq   
End of assembler dump.
(gdb) info registers
rax            0x0                 0
rbx            0x0                 0
rcx            0x1                 1
rdx            0x78                120
rsi            0x3c0               960
rdi            0x7ffff739a2c0      140737341137600
rbp            0x3c0               0x3c0
rsp            0x7fffffffc840      0x7fffffffc840
r8             0x7fffffffa850      140737488332880
r9             0x7                 7
r10            0xfffffffffffffd07  -761
r11            0x7ffff5682c90      140737310633104
r12            0x7ffff739a2c0      140737341137600
r13            0x7fffffffc9f8      140737488341496
r14            0x0                 0
r15            0x0                 0
rip            0x7ffff686b305      0x7ffff686b305 <ff_sine_window_init+60>
eflags         0x10202             [ IF RF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0


Without LTO it's fine, the assembly of the faulting function is the same.
I tried to isolate a testcase but failed.

ffmpeg built with:
configure --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64
--docdir=/usr/share/doc/ffmpeg-3.4.2-r1/html --mandir=/usr/share/man
--enable-share
d --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++
--ar=x86_64-pc-linux-gnu-ar --optflags=-O3 -ggdb -march=znver1 -mtune=znver1
-flto=16 -fno-fat-lto-objects -fno-strict-aliasing -fexpensive-optimizatio
ns -Wno-deprecated -pipe --disable-static --enable-avfilter --enable-avresample
--disable-stripping --enable-nonfree --enable-version3 --disable-indev=alsa
--disable-indev=oss --disable-indev=jack --disable-outde
v=alsa --disable-outdev=oss --enable-version3 --enable-version3 --enable-bzlib
--disable-runtime-cpudetect --disable-debug --disable-gcrypt --enable-gnutls
--enable-gmp --enable-gpl --enable-hardcoded-tables --en
able-iconv --enable-lzma --enable-network --disable-opencl --enable-openssl
--enable-postproc --disable-libsmbclient --enable-ffplay --enable-sdl2
--disable-vaapi --enable-vdpau --enable-xlib --enable-libxcb --en
able-libxcb-shm --enable-libxcb-xfixes --enable-zlib --disable-libcdio
--disable-libiec61883 --disable-libdc1394 --disable-libcaca --enable-openal
--enable-opengl --enable-libv4l2 --enable-libpulse --disable-libd
rm --enable-libopencore-amrwb --enable-libopencore-amrnb --disable-libfdk-aac
--enable-libopenjpeg --enable-libbluray --disable-libcelt --disable-libgme
--enable-libgsm --disable-mmal --disable-libmodplug --enabl
e-libopus --disable-libilbc --disable-librtmp --disable-libssh
--enable-libspeex --enable-librsvg --enable-libvorbis --enable-libvpx
--disable-libzvbi --disable-appkit --disable-libbs2b --disable-chromaprint --di
sable-libflite --disable-frei0r --disable-libfribidi --enable-fontconfig
--disable-ladspa --disable-libass --enable-libfreetype --disable-librubberband
--disable-libzmq --disable-libzimg --disable-libsoxr --enabl
e-pthreads --enable-libvo-amrwbenc --enable-libmp3lame --disable-libkvazaar
--enable-nvenc --disable-libopenh264 --disable-libsnappy --enable-libtheora
--disable-libtwolame --enable-libwavpack --enable-libwebp --
enable-libx264 --enable-libx265 --disable-libxvid --disable-armv5te
--disable-armv6 --disable-armv6t2 --disable-neon --disable-vfp --disable-vfpv3
--disable-armv8 --disable-mipsdsp --disable-mipsdspr2 --disable-m
ipsfpu --disable-altivec --disable-amd3dnow --disable-amd3dnowext
--disable-fma4 --disable-xop --enable-pic --cpu=znver1 --enable-lto
--disable-doc --disable-htmlpages --enable-manpages

Thanks!
      Manuel


More information about the Gcc-bugs mailing list