[FFmpeg-trac] #9656(avcodec:new): Linking with libavcodec causes process to hang when returning quickly from main()

FFmpeg trac at avcodec.org
Mon Feb 21 00:32:53 EET 2022


#9656: Linking with libavcodec causes process to hang when returning quickly from
main()
---------------------------------+----------------------------------
             Reporter:  Gramner  |                     Type:  defect
               Status:  new      |                 Priority:  normal
            Component:  avcodec  |                  Version:  4.4.1
             Keywords:           |               Blocked By:
             Blocking:           |  Reproduced by developer:  0
Analyzed by developer:  0        |
---------------------------------+----------------------------------
 The following minimal example consistently hangs on MSYS2 (Windows),
 although I haven't tested it on other systems:


 {{{
 #include <libavcodec/avcodec.h>

 int main(void) {
     avcodec_version();
     return 0;
 }
 }}}

 {{{
 gcc -O2 -o hang hang.c -lavcodec && ./hang
 }}}

 {{{
 #0  0x00007ffc7a26cdf4 in ntdll!ZwWaitForSingleObject () from
 C:\WINDOWS\SYSTEM32\ntdll.dll
 #1  0x00007ffc77ca1a5e in WaitForSingleObjectEx () from
 C:\WINDOWS\System32\KernelBase.dll
 #2  0x00007ffc5c402eff in ?? () from
 C:\msys64\mingw64\bin\libwinpthread-1.dll
 #3  0x00007ffc5c40571f in ?? () from
 C:\msys64\mingw64\bin\libwinpthread-1.dll
 #4  0x00007ffc4d83452a in ?? () from C:\msys64\mingw64\bin\libgomp-1.dll
 #5  0x00007ffc4d83a775 in ?? () from C:\msys64\mingw64\bin\libgomp-1.dll
 #6  0x00007ffc4d81117c in ?? () from C:\msys64\mingw64\bin\libgomp-1.dll
 #7  0x00007ffc4d81125d in ?? () from C:\msys64\mingw64\bin\libgomp-1.dll
 #8  0x00007ffc7a1e9a1d in ntdll!RtlActivateActivationContextUnsafeFast ()
 from C:\WINDOWS\SYSTEM32\ntdll.dll
 #9  0x00007ffc7a22db91 in ntdll!LdrShutdownProcess () from
 C:\WINDOWS\SYSTEM32\ntdll.dll
 #10 0x00007ffc7a22da2d in ntdll!RtlExitUserProcess () from
 C:\WINDOWS\SYSTEM32\ntdll.dll
 #11 0x00007ffc783ee0ab in KERNEL32!FatalExit () from
 C:\WINDOWS\System32\kernel32.dll
 #12 0x00007ffc78faa155 in msvcrt!_exit () from
 C:\WINDOWS\System32\msvcrt.dll
 #13 0x00007ffc78faa7c5 in msvcrt!_initterm_e () from
 C:\WINDOWS\System32\msvcrt.dll
 #14 0x00007ff7308214a5 in __tmainCRTStartup () at C:/M/mingw-w64-crt-
 git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:324
 #15 0x00007ff7308214e6 in mainCRTStartup () at C:/M/mingw-w64-crt-
 git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:202
 }}}

 If the return from main() is delayed just a bit (for example by calling
 printf() first), the problem goes away, so it's likely some kind of race
 condition.

 This is using the MSYS2-provided libavcodec so it might be caused by some
 third-party library libavcodec is linking with, but if so I don't know
 which one:
 {{{
 ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
   built with gcc 11.2.0 (Rev8, Built by MSYS2 project)
   configuration: --prefix=/mingw64 --target-os=mingw32 --arch=x86_64
 --cc=gcc --cxx=g++ --disable-debug --enable-amf --enable-dxva2 --enable-
 d3d11va --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl
 --enable-iconv --enable-libaom --enable-libass --enable-libbluray
 --enable-libcaca --enable-libcelt --enable-libdav1d --enable-libfreetype
 --enable-libgme --enable-libgsm --enable-libmfx --enable-libmodplug
 --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb
 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr
 --enable-libspeex --enable-libsrt --enable-libtheora --enable-libvorbis
 --enable-libx264 --enable-libx265 --enable-libxvid --enable-libvpx
 --enable-libwebp --enable-libxml2 --enable-libzimg --enable-nvenc
 --enable-openal --enable-pic --enable-postproc --enable-runtime-cpudetect
 --enable-swresample --enable-version3 --enable-vulkan --enable-zlib
 --disable-doc --enable-frei0r --enable-libsvtav1 --enable-librav1e
 --enable-librsvg --logfile=config.log --enable-shared
   libavutil      56. 70.100 / 56. 70.100
   libavcodec     58.134.100 / 58.134.100
   libavformat    58. 76.100 / 58. 76.100
   libavdevice    58. 13.100 / 58. 13.100
   libavfilter     7.110.100 /  7.110.100
   libswscale      5.  9.100 /  5.  9.100
   libswresample   3.  9.100 /  3.  9.100
   libpostproc    55.  9.100 / 55.  9.100
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9656>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list