Closed Bug 1432610 Opened 2 years ago Closed 2 years ago

[hang] with HD Graphics 4400 when scrolling quickly an accelerated page

Categories

(Core :: Graphics, defect, critical)

All
Windows 7
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla61
Tracking Status
firefox61 --- fixed

People

(Reporter: tbertels+bugzilla, Assigned: sotaro)

References

()

Details

(Keywords: hang, reproducible)

Attachments

(1 file, 2 obsolete files)

Steps to reproduce:
- Open https://docs.google.com/spreadsheets/d/1g4nsN6I00HN4iOjyAsTOovxuUqIAexzBe6GyFW7v3sM
- Quickly scroll up and down repeatedly

Result: complete browser hang
Killing the affected process (99 % cpu) frees the browser.

Reproduced on three computers with the same HD Graphics 4400 GPU. All three with Windows 7, one of them 32 bits.
Smooth scrolling doesn't need to be enabled.
Disabling Hardware acceleration avoids the problem.

Description: Intel(R) HD Graphics 4400
Vendor ID: 0x8086
Device ID: 0x041e
Driver version: 10.18.14.4578 (no more supported by Intel on Windows 7)
Driver date: 1-4-2017 (same problem with an older version)

So far, I've been able to reduce the regression window to between the end of 2016 and the beginning of 2017 on mozilla-central.
:kats, could it be related to apz?
Flags: needinfo?(bugmail)
It might be. Thomas, if you go to about:config, set layers.async-pan-zoom.enabled to false, and restart the browser, do you still have the problem?
Flags: needinfo?(bugmail) → needinfo?(tbertels+bugzilla)
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #2)
I can still reproduce it with layers.async-pan-zoom.enabled set to false. :-(
Flags: needinfo?(tbertels+bugzilla)
Given that it's reproducible on three different computers and that no crash report get sent, I'd suggest to block at least driver version 10.18.14.4578 and lower of that that GPU on Windows 7.
Thomas Bertels, can you check if disabling d2d1.1 works? d2d1.1 could be disabled by the following pref change(remove direct2d1.1)
- gfx.canvas.azure.backend: skia,cairo
- gfx.content.azure.backends: skia,cairo
Flags: needinfo?(tbertels+bugzilla)
(In reply to Sotaro Ikeda [:sotaro] from comment #5)
> Thomas Bertels, can you check if disabling d2d1.1 works?
Yes, it does, it's no longer reproduceable with it disabled (it needs to be disabled for both of them if it matters).
Flags: needinfo?(tbertels+bugzilla)
Thanks! Then it seems like a problem of d2d1.1 on Intel HD Graphics 4400.
Comment on attachment 8953357 [details] [diff] [review]
patch - Disable D2D on Win7 on Intel HD 4400 for old graphics drivers

:jrmuizel, can we disable D2D on Win7 on Intel HD 4400 for old graphics drivers?
Attachment #8953357 - Flags: review?(jmuizelaar)
:milan, how do you think about blocking d2d on the specific old Intel graphics drivers?
Flags: needinfo?(milan)
Comment on attachment 8953357 [details] [diff] [review]
patch - Disable D2D on Win7 on Intel HD 4400 for old graphics drivers

Review of attachment 8953357 [details] [diff] [review]:
-----------------------------------------------------------------

A few questions; is it just 4400, or is it all of Haswell GT2?  Also, should we be using DRIVER_BUILD_ID_LESS_THAN_OR_EQUAL instead of DRIVER_LESS_THAN_OR_EQUAL test?
I'm fine with blocking, but let's make sure we're blocking the correct thing (see questions in comment 11)
Flags: needinfo?(milan)
Assignee: nobody → sotaro.ikeda.g
I agree. Do we have any reason to believe that this is specific to the 4400 and not all of Haswell?
Flags: needinfo?(sotaro.ikeda.g)
(In reply to Jeff Muizelaar [:jrmuizel] from comment #13)
> I agree. Do we have any reason to believe that this is specific to the 4400
> and not all of Haswell?

No, there is no reason why it is limited only to 4400. So, we need to block at least Haswell GT2. I am not sure if we need to block also GT1 and GT3.
Flags: needinfo?(sotaro.ikeda.g)
(In reply to Milan Sreckovic [:milan] from comment #11)
> Comment on attachment 8953357 [details] [diff] [review]
> patch - Disable D2D on Win7 on Intel HD 4400 for old graphics drivers
> 
> Review of attachment 8953357 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> A few questions; is it just 4400, or is it all of Haswell GT2? 

I do not have Haswell GT2, then I am not sure about it. But I seems to affect to all Haswell GT2 on Windows 7.

> Also, should we be using DRIVER_BUILD_ID_LESS_THAN_OR_EQUAL instead of
> DRIVER_LESS_THAN_OR_EQUAL test?

Yes, thanks!
Attachment #8953357 - Flags: review?(jmuizelaar)
Attachment #8957072 - Flags: review?(jmuizelaar)
I just found out today by chance that accessibility had been enabled by a third party software (Unchecky).
Adding Firefox to the excluded programs - thus disabling accessibility - I cannot reproduce this hang anymore on the URL in Comment 1.
By the way, in addition to this hang, accessibility caused a huge memory use, forcing me to restart Firefox several times per day to avoid slowdowns.

So I'm not sure if it's still a good idea to blacklist this chipset because of the 6% or so who have (probably unknowingly) accessibility enabled (https://mzl.la/2FBSqZk).
I'm guessing there's now way to blacklist it only when accessibility is enabled?

In the mean time, I'll continue to browse with Hardware acceleration enabled to see if I can reproduce the hang.
Attachment #8957072 - Flags: review?(jmuizelaar) → review+
(In reply to Thomas Bertels from comment #19)
> 
> So I'm not sure if it's still a good idea to blacklist this chipset because
> of the 6% or so who have (probably unknowingly) accessibility enabled
> (https://mzl.la/2FBSqZk).
> I'm guessing there's now way to blacklist it only when accessibility is
> enabled?

Current blacklist mechanism does not have a way to do it.
(In reply to Sotaro Ikeda [:sotaro] from comment #20)
> Current blacklist mechanism does not have a way to do it.
That's what I was afraid of.

Given the fact that it probably impacts a low percentage of users, it may be a better idea to focus on letting the user know about the cause.
For the accessibility part, there's bug 1444397 (since the current (disabled) indicator wasn't well accepted).
But for the user with a legitimate use of accessibility, a message in about:healthreport about hardware acceleration potentially causing hangs could also be useful (I don't think there's currently a way to do that either).

In the mean time, it may be better to go forward with the blacklist since the hang is a bigger loss of functionality for the 6 %.
But ideally, the user would notified of it too (at least in about:healthreport). Is it the case?
(In reply to Thomas Bertels from comment #21)
> (In reply to Sotaro Ikeda [:sotaro] from comment #20)
> > Current blacklist mechanism does not have a way to do it.
> That's what I was afraid of.
> 
> Given the fact that it probably impacts a low percentage of users, it may be
> a better idea to focus on letting the user know about the cause.
> For the accessibility part, there's bug 1444397 (since the current
> (disabled) indicator wasn't well accepted).
> But for the user with a legitimate use of accessibility, a message in
> about:healthreport about hardware acceleration potentially causing hangs
> could also be useful (I don't think there's currently a way to do that
> either).

Hmm, about:healthreport seems to be removed since Firefox 59.

> 
> In the mean time, it may be better to go forward with the blacklist since
> the hang is a bigger loss of functionality for the 6 %.
> But ideally, the user would notified of it too (at least in
> about:healthreport). Is it the case?

Then, it seems better just to do blacklist for now,
Pushed by sikeda@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/912c50cd3b66
Disable D2D on Win7 on Intel Haswell for old graphics drivers r=jrmuizel
https://hg.mozilla.org/mozilla-central/rev/912c50cd3b66
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
You need to log in before you can comment on or make changes to this bug.