Closed Bug 1336633 Opened 8 years ago Closed 4 years ago

NVDA makes browser unresponsive when playing Flash video

Categories

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

54 Branch
x86_64
Windows 10
defect

Tracking

(firefox54 affected)

RESOLVED INCOMPLETE
Tracking Status
firefox54 --- affected

People

(Reporter: StefanG_QA, Unassigned)

References

(Blocks 1 open bug, )

Details

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0 Flash Version: 24.0.0.194 Download and install https://www.nvaccess.org/ STR 1. Make sure NVDA is running 2. Start nightly and navigate to http://www.cnn.com/2016/10/10/us/weather-matthew/index.html 3. Wait for page to load 4. Observe AR: Broswer become unresponsive and start using too much CPU. ER: Browser should play the video without issue STR2 1. Start Nightly and navigate to http://www.cnn.com/2016/10/10/us/weather-matthew/index.html 2. Wait for video to start 3. Start NVDA 4. Observe AR: Flash plugin crash immediately after NVDA is started ER: Video should continue playing Flipping dom.ipc.plugins.asyncdrawing.enabled does not make any difference. With e10s set to false the issue is not observed. This applies for Nightly 32/64 bits
OS: Unspecified → Windows 10
Hardware: Unspecified → x86_64
Sounds like a potential a11y deadlock.
Component: Plug-ins → Disability Access APIs
Whiteboard: aes+
I'll take this one for investigation.
Assignee: nobody → aklotz
Flags: needinfo?(davidp99)
Stefan, would you mind testing to see if this still happens in current nightly?
Flags: needinfo?(davidp99) → needinfo?(stefan.georgiev)
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0 (20170216030210) Flash: 24.0.0.221 I've tested the issue again. Definitely the behavior is better now. With STR2 the issue is no more observed on both 64 and 32 bits Nightly. With STR1 the issue now is intermittent. From 5 webpage loads the video start 2 times and browser hangs 3 times showing unresponsive script, then one crash occur with the below crash report. https://crash-stats.mozilla.com/report/index/8dfea43f-f910-4765-82ea-ad9d72170216 High CPU usage is no more observed in both cases.
Flags: needinfo?(stefan.georgiev)
The crash stack in comment 4 shows something that is repeatedly calling QueryInterface on a proxy. I have downloaded the dump and loaded it in windbg, where it resolved to: 00 ntdll!NtWaitForMultipleObjects+0x14 01 KERNELBASE!WaitForMultipleObjectsEx+0xef 02 user32!MsgWaitForMultipleObjectsEx+0x15b 03 combase!CCliModalLoop::BlockFn+0x12d 04 combase!ModalLoop+0xbc 05 combase!ClassicSTAThreadWaitForCall+0xbc 06 combase!ThreadSendReceive+0x384 07 combase!CSyncClientCall::SwitchAptAndDispatchCall+0xc2 08 combase!CSyncClientCall::SendReceive2+0x195 09 combase!SyncClientCallRetryContext::SendReceiveWithRetry+0x2f 0a combase!CSyncClientCall::SendReceiveInRetryContext+0x2f 0b combase!ClassicSTAThreadSendReceive+0x86 0c combase!CSyncClientCall::SendReceive+0x1d3 0d combase!CClientChannel::SendReceive+0x8f 0e combase!NdrExtpProxySendReceive+0xec 0f rpcrt4!NdrpClientCall2+0x31f 10 combase!ObjectStublessClient+0x1e3 11 combase!ObjectStubless+0x42 12 <Unloaded_VBufBackend_gecko_ia2.dll>+0x24184 13 0x00000217`55d24c88 and then stopped unwinding. This sounds to me like the dreaded main-thread reentry that Jamie has mentioned to me. Jamie, does this sound familiar to you?
Flags: needinfo?(jamie)
It's possible. If true, we think we've worked around this re-entry problem in the NVDA "next" branch. Please try the latest NVDA "next" snapshot and see if the problem persists there: http://www.nvda-project.org/snapshots/ Note that this doesn't have anything to do with our Flash code, so if the issue is Flash specific, that's probably a separate issue. I suspect two separate issues are being conflated here. Hopefully, our fix will address one of them.
Flags: needinfo?(jamie)
Blocks: 1350984
Whiteboard: aes+
Blocks: 1258839
No longer blocks: 1350984
Clearing assignment; I don't really have time to test this ATM.
Assignee: aklotz → nobody
Whiteboard: aes+
Marco can you put this in your triage queue and see if it is still a problem?
Flags: needinfo?(mzehe)
I can not reproduce this, posibly due to the fact that CNN has by now switched to JavaScripted HTML5 video. I have no Flash plugin loaded, and the video plays. So the problem got solved. Stefan, do you still see this anywhere where there still *is* Flash being used for video? I am inclined to close this since in a year or so, Flash will be dead anyway, and one rarely encounters it any more...
Flags: needinfo?(mzehe) → needinfo?(stefan.georgiev)
Flags: needinfo?(gwimberly)
I see high CPU usage on http://www.newgrounds.com/ with or without NVDA. I did encounter freeze and crash with following steps: 1. NVDA is on. 2. Play some game on http://www.newgrounds.com/ 3. Observed Browser freez 4. Exit from NVDA 5. Kill Nightly from task manager 6. Restart Nightly Got a crash notification after restart. Crash: https://crash-stats.mozilla.com/report/index/95599b0e-e94f-45c0-ba2f-f2acd0170915
Flags: needinfo?(stefan.georgiev)
Flags: needinfo?(gwimberly)
Speculating this is a P3 based on MarcoZ's input but if we become aware of more critical use cases (e.g. Korean banking IIRC) where this is known to regress users we will need to bump priority.
Priority: -- → P3
Flags: needinfo?(jmathies)
Regarding newgrounds.com, it seems some of these games use canvas instead of Flash. Can you link directly to a Flash game? here's a sample Flash video which is supposed to be accessible: http://files.paciellogroup.com/training/WWW2012/samples/accessiblevideo/index.html#/0:00.00/ It does certainly seem to chew a lot of CPU and things get very sluggish. However, I can't reproduce an actual freeze or crash. It'd be great if someone could confirm whether there is a difference in CPU usage with and without NVDA running, as I can't check the latter myself. I also notice that even for windowed (not transparent or opaque) Flash, the accessible for the Flash video is always unavailable; it never exposes the Flash a11y tree. Marco, is this expected now? Did the code to do this get removed? If we can no longer expose the Flash a11y tree, that rules out anything related to Flash a11y code or weird interactions caused by AT trying to query Flash a11y.
(In reply to James Teh [:Jamie] from comment #12) > I also notice that even for windowed (not transparent or opaque) Flash, the > accessible for the Flash video is always unavailable; it never exposes the > Flash a11y tree. Marco, is this expected now? Did the code to do this get > removed? If we can no longer expose the Flash a11y tree, that rules out > anything related to Flash a11y code or weird interactions caused by AT > trying to query Flash a11y. I certainly do not think so. I will have to pass this on to AKlotz, though. It has to do with the Win32ObjectAccessible in Windows, or whatever that class is called exactly. Aaron, any ideas, or have you come across any weirdness with this particular wrap while you were working on IPC a11y?
Flags: needinfo?(aklotz)
The only thing that I am aware of is bug 1319640. Maybe that broke after we tightened the sandbox to level 3?
Flags: needinfo?(aklotz)
Flags: needinfo?(jmathies)
currently not seeing this, in general flash and nvda appear to be playing well with eacy other.
Component: Disability Access APIs → Plug-ins
Whiteboard: aes+

We can close this bug because Firefox no longer supports Flash.

Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → INCOMPLETE
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.