View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000667||madVR||bug||public||2021-04-10 01:47||2021-04-10 18:56|
|Summary||0000667: Random Video Hanging with SVP + Avisynth Filter|
|Description||Hi, I've been working with the developer of Avisynth Filter on a recurring issue I've been having with videos hanging (video frame freezes, audio keeps playing).|
The issue can be seen here: https://github.com/CrendKing/avisynth_filter/issues/41
I've been uploading dump files and the developer fixed some instances of hanging on their end but said the last dump I provided points to MadVR as the cause.
The dump file can be found here: https://mega.nz/file/RdhU3AiL#At4x6mW6E6Iokha_N-vv7_o58i5zXTk5HlEAHLBZKtY
If you have any questions or would like additional dumps let me know.
|Steps To Reproduce||Cannot be reliably reproduced.|
|Additional Information||I selected "Software" under the Decoding option but I'm not actually sure what MPC Video Decoder uses, I assume it's software but it may be something else.|
|Tags||No tags attached.|
|Media Player (with version info)||MPC-BE x64 1.5.6|
|Splitter (with version info)||N/A?|
|Decoder (with version info)||MPC Video Decoder|
|DXVA2 Scaling Active||no|
|Aero / Desktop Composition||On|
|Problem occurs with mode||all modes|
|GPU Model||RTX 3090|
|GPU Driver Version||465.89|
||When the problem occurs, can you please press Ctrl+Alt+Shift+Pause/Break, then wait a couple of seconds, then check if there's a "freeze report" on your desktop? If so, please post it here. Ideally, please try to get the debug symbols for the Avisynth Filter and copy them to the same folder where the Avisynth Filter's dll/ax files are located. That will help make the freeze report more useful.|
I will provide the freeze report when I hear back from CrendKing, the avisynth filter dev, about the debug symbols.
In the meantime I'd like to pass by this message he left on the issue over there:
"I managed to find a way to repro the hang you experienced. It is because unlike EVR, when being queried for media type change, madVR calls to source filter (most likely LAV Splitter) for its connection media type. This call tries to acquire LAV filter's lock, and consequently form a chain of dead lock.
Main thread: holds LAV m_csFilter, blocked on LAV m_csReceive
Streaming thread: holds LAV m_csReceive, blocked on avsf m_csReceive
avsf worker thread: holds avsf m_csReceive, blocked on LAV m_csFilter <- this is where the hang occurred
In contrast, EVR doesn't seem to make that call, thus no dead lock formed.
Now, I'm not saying this is a bug in madVR. They could do it for good reason. On my hand, I could change my logic to do output format change differently. It may take some time to try different approaches. So I might release a new version with this as a known issue."
||Seems he already figured it out. I'm not sure why madVR asks the source filter for its connection media type in that situation. There's probably a reason but I'd have to analyse my source code to find out.|