[PATCH v2 0/1] MR4170: mf: Shutdown media sinks before releasing them.
This probably suppresses !3067 -- v2: mf: Shutdown media sinks before releasing them. https://gitlab.winehq.org/wine/wine/-/merge_requests/4170
From: Yuxuan Shui <yshui(a)codeweavers.com> --- dlls/mf/session.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dlls/mf/session.c b/dlls/mf/session.c index b5b631fb00a..e3f6612b487 100644 --- a/dlls/mf/session.c +++ b/dlls/mf/session.c @@ -846,7 +846,14 @@ static void session_clear_presentation(struct media_session *session) list_remove(&sink->entry); if (sink->sink) + { + /* The way we use media sinks, makes them hold references to themselves. For example, + * we call `BeginGetEvent` on `IMFMediaEventGenerator`s with the generators themselves + * as states. This creates reference cycles which must be broken by calling + * `IMFMediaSink_Shutdown`, to prevent references from leaking. */ + IMFMediaSink_Shutdown(sink->sink); IMFMediaSink_Release(sink->sink); + } if (sink->preroll) IMFMediaSinkPreroll_Release(sink->preroll); if (sink->event_generator) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4170
Hi, It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated. The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details: The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=139032 Your paranoid android. === debian11 (32 bit report) === mf: mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. === debian11b (64 bit WoW report) === mf: mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call. mf.c:1705: Test failed: Unexpected call.
update to fix styling -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4170#note_49635
I mean, it feels reasonable to do this, but Nikolay knows more than I do. :smile: -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4170#note_49690
On Wed Oct 25 10:05:06 2023 +0000, Bernhard Kölbl wrote:
I mean, it feels reasonable to do this, but Nikolay knows more than I do. :smile: i feel this is not that simple. i need to write a test case for this.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/4170#note_49712
uh, sorry this MR is the same as !3067. i went the long way around and arrived at the same place :/ at least my understanding of mf and the problem is better now. the real problem i need to fix is the dead lock when trying to acquire `&grabber->cs`. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4170#note_49773
This merge request was closed by Yuxuan Shui. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4170
participants (4)
-
Bernhard Kölbl -
Marvin -
Yuxuan Shui -
Yuxuan Shui (@yshui)