From: Anton Baskanov Subject: Re: [PATCH 1/2] strmbase: Leave critical section when waiting for the renderer state change. Message-Id: <5555362.31r3eYUQgx@anton-hp-notebook> Date: Mon, 07 Jun 2021 11:17:26 +0700 In-Reply-To: References: <20210528070558.741001-1-baskanov@gmail.com> There is also one in pin_ConnectedTo, which is called like this: sink_EndOfStream() -> sink_eos() -> strmbase_passthrough_eos() -> MediaSeekingPassThru_GetStopPosition() -> get_connected() -> pin_ConnectedTo(). It is this one that causes problems for me. We should probably get rid of both to fix the test failures. On суббота, 5 июня 2021 г. 05:02:09 +07 you wrote: > On 5/28/21 2:05 AM, Anton Baskanov wrote: > > Sometimes streaming thread gets stuck in IPin::EndOfStream trying to > > acquire the filter critical section for more than 1 second, causing > > intermittent test failures. > > > > Signed-off-by: Anton Baskanov > > Sorry for the late review. > > The streaming thread shouldn't be doing that; that's basically one of > the underdocumented rules of quartz, you can't access the filter CS from > the streaming thread. > > I'm presuming this is the part where it tries to check "pin->flushing"; > this is basically wrong as-is, but it needs some extra work to solve, > including (ideally) wineqtdecoder either being restructured or going > away entirely.