Closed Bug 1426731 Opened 6 years ago Closed 3 years ago

Plugin crash when exiting fullscreen in local builds

Categories

(Core Graveyard :: Plug-ins, defect, P3)

Unspecified
Windows
defect

Tracking

(firefox70 affected)

RESOLVED WONTFIX
Tracking Status
firefox70 --- affected

People

(Reporter: handyman, Unassigned)

Details

Attachments

(1 file)

STR:

0. Launch a build made locally, with or without debug symbols, optimized or not (debug/opt doesn't matter).
1. Open http://wwwns.akamai.com/hdnetwork/demo/flash/default.html and greenlight plugin usage.
2. Click the fullscreen button on the video player.
3. Press ESC to exit fullscreen.

Expected:
Exit fullscreen and video keeps playing

Actual:
Exit fullscreen and plugin crashes.

--------------------------------

Running with plugin-container in the debugger gives me this stack:

>	xul.dll!mozilla::plugins::PluginInstanceChild::PaintRectToPlatformSurface(const mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> & aRect={...}, gfxASurface * aSurface=0x0000014c9b352190) Line 3343	C++
 	xul.dll!mozilla::plugins::PluginInstanceChild::PaintRectToSurface(const mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> & aRect, gfxASurface * aSurface=0x0000014c9b352190, const mozilla::gfx::Color & aColor={...}) Line 3459	C++
 	xul.dll!mozilla::plugins::PluginInstanceChild::PaintRectWithAlphaExtraction(const mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> & aRect, gfxASurface * aSurface=0x0000014c9b352190) Line 3525	C++
 	xul.dll!mozilla::plugins::PluginInstanceChild::ShowPluginFrame() Line 3712	C++
 	xul.dll!mozilla::plugins::PluginInstanceChild::InvalidateRectDelayed() Line 3861	C++
 	xul.dll!mozilla::detail::RunnableMethodImpl<mozilla::plugins::PluginInstanceChild * __ptr64 const,void (__cdecl mozilla::plugins::PluginInstanceChild::*)(void) __ptr64,0,1>::Run() Line 1195	C++
 	xul.dll!MessageLoop::RunTask(already_AddRefed<nsIRunnable> aTask={...}) Line 453	C++
 	xul.dll!MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask && pending_task={...}) Line 463	C++
 	xul.dll!MessageLoop::DoWork() Line 535	C++
 	xul.dll!base::MessagePumpForUI::DoRunLoop() Line 211	C++
 	xul.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate, base::MessagePumpWin::Dispatcher * dispatcher) Line 58	C++
 	xul.dll!MessageLoop::RunHandler() Line 312	C++
 	xul.dll!MessageLoop::Run() Line 300	C++
 	xul.dll!XRE_InitChildProcess(int aArgc=5, char * * aArgv=0x0000014c9b304060, const XREChildData * aChildData=0x00000044513ffa80) Line 705	C++
 	plugin-container.exe!content_process_main(mozilla::Bootstrap * bootstrap=0x0000014c9b30a0b0, int argc=8, char * * argv=0x0000014c9b304060) Line 64	C++
 	plugin-container.exe!NS_internal_main(int argc=9, char * * argv=0x0000014c9b304060) Line 25	C++
 	plugin-container.exe!wmain(int argc, wchar_t * * argv=0xffffffffffd850f0) Line 114	C++
 	plugin-container.exe!__scrt_common_main_seh() Line 253	C++
 	kernel32.dll!BaseThreadInitThunk()	Unknown
 	ntdll.dll!RtlUserThreadStart()	Unknown

The debugger stopped on this ASSERT;
    MOZ_ASSERT(!IsUsingDirectDrawing());

I think 'this' is invalid.
Works for me on latest Nightly on Mac.  (not a local build though)
(In reply to Tracy Walker [:tracy] from comment #1)
> Works for me on latest Nightly on Mac.  (not a local build though)

Works on Win7 / nightly as well.

:handyman, if you have the time please debug a bit more.
Flags: needinfo?(davidp99)
(In reply to Tracy Walker [:tracy] from comment #1)
> (not a local build though)

I should have pointed out that this is critical.  I just tried again (on Windows) and got the plugin crash.

Specifically, I am running:
> obj-64/dist/bin/firefox.exe --no-remote -P

With mozconfig:

> ac_add_options --enable-debug
> ac_add_options --enable-warnings-as-errors
> 
> mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-64
> 
> # 64-bit builds
> ac_add_options --target=x86_64-pc-mingw32
> ac_add_options --host=x86_64-pc-mingw32
Flags: needinfo?(davidp99) → needinfo?(jmathies)
What's in mDrawingModel when you hit this? I'm building locally now, will try to reproduce.
Flags: needinfo?(jmathies) → needinfo?(davidp99)
Flags: needinfo?(jmathies)
This happens with a clean profile.  I assume that means async rendering is on -- at least dom.ipc.plugins.asyncdrawing.enabled is true.
Flags: needinfo?(davidp99)
The stacks have the thread wrapped up in PluginInstanceChild::InvalidateRectDelayed and it looks like we ran into this before there. David, it looks like you added code for something like this in bug 1306698. 

https://searchfox.org/mozilla-central/source/dom/plugins/ipc/PluginInstanceChild.cpp#3851

mDrawingModel is set to 7 (NPDrawingModelAsyncWindowsDXGISurface) briefly coming out of fullscreen. Maybe the plugin is resetting the mode? Once a draw mode is selected it shouldn't change, maybe we can adjust this by locking used modes in.
Flags: needinfo?(jmathies)
Priority: -- → P3

I believe that I managed to reproduce this issue on Win 7x64 ith the latest Nightly70x32. Click on Fullscreen and Exit Fullscreen multiple times -> plugin crashes. See screenshot with the crash but I have to mention that the audio is still working even if I cannot see the video.

Resolving as wont fix, plugin support deprecated in Firefox 85.
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → WONTFIX
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: