Open Bug 1875238 Opened 2 years ago Updated 5 days ago

Google Earth 10.46.0.0 broken in all recent Firefox versions, white flashes of screen/page

Categories

(Web Compatibility :: Site Reports, defect, P1)

Tracking

(Webcompat Priority:P2, Webcompat Score:4, firefox-esr115 affected, firefox121 wontfix, firefox122 wontfix, firefox123+ wontfix, firefox124 wontfix, firefox125 wontfix, firefox126 wontfix)

Webcompat Priority P2
Webcompat Score 4
Tracking Status
firefox-esr115 --- affected
firefox121 --- wontfix
firefox122 --- wontfix
firefox123 + wontfix
firefox124 --- wontfix
firefox125 --- wontfix
firefox126 --- wontfix

People

(Reporter: aryx, Unassigned)

References

(Depends on 1 open bug, Blocks 1 open bug, )

Details

(4 keywords)

User Story

platform:windows,mac,linux
impact:site-broken
configuration:general
affects:few
branch:release
user-impact-score:100

Attachments

(2 files)

Loading Google Earth is unusable at the moment with all Firefox versions (tested 115.6.0esr, 121.0.1, latest 123.0a1) because the page frequently flashes white. Tested on two devices with Windows 10 and in a Linux VM.

This is a regression from the last 24 hours. The page works as expected in the latest Chrome version.

Error messages in the console:

Uncaught : Bad state: PictureRecorder is not recording
    h https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:3692
    wD https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60013
    JQ https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:58821
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    E https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5283
    avy https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:58869
    JQ https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:58805
    H_ https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60064
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    $1 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67665
    bga https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68745
    ID https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68748
    $0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68149
    a8v https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5445
    xX https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68076
    f0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67659
    D https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5287
    Io https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60042
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    $1 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67665
    bga https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68745
    ID https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68748
    $0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68149
    a8v https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5445
    xX https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68076
    f0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67659
    D https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5287
    QM https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60403
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    $1 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67665
    bga https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68745
    ID https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68748
    $0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68149
    a8v https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5445
    xX https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68076
    $0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68120
    dXO https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5477
    dYr https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5479
    $1 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67614
    dRD https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5266
    <anonymous> https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:216044
    c https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:32
    cXD https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5484
    a_C https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5584
    aCU https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68083
    oj https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:68081
    f0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67994
    $1 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:58453
    cMr https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:3647
    bop https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:6720
    dVi https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:8584
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:8580
    a8 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:8593
    fE https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:905
    dW6 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:548
    cgv https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:529
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    E https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5283
    cgv https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:535
    b9_ https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:512
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    E https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5283
    b9_ https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:522
    0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60290
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    E https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5283
    $0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60308
    jX https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60129
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    E https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5283
    jX https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:60133
    0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:61457
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
    $2 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:67671
    E https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5283
    $0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:61461
    ckW https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:1165
    s https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:5297
main.dart.js:3692:19
Uncaught : RuntimeError: index out of bounds
    CanvasKitInit https://www.gstatic.com/flutter-canvaskit/9e03a57cde8ae8d1811492653a4ca930986f53e3/canvaskit.js:115
    fn https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59646
    pS https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59471
    qQ https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59356
    $0 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59639
    daV https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:1333
    be7 https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59627
main.dart.js:3692:19
Uncaught : RuntimeError: indirect call signature mismatch
    CanvasKitInit https://www.gstatic.com/flutter-canvaskit/9e03a57cde8ae8d1811492653a4ca930986f53e3/canvaskit.js:115
    concat https://www.gstatic.com/flutter-canvaskit/9e03a57cde8ae8d1811492653a4ca930986f53e3/canvaskit.js:44
    aW https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59662
    pS https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59472
    qQ https://earth.google.com/static/single-threaded/versions/10.46.0.0/main.dart.js:59356
main.dart.js:3692:19
Flags: needinfo?(dschubert)

The website indicates that this is a new version of google earth.

The big Google Earth upgrade launched months ago, must be from a minor update.

I tried digging into those exceptions to see if there's something I can narrow down, but it's hard, given Google's heavy minification. I sent them a message.

Flags: needinfo?(dschubert)

As far as I can tell it does not look like a webgl issue. Exceptions are thrown in JS code, causing execution to stop before webgl gets touched.

Jim Blandy noted that the second backtrace I posted is happening in a finalizer and it could be relevant (although not the first one).

In case it is useful to anyone: I captured a log profile while reproducing the issue with some extra logging hacked into it: https://share.firefox.dev/47IOIG6
The extra logging is visible in the "Log messages" row towards the bottom, it contains a few "WASM/JS error <number>" logs which are when some of the exceptions are thrown, as well as all of the webgl functions.

The link is focused on a small range of the profile where multiple requestAnimationFrame callbacks are run. One looks like it is interrupted by the exception, another one isn't and is going into webgl code.

The profile contains a whole lot more information, most of which is probably irrelevant.

Depends on: 1875353

Have contacted the Google Earth team on request from Kelsey Gilbert. To confirm, going back in earlier Firefox continuous builds doesn't get the newly pushed version of Earth to run?

Note also that the current Earth loads successfully on an M1 MacBook Pro with both Firefox Stable and Nightly.

Artem Klimov from the Earth team says:

"""
We rolled back to the working version of Earth - 10.43, so the users will not experience the issue.
If Firefox guys need to access the broken version, they can use the direct link:
https://earth.google.com/static/single-threaded/versions/10.46.0.0/index.html
"""

I can confirm that https://earth.google.com/static/single-threaded/versions/10.46.0.0/index.html is broken on this M1 Mac in Firefox Stable.

The issue triggers from the Flutter code. We don't yet know the root cause. The code in question is not browser-specific. We're investigating.

Thank you for rolling this back. There is an investigation of the behavior in Firefox in progress, leaving the bug open for potential patches from that.

Summary: Google Earth broken in all recent Firefox versions, white flashes of screen/page → Google Earth 10.46.0.0 broken in all recent Firefox versions, white flashes of screen/page

(In reply to Yegor Jbanov from comment #13)

The issue triggers from the Flutter code. We don't yet know the root cause. The code in question is not browser-specific. We're investigating.

We have an issue related to our debugger behavior, which makes it useless when debugging an application similar to Google Earth. If it is possible, we would like to identify the root cause and reduce test to fix the debugger. My initial thought that it is related to DOM / MutationObserver that causing a Wasm code to "misbehave", and causing some confusions in the debugger.

Was you able to pinpoint the root cause? Is there a way to bisect the Google Earth or Flutter to find the exact reason?

Flags: needinfo?(yegor.jbanov)

We found the root issue. We had a race condition in Flutter. However, for the race to happen you needed a slow enough implementation of createImageBitmap/transferToImageBitmap APIs. This is why it didn't show up in Chromium. However, due to https://bugzilla.mozilla.org/show_bug.cgi?id=1788206, it did trigger in Firefox. We have temporarily reverted to multi-GL context approach. However, the complete solution is to fix https://bugzilla.mozilla.org/show_bug.cgi?id=1788206.

Flags: needinfo?(yegor.jbanov)
See Also: → 1788206

Someone was kind enough to alert me that my last sentence in https://bugzilla.mozilla.org/show_bug.cgi?id=1875238#c16 may not be fully accurate. Correction:

Fixing https://bugzilla.mozilla.org/show_bug.cgi?id=1788206 is not required to fix the race. We fixed the race in Flutter's own code. https://bugzilla.mozilla.org/show_bug.cgi?id=1788206 is only needed so we can go back to the ImageBitmap-based implementation, which we use for Chromium-based browsers, and which is our preferred solution as it's much less complex. The slowness prevents us from being able to use it.

Dennis, can we please get a Priority/Severity applied here?

Flags: needinfo?(dschubert)

This is a bit hard to prioritize. From our usual perspective, this "is no longer a WebCompat issue", as there is no observable breakage. Of course, we know that the breakage is only no longer there because Google has work-arounded the issue. Ideally, they wouldn't have to do that, especially since that introduces all kinds of possible weirdness.

After checking with the team, it's a P1/S2 for now. P1 as the site is without a doubt a high-traffic site, S2 because the possibility of breakage is high.

Severity: -- → S2
Depends on: 1788206
Flags: needinfo?(dschubert)
Priority: -- → P1
See Also: 1788206
User Story: (updated)
See Also: → 1919712
Webcompat Priority: --- → P1
Webcompat Score: --- → 9
Webcompat Score: 9 → 8

Dropping the impact here because it's not affecting the production build.

Severity: S2 → S4
User Story: (updated)
Webcompat Priority: P1 → P3
Webcompat Score: 8 → 5
Webcompat Score: 5 → 4
Webcompat Priority: P3 → P2
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: