[vlc-devel] commit: Remove recursive/deadlocking calls in Qt4 embedded video ( refs #2136). ( Rémi Denis-Courmont )

xxcv xxcv07 at gmail.com
Fri Dec 19 10:57:34 CET 2008


xxcv wrote:
> git version control wrote:
>> vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> 
>> | Mon Oct 20 21:49:19 2008 +0300| 
>> [5253760be29bc5ba22a6c3c4318ae4ec12627611] | committer: Rémi 
>> Denis-Courmont
>> Remove recursive/deadlocking calls in Qt4 embedded video (refs #2136).
>>
>> The vout code invokes the Qt4 video widget through the Qt4 window
>> submodule. Hence, the video widget cannot call the vout window code.
>> This is where the embedded video crashes seem to come from.
>> Unfortunately, this commit trades the deadlock (on 1.0) or the crash
>> (on 0.9) for an assertion failure.
>>
>>   
> How do you close or destroy VideoWidget properly before quitting ?
>
>
The result of having VideoWidget::~VideoWidget(){empty} while still 
using experimenting embedded video on win32 master branch is a crash below.
> [0xd7671c8] main playlist debug: dying input
> [0xd76aaa8] qt4 interface debug: Quitting the Qt4 Interface
> [0xd76aaa8] qt4 interface debug: destroying the main Qt4 interface
> [0xd76aaa8] qt4 interface debug: Destroying the main interface
> [0xd76aaa8] qt4 interface debug: Playlist Destroyed
> [0x119d5d50] direct3d video output debug: WinProc WM_DESTROY
> [0x11b49a10] direct3d generic debug: DirectXEventThread terminating
> [0x119d5d50] direct3d video output debug: DirectXCloseWindow
> [0x119d5d50] direct3d video output debug: WinProc WM_DESTROY
> [0x10ac21b8] main decoder warning: can't get output picture
> [0xd76aaa8] qt4 interface debug: Destroying the Dialog Provider
> [0xd7671c8] main playlist debug: dying input
> [0xd7671c8] main playlist debug: dying input
> [0x11a118f0] qt4 window debug: releasing video...
> [New thread 2284.0x2d0]
> [New thread 2284.0x1660]
> [New thread 2284.0x12e0]
> [New thread 2284.0x16a4]
> [New thread 2284.0x1674]
> [New thread 2284.0x764]
> [New thread 2284.0x1194]
> [New thread 2284.0x1544]
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to thread 2284.0x14d8]
> FullscreenControllerWidget::detachVout (this=0xfeeefeee)
>     at components/controller.cpp:1303
>         in components/controller.cpp
> (gdb) Error: dll starting at 0x77640000 not found.
> Error: dll starting at 0x76620000 not found.
> Error: dll starting at 0x77640000 not found.
> Error: dll starting at 0x77570000 not found.
> 1303    components/controller.cpp: No such file or directory.
> bt
> #0  FullscreenControllerWidget::detachVout (this=0xfeeefeee)
>     at components/controller.cpp:1303
> #1  0x0914144e in MainInterface::releaseVideo (this=0xd79f5a8, 
> p_win=0x8b0702)
>     at main_interface.cpp:736
> #2  0x09133396 in WindowClose (obj=0x11a118f0) at qt4.cpp:561
> #3  0x6a580bb6 in __module_unneed (p_this=0x11a118f0, p_module=0x77be50)
>     at modules/modules.c:659
> #4  0x6a570e44 in vout_ReleaseWindow (p_vout=0x119d5d50, dummy=0x8b0702)
>     at video_output/vout_intf.c:143
> #5  0x6d7835cc in EventThread (p_this=0x11b49a10) at events.c:602
> #6  0x6a58545d in thread_entry (data=0x10a4d510) at misc/threads.c:842
> #7  0x6a585369 in vlc_entry (data=0x11b49a50) at misc/threads.c:625
> #8  0x773d2cce in wcstombs_s () from C:\Windows\syswow64\msvcrt.dll
> #9  0x773d2deb in msvcrt!_beginthreadex () from 
> C:\Windows\syswow64\msvcrt.dll
> #10 0x766ae3f3 in UnhandledExceptionFilter ()
>    from C:\Windows\syswow64\kernel32.dll
> #11 0x11a11850 in ?? ()
> #12 0x135dffd4 in ?? ()
> #13 0x7798cfed in ntdll!RtlWalkFrameChain ()
>    from C:\Windows\system32\ntdll.dll
> #14 0x11a11850 in ?? ()
> #15 0x6e6b51d6 in ?? ()
> #16 0x00000000 in ?? ()
And it deadlocks when revert commit 5253760be29bc5ba22a6c3c4318ae4ec12627611
Which means it won't quit from process, and VideoWidget class doesn't 
know how to do a destruction function, so how should destruction 
function be done?





More information about the vlc-devel mailing list