Closed Bug 802731 Opened 13 years ago Closed 1 year ago

Google Groups new interface hangs in a group with over 700 spam posts

Categories

(Core :: JavaScript Engine, defect)

x86
Windows XP
defect

Tracking

()

RESOLVED WONTFIX

People

(Reporter: alexf_ba124, Unassigned)

References

()

Details

(Whiteboard: [country-all] )

Attachments

(1 file)

Attempted to open the following link https://groups.google.com/forum/?fromgroups=#!forum/alt.sports.basketball.nba.phila-76ers in a nightly build, running in both safe mode and with add-ons enabled. In both modes, after some time a 'non-responsive script' dialog appears, clicking on this enables page loading to continue, but doing it more than 3 times seems to eventually leads to a browser 'hang'. The exact same link loads correctly in Chrome. In the IRC chat #firefox it was suggested I should capture some performance data, this is at -http://people.mozilla.com/~bgirard/cleopatra/?report=cc397109b9dd64ea3f28b2e327174ce6309968b0 As others in the IRC channel have not yet been able to reproduce this bug it would be appreciated if you could examine the profile date to determine if the issue is with an add-on, the browser , Javscript or Google's interface implementation.
Tested with FF 16 and everything works. Not sure what the issue is, what add-ons are you running?
Adblock Plus 2.1.2 Customizations for Adblock Plus 1.0.3 Firebug 1.10.4 Fox Filter 7.6.4 Gecko Pofiler 1.9.11 Web Developer 1.2.2
Chat log from 18 October 2012 ( Unrelated comments removed) #firefox -->| YOU (Qcoder00) have joined #firefox [INFO] Conference Mode is enabled for this view; joins, leaves, quits and nickname changes are hidden. =-= Topic for #firefox is “Firefox community & support channel || Permission isn't needed to ask your question. If well after asking nobody responds, say "help!" or try http://support.mozilla.org || Get Firefox from http://mozilla.org/firefox” =-= Topic for #firefox was set by Cww on 10 September 2012 17:19:28 Qcoder00 Morning Qcoder00 Did anyone get a chance to look over the profile data I filed yesterday? Qcoder00 Good morning is anyone in? JesperHansen Qcoder00: appears there might have been a confirm dialog waiting for your input but something else was running in the mainthread at the same time so they both clashed Qcoder00 Ah JesperHansen cant tell more than that from the profiler Qcoder00 Well that was what i had available... Qcoder00 I don't have access to a full blown 'tear the code' apart debugger Qcoder00 On something else entirly... Qcoder00 How do i change what about:home displays? JesperHansen Qcoder00: what is your dom.max_script_run_time? Qcoder00 JesperHansen: let me check that Qcoder00 User set integer 0 Qcoder00 Should this be set to a different value? JesperHansen hmm, so its not that dialog Qcoder00 As I said the other day, the link concerned loads acceptably in Chrome... Qcoder00 but 'hangs' in Firefox Qcoder00 Given that Chrome/Firefox share code... Qcoder00 this was suprising JesperHansen what was the link again? dont feel like opening the chatlog once more Qcoder00 Moment, I'm having to check my logs as well Qcoder00 https://groups.google.com/forum/#!forum/alt.sports.basketball.nba.phila-76ers Qcoder00 Whilst that link doesn't actually 'crash' it does 'hang' whilst loading for me Qcoder00 in Firefox... Qcoder00 I will note that in Chrome it take slightlylonger than normal to load... Qcoder00 but when it has over700 or so spam postings to skip over that'sexpected Qcoder00 I want to conclusively find out that it isn't a browser issue before i send Google a strongly worded letter JesperHansen also, any differences? are you logged in with google on firefox but not chrome? or other things you could think of Qcoder00 JesperHansen: I use the same login on Chrome and Firefox Qcoder00 As far as Google is concerned , it should be serving an appropriate page for each browser Qcoder00 And it's highly unlikely that Google is favouring Chrome Cork Qcoder00: have you tested changing your ua? JesperHansen Qcoder00: well, I can get it to hang for 5 seconds, but then it returns Cork there other pages change based on that Qcoder00 Cork: How do I 'fake' a UA string in Firefox, so it tells Google it's actually Chrome? JesperHansen Qcoder00: if I press the "This topic has been hidden because it was flagged for abuse (+xxx more) JesperHansen Qcoder00: o, I see this number is actually increasing Qcoder00 JesperHansen: The hang I get is when loading the page in the first place Qcoder00 It get's to around 300 or so posts 'Flagged for abuse' and hangs up JesperHansen Qcoder00: I see why now Cork Qcoder00: about:config create a string generic.useragent.overide JesperHansen Qcoder00: It keeps loading threads that have been flagged for abuse JesperHansen Qcoder00: watch the number Cork btw ya, i can reproduce the hang here JesperHansen Qcoder00: 414 now Qcoder00 As in an actual http error? JesperHansen was 310 just before JesperHansen 444 now JesperHansen Qcoder00: it keeps loading lol JesperHansen I can see how you would get it confused Qcoder00 So the hang is because Google's server i getting hammered by it's own interface? Qcoder00 Qcoder00 *is JesperHansen Qcoder00: nono, the page keeps asking firefox to load new without stopping Cork ah so js locks firefox ui Qcoder00 So is the fault in Firefox or in Google's code? JesperHansen Qcoder00: the reason chrome doesn't crash is that the UI and the website for them is different processes JesperHansen Qcoder00: while firefox is 1 process but multiple threads JesperHansen and they're killing our mainthread with this junk Cork isn't the problem that chrome and content shares the same js thread? JesperHansen Cork: for us yea Qcoder00 So the glitch is in Firefox? Cork nods JesperHansen Qcoder00: the glitch is in the aggressive web code Cork Qcoder00: its badly written web code, and firefox doens't have code to prevent the effect Qcoder00 Cork: So Firefox doesn't have the code that Chrome does to catch an 'aggressive' JS script ? Cork Qcoder00: no, its not catch JesperHansen dont think google had made google group for this particular case Cork its like you run on two different machines kinda Cork one can hog how much it wants, it won't affect the other one Qcoder00 Cork: As I said I wanted to be clear before I sent Google a strongly worded letter saying it was an issue on thier side JesperHansen that should change at some point though update plugins when the plugins in use *are* the latest for the OS I'm using wh Qcoder00 JesperHansen: From the Mozilla/Firefox point of view is this issue solveable on the Firefox side? Cork its still badly written web code though, cause the way they've written it you can't update the page inbetween Cork surprises the heck out of me that they'r using syncronus net calls Qcoder00 Hmm, but badly written JS code shouldn't 'hang' a browser... ( It doesn't for example hang chrome) JesperHansen Qcoder00: think of it this way: As long as there is white screenspace available on groups, then google groups will keep loading new topics. But at the same time is it collapsing the topics because they're all flagged for abuse Qcoder00 JesperHansen: HMM inkbottle I want to change font family in android-firefox, because I like serif font. I've been hinted toward about:config, but then there is dozens of settings under the search "font". So anyone would know which to change, or any other way? JesperHansen Qcoder00: again: google has a process for ui and a process for each tab Cork JesperHansen: i'm quite sure its one process for each domain, not each tab Qcoder00 Well, I'm sorry that this issue with Google groups seems to have exposed a potential flaw (either in Google's code or in Firefox), the next question is how to solve it JesperHansen Cork: nah, it's one per tab, one per extension and then one for ui Cork ouch Cork that should cost them quite a bit JesperHansen Cork: they dont handle many tabs well Cork i know Cork but this means they don't handle many extensions well either Qcoder00 Is there anyone here that's able to write the sort of detailed analysis that could be sent to Google to expalin the technical issue? Cork (i love it when chrome fans argue "memory is not a problem) Cork Qcoder00: i don't think it needs to be that technical Cork either they bother to look at it, or how technical it is doesn't matter JesperHansen Qcoder00: see if reddit picks it up Cork lol JesperHansen 774 threads Qcoder00 I don't use reddit sadly JesperHansen Qcoder00: also there is google employees that checks our bugzilla Qcoder00 OK Qcoder00 As I said teh bugzilla probably needs updating based on this conversation... (I've got no objections to people quoting logs) JesperHansen Qcoder00: just quote from here. Cut out irrelevant joins and leave and other talk JesperHansen hey my firefox finished loading JesperHansen sweet, got the tab closed lol spell-check dictionaries Cork where did it end? JesperHansen 774 was the last I saw JesperHansen then it showed me all of the topics Cork ah no 779 my just unhanged JesperHansen so, 779 http requests we waited for? nice Cork ya... Cork who in there right mind uses synced ajax calls >_<' Qcoder00 Well Coding decisions are a vendor choice.. JesperHansen bad coding decisions are as well Qcoder00 I'm about to post the earlier chatter to the Bugzilla JesperHansen no one should be interested at getting 779 requests Cork ya, but synced ajax call is a REALLY well known no-no for website-js developers Cork i question there structure a bit too though JesperHansen think I remember something about the sync'd getting async'd with callback internally so they dont kill the ui Cork the ui looks really locked to me though JesperHansen yea it repainted tho JesperHansen which was odd Cork only after each post is fetched Cork each post block that is Cork and thats exactly what i expect from synced ajax calls JesperHansen nuke that ctrl+w
Assignee: nobody → english-us
Status: UNCONFIRMED → NEW
Component: Untriaged → English US
Ever confirmed: true
Product: Firefox → Tech Evangelism
Version: 19 Branch → unspecified
Hi Amanda, do you know who we can CC on this subject? Throws ~779 http requests before it is done loading
See also Bug 793359
Assignee: english-us → nobody
Component: English US → Desktop
Whiteboard: [country-all]
Confirmed The initial load is fast, but then it seems to try to load the remaining of the page bit by bit with the same series of requests. 1 GET and 2 POST ``` GET /csi?s=gdf&v=3&action=rpc,rpc_st,rpc_so,rpc_st_so,rpc_consumer,rpc_st_consumer,rpc_so_consumer,rpc_st_so_consumer,rpc_d77bfea0,rpc_st_d77bfea0,rpc_so_d77bfea0,rpc_st_so_d77bfea0,rpc_consumer_d77bfea0,rpc_st_consumer_d77bfea0,rpc_so_consumer_d77bfea0,rpc_st_so_consumer_d77bfea0&it=fc_getTopics.1486,fc_gmaeift.1264 HTTP/1.1 Host: csi.gstatic.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:51.0) Gecko/20100101 Firefox/51.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://groups.google.com/forum/?fromgroups= Connection: keep-alive ``` Then ``` POST /forum/msg_bkg?appversion=1&hl=ja HTTP/1.1 Host: groups.google.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:51.0) Gecko/20100101 Firefox/51.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://groups.google.com/forum/?fromgroups= Content-Type: text/x-gwt-rpc; charset=utf-8 X-Groups-Time-Zone: 3502049_20_20__20_ X-Groups-Group-Name: alt.sports.basketball.nba.phila-76ers X-GWT-Permutation: 8620BBFE4C024C0CA87AC53133E81797 X-GWT-Module-Base: https://groups.google.com/forum/ Content-Length: 293 Cookie: NID=85=FZd8WGSnCPz_l02PgjAkXSEz1A422uwIvIubxBiJZzESxShw11aN22jzWYbV9A7Y1rDGbloeZWWisY6Kh4LIbjs_TnTJjirmfBYYl2ytRwztqYKw7UShDVVKDpyXP9CD; __utma=118165087.555902809.1472426973.1472426973.1472426973.1; __utmb=118165087.1.10.1472426973; __utmc=118165087; __utmz=118165087.1472426973.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt_*groups_ga*=1 Connection: keep-alive ``` then ``` POST /forum/msg?appversion=1&hl=ja HTTP/1.1 Host: groups.google.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:51.0) Gecko/20100101 Firefox/51.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://groups.google.com/forum/?fromgroups= Content-Type: text/x-gwt-rpc; charset=utf-8 X-Groups-Time-Zone: 3502049_20_20__20_ X-Groups-Group-Name: alt.sports.basketball.nba.phila-76ers X-GWT-Permutation: 8620BBFE4C024C0CA87AC53133E81797 X-GWT-Module-Base: https://groups.google.com/forum/ Content-Length: 250 Cookie: NID=85=FZd8WGSnCPz_l02PgjAkXSEz1A422uwIvIubxBiJZzESxShw11aN22jzWYbV9A7Y1rDGbloeZWWisY6Kh4LIbjs_TnTJjirmfBYYl2ytRwztqYKw7UShDVVKDpyXP9CD; __utma=118165087.555902809.1472426973.1472426973.1472426973.1; __utmb=118165087.1.10.1472426973; __utmc=118165087; __utmz=118165087.1472426973.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt_*groups_ga*=1 Connection: keep-alive ``` And indeed it slows down the browser a lot with a high CPU. GET https://csi.gstatic.com/csi [HTTP/2.0 204 No Content 145ms] POST XHR https://groups.google.com/forum/msg_bkg [HTTP/2.0 200 OK 333ms] POST XHR https://groups.google.com/forum/msg [HTTP/2.0 200 OK 702ms] GET https://csi.gstatic.com/csi [HTTP/2.0 204 No Content 134ms] POST XHR https://groups.google.com/forum/msg_bkg [HTTP/2.0 200 OK 601ms] POST XHR https://groups.google.com/forum/msg [HTTP/2.0 200 OK 772ms] … etc Switching to needsdiagnosis
Whiteboard: [country-all] → [country-all] [needsdiagnosis]
If I fake the UA to be chrome it doesn't change anything on Gecko. It is still very slow. In Opera blink, the UI is also less responsive, but reacts a bit better. All of that said, not sure it's a Web Compat bug. It looks like more something which requires a performance optimization in Gecko.
Hmm I got a freeze on Opera Blink too. No hope? Definitely not webcompat.
Moving this to Firefox Untriaged -- not sure where this should live, but it doesn't seems like a TE issue. Right now opening the URL w/ e10s more or less makes all my tabs turn into white spinny e10s tabs. Pretty bad.
platform-rel: --- → ?
Component: Desktop → Untriaged
Product: Tech Evangelism → Firefox
Investigating further this issue, I've came up with the following profile reports: https://cleopatra.io/#report=d6fb88256b5d91ddb071636b3040691025618c73 https://cleopatra.io/#report=d53a8edd756bfd1db5995022569756295b562ff7 I'm also moving this to core::untriaged and perhaps there's someone with extensive knowledge on this area that might be able to help here.
Flags: needinfo?(n.nethercote)
Product: Firefox → Core
In the profile in comment 0, we're spending at least 677 samples inside nsPrompter.js... opening a modal prompt? In the profiles in comment 10, I see uBlock taking some time to react to DOM changes... (1895 samples in the first profile). But the dominant activity is some really busy obfuscated JavaScript that's running on the page. I would assume that Chrome seems less affected by this due to multiple content processes, but in general, I think the JavaScript on the page just needs to try to be more efficient in general.
Based on commnet 11, I will move this to Core :: JavaScript Engine.
Component: Untriaged → JavaScript Engine
The problem is definitely the page itself. 1. Force a reload of the page: all is ok. 2. Click the vertical scroll bar: all is ok. 3. Press Ctrl-End: the page will scroll to the bottom, which will trigger a fetch-more-posts algorithm to append to the thread: browser become unresponsive, janky. This is true for any browser on this specific page. When I put a breakpoint in uBlock Origin's ("uBO") mutation observer, I observed that many mutation events were fired in sequence as a result of step 3, with the following mutation record counts: 1928 records 3818 records 5708 records 7598 records 9488 records 11378 records 13268 records 15158 records 17048 records 18938 records 20828 records 22718 records 24608 records 26498 records 28388 records 30278 records 32168 records 34058 records 35948 records 37838 records 39728 records 41618 records 43508 records 45398 records 47288 records 49178 records 51068 records 52958 records 54848 records 56738 records 58628 records 60494 records 1811 records 960 records 30 records This causes uBO to works rather hard to process them, but the page's own javascript code is where the execution is mostly spent. It's unclear to me what the page is doing for such an amount of mutation events to be generated. I see the thread on the page has been spammed hard, but not enough to explain the staggering amount of mutation records being generated. With a quick look at the mutations records, I see added and removed nodes. This seems to be a case of appending stuff to the DOM, removing it, then re-appending again. Once all these mutation events were handled, the page went back to being normally responsive, with typically mutation events fired with mutation records count in the ~1800, i.e. manageable by the javascript code on the page.
I looked at the profiles, but I'm terrible at reading Cleopatra and I don't see anything more than what mconley mentioned.
Flags: needinfo?(n.nethercote)
Note: This seems to have improved a little with the most recent release (49.0.2), but the browser still takes a long time to work it's way through loading certain groups with a lot of pages "flagged for abuse". It would of course be so much simpler if Google was forcibly compelled to clean up the groups concerned, but that's beyond the power of Mozilla developers.
platform-rel: ? → ---
Whiteboard: [country-all] [needsdiagnosis] → [country-all]
Severity: normal → S3

Noting that this bug report is rendered moot, by changes in the UI design at Google Groups in the intervening 6 years. ~~~~

We are closing this bug based on the information provided

Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: