<div dir="ltr">I've seen this in every version of libvlc I tested since 3.0.1, including 3.0.6. I tried the Win32 and Win64 builds, and both seem to have the same issue.<div><br></div><div>I have an application that displays multiple RTSP streams, and it occasionally crashes when calling libvlc_media_player_stop(). Here's the backtrace:</div><div><br></div><div><div>Thread 1397 received signal SIGSEGV, Segmentation fault.</div><div>[Switching to Thread 9080.0x1904]</div><div>av_buffer_unref (buf=buf@entry=0x1b7e804c2c0) at libavutil/buffer.c:130</div><div>130     libavutil/buffer.c: No such file or directory.</div><div>(gdb) bt</div><div>#0  av_buffer_unref (buf=buf@entry=0x1b7e804c2c0) at libavutil/buffer.c:130</div><div>#1  0x00007ffcfc2f733b in ff_dxva2_decode_uninit (avctx=<optimized out>) at libavcodec/dxva2.c:727</div><div>#2  0x00007ffcfc433a32 in avcodec_close (avctx=avctx@entry=0x1b785586a80) at libavcodec/utils.c:1171</div><div>#3  0x00007ffcfbd10799 in avcodec_free_context (pavctx=0x60d29f288) at libavcodec/options.c:179</div><div>#4  0x00007ffcfb8b4e9c in EndVideoDec (obj=<optimized out>) at ../../extras/package/win32/../../../modules/codec/avcodec/video.c:1275</div><div>#5  0x00007ffd066a803a in vlc_module_unload (obj=obj@entry=0x1b7a417ba00, module=<optimized out>,</div><div>    deinit=deinit@entry=0x7ffd066a76f0 <generic_stop>) at ../../extras/package/win32/../../../src/modules/modules.c:343</div><div>#6  0x00007ffd066a8105 in module_unneed (obj=obj@entry=0x1b7a417ba00, module=<optimized out>)</div><div>    at ../../extras/package/win32/../../../src/modules/modules.c:378</div><div>#7  0x00007ffd066c48c6 in UnloadDecoder (p_dec=p_dec@entry=0x1b7a417ba00) at ../../extras/package/win32/../../../src/input/decoder.c:201</div><div>#8  0x00007ffd066c5233 in DeleteDecoder (p_dec=0x1b7a417ba00) at ../../extras/package/win32/../../../src/input/decoder.c:1818</div><div>#9  0x00007ffd066c885a in input_DecoderDelete (p_dec=<optimized out>) at ../../extras/package/win32/../../../src/input/decoder.c:2020</div><div>#10 0x00007ffd066caac9 in EsDestroyDecoder (p_es=<optimized out>, p_es=<optimized out>, out=0x1b7c2031fe0)</div><div>    at ../../extras/package/win32/../../../src/input/es_out.c:1713</div><div>#11 0x00007ffd066cc0f1 in EsUnselect (out=out@entry=0x1b7c2031fe0, es=0x1b7f241baa0, b_update=<optimized out>)</div><div>    at ../../extras/package/win32/../../../src/input/es_out.c:1841</div><div>#12 0x00007ffd066cf565 in EsOutControlLocked (args=<optimized out>, i_query=<optimized out>, out=0x1b7c2031fe0)</div><div>    at ../../extras/package/win32/../../../src/input/es_out.c:2323</div><div>#13 EsOutControl (out=0x1b7c2031fe0, i_query=<optimized out>, args=<optimized out>)</div><div>    at ../../extras/package/win32/../../../src/input/es_out.c:2900</div><div>#14 0x00007ffd066d1cb3 in es_out_vaControl (args=0x60d29f620 "", i_query=<optimized out>, out=<optimized out>)</div><div>    at ../../extras/package/win32/../../../include/vlc_es_out.h:141</div><div>#15 es_out_Control (out=<optimized out>, i_query=<optimized out>) at ../../extras/package/win32/../../../include/vlc_es_out.h:150</div><div>#16 0x00007ffd066d372e in ControlLocked (args=<optimized out>, i_query=<optimized out>, p_out=<optimized out>)</div><div>    at ../../extras/package/win32/../../../src/input/es_out_timeshift.c:664</div><div>#17 Control (p_out=<optimized out>, i_query=<optimized out>, args=<optimized out>)</div><div>    at ../../extras/package/win32/../../../src/input/es_out_timeshift.c:764</div><div>#18 0x00007ffd066d5383 in es_out_vaControl (args=0x60d29f740 "", i_query=65536, out=<optimized out>)</div><div>    at ../../extras/package/win32/../../../include/vlc_es_out.h:141</div><div>#19 es_out_Control (out=<optimized out>, i_query=i_query@entry=65536) at ../../extras/package/win32/../../../include/vlc_es_out.h:150</div><div>#20 0x00007ffd066d5fab in es_out_SetMode (i_mode=0, p_out=<optimized out>) at ../../extras/package/win32/../../../src/input/es_out.h:95</div><div>#21 End (p_input=p_input@entry=0x1b79d4b85e0) at ../../extras/package/win32/../../../src/input/input.c:1484</div><div>#22 0x00007ffd066dd9ab in Run (data=0x1b79d4b85e0) at ../../extras/package/win32/../../../src/input/input.c:508</div><div>#23 0x00007ffd0672a516 in vlc_entry (p=0x1b79163b6d0) at ../../extras/package/win32/../../../src/win32/thread.c:470</div><div>#24 0x00007ffd3601aa96 in msvcrt!_beginthreadex () from /cygdrive/c/WINDOWS/System32/msvcrt.dll</div><div>#25 0x00007ffd3601ab6c in msvcrt!_endthreadex () from /cygdrive/c/WINDOWS/System32/msvcrt.dll</div><div>#26 0x00007ffd357e4034 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL</div><div>#27 0x00007ffd383b3691 in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll</div><div>#28 0x0000000000000000 in ?? ()</div><div>Backtrace stopped: previous frame inner to this frame (corrupt stack?)</div></div><div><br></div><div>I was able to work around this by patching the libavcodec_plugin code to effectively disable hardware acceleration, but due to the number of RTSP streams that the application needs to support, this isn't an ideal solution. </div><div><br></div><div>I'm able to reproduce this problem with the attached program. It might seem long, but most of the code is just Windows boilerplate. The interesting bit is in the RunTests() function, which isn't very long. </div><div><br></div><div>By the way, the Win64 debug symbols that are available for download on <a href="http://videolan.org/" target="_blank">videolan.org</a> don't seem to match the released code... I had to recompile VLC myself to be able to get a stack trace from gdb.</div><div><br></div><div>I can make the entire Visual Studio project available if it's necessary, but I didn't want to send binary files to the mailing list. </div><div><br></div><div>Any ideas what's going on here?</div><div><br></div><div>Thanks,</div><div><br></div><div>Ori Pessach</div></div>