Crash in libavcodec_plugin.dll on Windows
I have an application that displays multiple RTSP streams, and it occasionally crashes when calling libvlc_media_player_stop(). The backtrace is at the end of this description.
The attached source file is the test program I used to reproduce the problem in isolation. The crash is triggered when libvlc_media_player_stop() is called. I have a small patch that effectively disables hardware acceleration in libavcodec_plugin, which avoids the crash but results in unreasonably high CPU utilization.
Thread 1397 received signal SIGSEGV, Segmentation fault.
[Switching to Thread 9080.0x1904]
av_buffer_unref (buf=buf@entry=0x1b7e804c2c0) at libavutil/buffer.c:130
130 libavutil/buffer.c: No such file or directory.
(gdb) bt
[#0](https://code.videolan.org/videolan/vlc/-/issues/0) av_buffer_unref (buf=buf@entry=0x1b7e804c2c0) at libavutil/buffer.c:130
[#1](https://code.videolan.org/videolan/vlc/-/issues/1) 0x00007ffcfc2f733b in ff_dxva2_decode_uninit (avctx=<optimized out>) at libavcodec/dxva2.c:727
[#2](https://code.videolan.org/videolan/vlc/-/issues/2) 0x00007ffcfc433a32 in avcodec_close (avctx=avctx@entry=0x1b785586a80) at libavcodec/utils.c:1171
[#3](https://code.videolan.org/videolan/vlc/-/issues/3) 0x00007ffcfbd10799 in avcodec_free_context (pavctx=0x60d29f288) at libavcodec/options.c:179
[#4](https://code.videolan.org/videolan/vlc/-/issues/4) 0x00007ffcfb8b4e9c in EndVideoDec (obj=<optimized out>) at ../../extras/package/win32/../../../modules/codec/avcodec/video.c:1275
[#5](https://code.videolan.org/videolan/vlc/-/issues/5) 0x00007ffd066a803a in vlc_module_unload (obj=obj@entry=0x1b7a417ba00, module=<optimized out>,
deinit=deinit@entry=0x7ffd066a76f0 <generic_stop>) at ../../extras/package/win32/../../../src/modules/modules.c:343
[#6](https://code.videolan.org/videolan/vlc/-/issues/6) 0x00007ffd066a8105 in module_unneed (obj=obj@entry=0x1b7a417ba00, module=<optimized out>)
at ../../extras/package/win32/../../../src/modules/modules.c:378
[#7](https://code.videolan.org/videolan/vlc/-/issues/7) 0x00007ffd066c48c6 in UnloadDecoder (p_dec=p_dec@entry=0x1b7a417ba00) at ../../extras/package/win32/../../../src/input/decoder.c:201
[#8](https://code.videolan.org/videolan/vlc/-/issues/8) 0x00007ffd066c5233 in DeleteDecoder (p_dec=0x1b7a417ba00) at ../../extras/package/win32/../../../src/input/decoder.c:1818
[#9](https://code.videolan.org/videolan/vlc/-/issues/9) 0x00007ffd066c885a in input_DecoderDelete (p_dec=<optimized out>) at ../../extras/package/win32/../../../src/input/decoder.c:2020
[#10](https://code.videolan.org/videolan/vlc/-/issues/10) 0x00007ffd066caac9 in EsDestroyDecoder (p_es=<optimized out>, p_es=<optimized out>, out=0x1b7c2031fe0)
at ../../extras/package/win32/../../../src/input/es_out.c:1713
[#11](https://code.videolan.org/videolan/vlc/-/issues/11) 0x00007ffd066cc0f1 in EsUnselect (out=out@entry=0x1b7c2031fe0, es=0x1b7f241baa0, b_update=<optimized out>)
at ../../extras/package/win32/../../../src/input/es_out.c:1841
[#12](https://code.videolan.org/videolan/vlc/-/issues/12) 0x00007ffd066cf565 in EsOutControlLocked (args=<optimized out>, i_query=<optimized out>, out=0x1b7c2031fe0)
at ../../extras/package/win32/../../../src/input/es_out.c:2323
[#13](https://code.videolan.org/videolan/vlc/-/issues/13) EsOutControl (out=0x1b7c2031fe0, i_query=<optimized out>, args=<optimized out>)
at ../../extras/package/win32/../../../src/input/es_out.c:2900
[#14](https://code.videolan.org/videolan/vlc/-/issues/14) 0x00007ffd066d1cb3 in es_out_vaControl (args=0x60d29f620 "", i_query=<optimized out>, out=<optimized out>)
at ../../extras/package/win32/../../../include/vlc_es_out.h:141
[#15](https://code.videolan.org/videolan/vlc/-/issues/15) es_out_Control (out=<optimized out>, i_query=<optimized out>) at ../../extras/package/win32/../../../include/vlc_es_out.h:150
[#16](https://code.videolan.org/videolan/vlc/-/issues/16) 0x00007ffd066d372e in ControlLocked (args=<optimized out>, i_query=<optimized out>, p_out=<optimized out>)
at ../../extras/package/win32/../../../src/input/es_out_timeshift.c:664
[#17](https://code.videolan.org/videolan/vlc/-/issues/17) Control (p_out=<optimized out>, i_query=<optimized out>, args=<optimized out>)
at ../../extras/package/win32/../../../src/input/es_out_timeshift.c:764
[#18](https://code.videolan.org/videolan/vlc/-/issues/18) 0x00007ffd066d5383 in es_out_vaControl (args=0x60d29f740 "", i_query=65536, out=<optimized out>)
at ../../extras/package/win32/../../../include/vlc_es_out.h:141
[#19](https://code.videolan.org/videolan/vlc/-/issues/19) es_out_Control (out=<optimized out>, i_query=i_query@entry=65536) at ../../extras/package/win32/../../../include/vlc_es_out.h:150
[#20](https://code.videolan.org/videolan/vlc/-/issues/20) 0x00007ffd066d5fab in es_out_SetMode (i_mode=0, p_out=<optimized out>) at ../../extras/package/win32/../../../src/input/es_out.h:95
[#21](https://code.videolan.org/videolan/vlc/-/issues/21) End (p_input=p_input@entry=0x1b79d4b85e0) at ../../extras/package/win32/../../../src/input/input.c:1484
[#22](https://code.videolan.org/videolan/vlc/-/issues/22) 0x00007ffd066dd9ab in Run (data=0x1b79d4b85e0) at ../../extras/package/win32/../../../src/input/input.c:508
[#23](https://code.videolan.org/videolan/vlc/-/issues/23) 0x00007ffd0672a516 in vlc_entry (p=0x1b79163b6d0) at ../../extras/package/win32/../../../src/win32/thread.c:470
[#24](https://code.videolan.org/videolan/vlc/-/issues/24) 0x00007ffd3601aa96 in msvcrt!_beginthreadex () from /cygdrive/c/WINDOWS/System32/msvcrt.dll
[#25](https://code.videolan.org/videolan/vlc/-/issues/25) 0x00007ffd3601ab6c in msvcrt!_endthreadex () from /cygdrive/c/WINDOWS/System32/msvcrt.dll
[#26](https://code.videolan.org/videolan/vlc/-/issues/26) 0x00007ffd357e4034 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL
[#27](https://code.videolan.org/videolan/vlc/-/issues/27) 0x00007ffd383b3691 in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll
[#28](https://code.videolan.org/videolan/vlc/-/issues/28) 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)