| Summary: | Assertion failure in Debug build blocks webpage rendering | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Eleni Maria Stea <estea> | ||||
| Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> | ||||
| Status: | NEW --- | ||||||
| Severity: | Minor | CC: | bfulgham, estea, simon.fraser, webkit-bug-importer, zalan | ||||
| Priority: | P2 | Keywords: | InRadar | ||||
| Version: | WebKit Local Build | ||||||
| Hardware: | PC | ||||||
| OS: | Linux | ||||||
| See Also: |
https://bugs.webkit.org/show_bug.cgi?id=191962 https://bugs.webkit.org/show_bug.cgi?id=166008 |
||||||
| Attachments: |
|
||||||
|
Description
Eleni Maria Stea
2021-02-02 04:46:55 PST
Created attachment 418983 [details]
proposed patch
Proposed patch: move the assertion before all other checks that might change the needsToBeComposited(layer, queryData) value.
Comment on attachment 418983 [details]
proposed patch
The whole point of this assertion is to check that willBeComposited has the correct value.
(In reply to Simon Fraser (smfr) from comment #2) > Comment on attachment 418983 [details] > proposed patch > > The whole point of this assertion is to check that willBeComposited has the > correct value. Thank you for your reply, What I tried to prevent by moving the assertion earlier was the case that needsToBeComposited() is different from willBeComposited value without that being a bug. I noticed that willBeComposited and needsToBeComposited have the same value at the beginning of the function but further down there are cases that change the value of the variable and so, the same check fails. I thought that the willBeComposited changes were correctly made and so I assumed that the problem is that the assertion failure takes place too late after the changes. My description was not so clear, sorry. What are your thoughts on this? Thanks in advance! If this assertion fires, it means that some state changed that affected the answer to needsToBeComposited() inside this function, which implies there's some side-effect. If willBeComposited does not match needsToBeComposited() then the behavior is wrong. You should go looking for why needsToBeComposited() changes its answer unexpectedly. (In reply to Simon Fraser (smfr) from comment #4) > If this assertion fires, it means that some state changed that affected the > answer to needsToBeComposited() inside this function, which implies there's > some side-effect. If willBeComposited does not match needsToBeComposited() > then the behavior is wrong. > > You should go looking for why needsToBeComposited() changes its answer > unexpectedly. Alright, thank you very much! needsToBeComposited() was true because compositing was required for overflow scrolling (although I saw the assertion failure in some other cases too). I hadn't realized this is unexpected, I will investigate it further. |