Closed Bug 460323 Opened 11 years ago Closed 11 years ago

[FIX]"ASSERTION: Bad loading table" involving get.live.com

Categories

(Core :: CSS Parsing and Computation, defect)

x86
macOS
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla1.9.1

People

(Reporter: jruderman, Assigned: bzbarsky)

References

(Blocks 1 open bug)

Details

(Keywords: assertion)

Attachments

(3 files)

Following up on my promise from bug 438236 ;)

Steps to reproduce:
1. Load http://get.live.com/writer/overview
2. Paste this bookmarklet into the address bar and press enter:

javascript:
function newSS()
{
  var s = document.createElement("link");
  s.setAttributeNS(null, "href", "http://get.live.com/css/WL/common.css");
  s.setAttributeNS(null, "rel", "stylesheet");
  s.setAttributeNS(null, "type", "text/css");
  return s;
}
var head = document.getElementsByTagName("head")[0];
for (var i = 0; i < 10; ++i) void head.appendChild(newSS());

Result:
###!!! ASSERTION: Bad loading table: 'mLoadingDatas.Get(&key, &loadingData) && loadingData == aLoadData', file layout/style/nsCSSLoader.cpp, line 1605
Attached patch FixSplinter Review
Assignee: nobody → bzbarsky
Status: NEW → ASSIGNED
Attached patch Same as diff -wSplinter Review
If the already-loaded sheet is modified, we need to fall back on looking at loading sheets, not just creating a new sheet.
Attachment #343677 - Flags: superreview?(peterv)
Attachment #343677 - Flags: review?(peterv)
Summary: "ASSERTION: Bad loading table" involving get.live.com → [FIX]"ASSERTION: Bad loading table" involving get.live.com
Attachment #343677 - Flags: superreview?(peterv)
Attachment #343677 - Flags: superreview+
Attachment #343677 - Flags: review?(peterv)
Attachment #343677 - Flags: review+
Pushed changeset 457619abbaa5.  Jesse, any idea how to sanely turn this into a crashtest?  The hard part is knowing when to stop the test.... :(
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Flags: in-testsuite?
Resolution: --- → FIXED
If you use setTimeout at the end of doIt, are you guaranteed that the stylesheets all load before the timeout fires, thanks to using data: URLs?  Or can you use the DOM styleSheet API to tell whether the stylesheets have all loaded, and even test that the second and third stylesheets weren't modified by the call to change the first one?
No guarantees on data:.  And DOM stylesheet doesn't provide "has this sheet loaded?" info, really.

I suspect the test will have to wait on bug 185236.
Depends on: 185236
You can use the DOM Stylesheet API to see whether all the rules are there, but I guess that's not quite the same thing as knowing whether it has finished loading.
Target Milestone: --- → mozilla10
Nah, this was fixed for like Firefox 3.5 or something.  That last checkin was just a test.
Target Milestone: mozilla10 → mozilla1.9.1
You need to log in before you can comment on or make changes to this bug.