Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blank white page when loading Patreon posts #505

Closed
ptrmsk opened this issue Mar 6, 2020 · 9 comments
Closed

Blank white page when loading Patreon posts #505

ptrmsk opened this issue Mar 6, 2020 · 9 comments

Comments

@ptrmsk
Copy link

ptrmsk commented Mar 6, 2020

Bromite version

Version: 80.0.3987.118
Arch: arm64
Android version: 10
Device model: (example: SM-G965U1)

Is this bug about the SystemWebView?

No

Is the bug reproducible with latest version?

Yes as of today

Can the bug be reproduced with corresponding Chromium version?

No.

Describe the bug

When viewing posts on Patreon, the screen blanks out, displaying an empty white screen instead of the expected webpage.

Reloading the page causes it to display correctly 50% of the time. If the page is working, reloading causes it to break. Interacting with the page while it loads, such as attempting to scroll, increases the chances of the page breaking.

I have tried several things to avoid this, including disabling the ad blocker, disabling scripts, and opening the pages in Incognito mode. Only disabling scripts prevents this bug, but then the pages are broken in other ways.

Steps to reproduce the bug

  1. Go to https://www.patreon.com/RadicalPersonalFinance/posts
    (or any Patreon account with /posts at the end)
  2. Wait for the page to load.
  3. The page will disappear shortly.
  4. Reload the page a few times. It will appear and continue to occasionally disappear.

Expected behavior

The page should load normally.

@csagan5
Copy link
Contributor

csagan5 commented Mar 7, 2020

I cannot reproduce this issue; please use remote debugging to troubleshoot it.

@csagan5 csagan5 closed this as completed Mar 7, 2020
@randshell
Copy link

randshell commented Mar 7, 2020

@csagan5 I can. I will inspect more later for logs.

@ptrmsk for a workaround enable desktop site.

@randshell
Copy link

There are two console errors but I think the problem is with the first. It points to the following JavaScript code:

// this fails for some browsers. :(
    if (originalConsoleLevel) {
      // IE9 doesn't allow calling apply on console functions directly
      // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193
      Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);
    }

@csagan5 Can you understand what's the problem from the stackoverflow link and how bromite relates?

@randshell
Copy link

Not related. I saw a request to https://www.patreon.com/api/tracking. It seems that the filters.dat doesn't include AdGuard filters anymore. More specifically it is the adguard-spyware filter.

bromite/CHANGELOG.md

Lines 1 to 2 in 503e4b8

# 72.0.3626.119
* use AdGuard filters

This is the only AdGuard mention in commits.

@ptrmsk
Copy link
Author

ptrmsk commented Mar 7, 2020

@randomshell At least I'm not alone in seeing webpages vanish! But I think that snippet of code in raven.js is what outputs the error, not what causes it.

@csagan5 I'm not very good at debugging websites, but I do get this error exclusively when the webpage crashes:

Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

asyncToGenerator.js:8 Uncaught (in promise) Invariant Violation: Minified React error #185; visit https://reactjs.org/docs/error-decoder.html?invariant=185 for the full message or use the non-minified dev environment for full errors and additional helpful warnings. 
    at pb (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:12:454)
    at n (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:13:221)
    at ya (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:153:195)
    at Object.enqueueSetState (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:202:409)
    at R.t.setState (https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js:20:433)
    at R._setBarState (https://c1.patreon.com/content-based/creatorPageV3.c8eefe5c.chunk.js:1:595837)
    at R.componentDidUpdate (https://c1.patreon.com/content-based/creatorPageV3.c8eefe5c.chunk.js:1:597238)
    at qi (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:130:296)
    at ui (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:133:320)
    at https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:158:377
    at unstable_runWithPriority (https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js:27:36)
    at Vc (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:158:360)
    at Sc (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:158:144)
    at Z (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:156:492)
    at Zg (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js:159:8)
    at u (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:72606)
    at o (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:72750)
    at https://c1.patreon.com/content-based/creatorPageV3.c8eefe5c.chunk.js:1:1769801
    at https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:233061
    at https://c1.patreon.com/content-based/creatorPageV3.c8eefe5c.chunk.js:1:157390
    at https://c1.patreon.com/content-based/creatorPageV3.c8eefe5c.chunk.js:1:158883
    at https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:229224
    at w (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:218860)
    at Generator._invoke (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:218625)
    at Generator.t.<computed> [as next] (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:219039)
    at w (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:218860)
    at e (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:219120)
    at https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:219462
    at new Promise (<anonymous>)
    at new e (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:144444)
    at o (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:219442)
    at S._invoke (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:219498)
    at S.t.<computed> [as next] (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:219039)
    at Object.d.async (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:215497)
    at https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:229114
    at https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:72991
    at https://c1.patreon.com/content-based/creatorPageV3.c8eefe5c.chunk.js:1:160157
    at dispatch (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:50648)
    at https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:78119
    at s (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:295192)
    at Generator._invoke (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:294980)
    at Generator.t.<computed> [as next] (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:295614)
    at o (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:203511)
    at u (https://c1.patreon.com/content-based/2.3c0fc290.chunk.js:1:203709)

Elements before breaking code runs:

image

Call to destroy main element (happens before the errors appear):

image

@randshell
Copy link

The error you mention appeared always after for me. But I guess you are right because raven.js is used to log to Sentry so it wasn't the cause.

@ptrmsk
Copy link
Author

ptrmsk commented Mar 9, 2020

Additional note regarding debugging and possibly failing to see the issue: the problem doesn't occur on my device (Galaxy S9+) in landscape mode.

I don't know if this has to do with pixel density or the wildly different dimensions. Will look for other devices to test.

@ptrmsk
Copy link
Author

ptrmsk commented Mar 9, 2020

@csagan5 Found another fix. I went to
chrome://flags and set "Disable get*ClientRects() fingerprint deception" to disabled. On reload, the page no longer breaks.

@csagan5
Copy link
Contributor

csagan5 commented Mar 9, 2020

There are two console errors

Please report both next time?

Can you understand what's the problem from the stackoverflow link and how bromite relates?

Not really. It might be a technique to detect whether developer tools are open or not on IE9.

It seems that the filters.dat doesn't include AdGuard filters anymore.

I have updated the changelog with the missing mention; they were removed because there was some problem with them and they sensibly enlarged the filters.

@ptrmsk the error Maximum update depth exceeded is correlated to fingerprinting. That version of React uses deep hashing to detect DOM changes, however the returned values do not change within the same document so something weird is going on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants