Closed
Bug 494874
Opened 15 years ago
Closed 15 years ago
Content flickers into view and then disappears
Categories
(Core :: DOM: Core & HTML, defect)
Core
DOM: Core & HTML
Tracking
()
RESOLVED
WONTFIX
People
(Reporter: christian.bugzilla, Assigned: sicking)
References
Details
Attachments
(5 files, 1 obsolete file)
Going to this URL: http://people.mozilla.com/~csejersen/fennec/req.html causes the content to appear briefly (flickers) and then disappear again. See screen-shots for shiretoko and the expected behavior.
Reporter | ||
Comment 1•15 years ago
|
||
Comment 2•15 years ago
|
||
Regression range:
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=7d9bea3fa51a&tochange=089a09bb1969
Component: General → DOM
OS: Mac OS X → All
Product: Firefox → Core
QA Contact: general → general
Hardware: x86 → All
Version: 3.5 Branch → Trunk
Updated•15 years ago
|
Flags: blocking1.9.1?
Assignee | ||
Comment 3•15 years ago
|
||
A smaller testcase would be great, but I'm strongly inclined to guess that this is a regression from bug 461555. Though it'd be the first that we hear of it if so.
Blocks: 461555
Assignee | ||
Updated•15 years ago
|
Keywords: testcase-wanted
Comment 4•15 years ago
|
||
Ria: that's a mozilla-central range; does that mean this also happens on trunk?
Jonas: yeah, I suspected the same bug from that range. Can you look at Christian's page and see if he's, perhaps, patterned his JS in a way that runs afoul? Or Christian, can you work on a minimized testcase?
No longer blocks: 461555
Keywords: testcase-wanted
Comment 5•15 years ago
|
||
(restoring flags while bitching about bugzilla)
Blocks: 461555
Keywords: testcase-wanted
Comment 6•15 years ago
|
||
(In reply to comment #4)
Yes, I tested only trunk (on Windows).
Updated•15 years ago
|
Assignee: nobody → jonas
Flags: blocking1.9.1? → blocking1.9.1+
Reporter | ||
Comment 7•15 years ago
|
||
Here is a somewhat simpler testcase: http://people.mozilla.com/~csejersen/fennec/req-simpler.html
Comment 8•15 years ago
|
||
I can reproduce this on 3.0.10 if I cut down the size of bugs-2009-05-26.js to 65536 bytes or less. Race condition?
Comment 9•15 years ago
|
||
Certainly sounds like an internal race in the page's code, but we should understand whether the change in who wins the race is something that could affect web compat in cases that don't race-by-design.
Comment 10•15 years ago
|
||
Does this still need to block if it's not a regression?
Keywords: testcase-wanted
Comment 11•15 years ago
|
||
Mike, see comment 9. The race on this page is not a regression, sounds like, but we need to figure out whether we inadvertently changed script execution order in cases that didn't use to race....
We do still need a testcase, btw. The last file here is still using this huge framework.
Comment 12•15 years ago
|
||
Here is a somewhat reduced testcase. exhibit-api.js still needs to be reduced. The page shows up blank in the latest 1.9.1 nightly but shows up fine in 3.0.10. There are two strange things happening in 3.0.10 though, as you will see in the source code.
Comment 13•15 years ago
|
||
Note that exhibit-api.js dynamically pulls in a few dozen other js files....
Assignee | ||
Comment 14•15 years ago
|
||
My gut feeling, based on comment 12 and the fact that we haven't seen any other issues from bug 461555, which just aligned us with IE behavior, is that this is a website bug.
But it'd be very nice to make sure that is the case.
But i'm fine with not blocking on this, though I'm gonna keep trying to figure out what's going wrong here.
Comment 15•15 years ago
|
||
Per comment 14, unblocking. If we start getting more dupes, we can re-evaluate.
Flags: blocking1.9.1+ → blocking1.9.1-
Comment 16•15 years ago
|
||
Okay, the basic problem here is that the original webpage is using "autocreate=false" rather than "autoCreate=false". This causes create.js (http://static.simile.mit.edu/exhibit/api-2.0/scripts/create.js) to be loaded when it really shouldn't be. The script on this page resets the state of the page.
Still looking into whether everything is being loaded in the right order...
Comment 17•15 years ago
|
||
Attachment #379973 -
Attachment is obsolete: true
Comment 18•15 years ago
|
||
Interesting. In Fx2, that testcase shows:
DOMContentLoaded init
with or without the alert. That's also the behavior I see in Safari. In Fx3, as the testcase says, one gets "DOMContentLoaded init" with the alert and "init DOMContentLoaded" without.
On trunk, as the testcase says, one always gets "init DOMContentLoaded".
The change from Fx2 to Fx3 likely had to do with switching to firing DOMContentLoaded async, and with the fact that we processed events while the alert is up. On trunk, I bet we delay the DOMContentLoaded while the alert is up (because we generally delay various stuff while alerts are up now), so get the output. But sicking should know more.
Given this testcase, I think the page has an inherent race, but it'd be interesting to see what the HTML5 spec has to say about the ordering here.
Assignee | ||
Comment 19•15 years ago
|
||
With regards to the problem described initially in this bug (testcase in comment 0 failing), the alert thing is sort of a red herring since that testcase doesn't have an alert. Right?
Michael: I assume the alert was something you put in while debugging, right? Not something that existed in the original page.
I'm actually surprised that we in 3.5 is not firing the DOMContentLoaded event while the alert is up. I thought we were only affecting UI events as well as timers. Smaug, DOMContentLoaded should be able to fire fine while an alert() is up, right?
In any case, I'm leaning towards that this but is a WONTFIX. The page is inherently racy. Nothing says that the dynamically inserted script wouldn't run somewhere in the middle of the markup due to a packet boundary or some such.
Comment 20•15 years ago
|
||
Comment 21•15 years ago
|
||
This demonstrates something a bit closer to what the original page was like. The original page did not use an alert - it was just a handy way to replicate the delay caused by the script load.
Assignee | ||
Comment 22•15 years ago
|
||
Oh, I just realized why DOMContentLoaded gets delayed and doesn't fire even during the alert().
With the new code I wrote to support defer, I tried to minimize the risk of exactly the type of race conditions that this testcase has. We now never fire DOMContentLoaded until until the scriptloader has run all pending scripts. So when we're done parsing the page, we unblock all deferred scripts, and then let things take run its course until the scriptloader is totally empty, then we drop the parser and fire DOMContentLoaded.
So it has nothing to do with suspend/suppress-events work that Smaug did.
So things work as designed, and according to what IMHO makes the most sense and results in the least risk of races.
Marking WONTFIX for now, we can reopen if it turns out that this completely breaks the web :)
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → WONTFIX
Updated•6 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•