Closed Bug 1314045 Opened 3 years ago Closed 3 years ago

Stylo debug crash in layout/reftests/font-inflation/list-1.html: "ASSERTION: Bad loading table"

Categories

(Core :: Layout, defect, P3)

defect

Tracking

()

RESOLVED FIXED
Tracking Status
firefox52 --- disabled
firefox-esr52 --- disabled
firefox53 --- disabled
firefox54 --- disabled
firefox55 --- fixed

People

(Reporter: mbrubeck, Assigned: bradwerth)

References

Details

(Keywords: assertion, crash)

Attachments

(1 file)

This happens when running "layout/reftests/font-inflation/list-1.html" in a Stylo debug build:

[8633] ###!!! ASSERTION: Bad loading table: 'mSheets->mLoadingDatas.Get(&key, &loadingData) && loadingData == aLoadData', file /home/mbrubeck/src/mozilla-central/layout/style/Loader.cpp, line 1879
#01: mozilla::css::Loader::DoSheetComplete(mozilla::css::SheetLoadData*, nsresult, nsTArray<RefPtr<mozilla::css::SheetLoadData> >&) (/home/mbrubeck/src/mozilla-central/layout/style/Loader.cpp:1877 (discriminator 7))
#02: mozilla::css::Loader::SheetComplete(mozilla::css::SheetLoadData*, nsresult) (/home/mbrubeck/src/mozilla-central/layout/style/Loader.cpp:1825)
#03: mozilla::css::SheetLoadData::OnStreamComplete(nsIUnicharStreamLoader*, nsISupports*, nsresult, nsAString_internal const&) (/home/mbrubeck/src/mozilla-central/layout/style/Loader.cpp:878)

This is triggered by this incorrect line in the reftest, which links to a non-existent "ahem.css":

<link rel="stylesheet" type="text/css" href="ahem.css" />

The underlying bug is that Loader::LoadSheet is called twice for the same URI, but the second call does not "glom on" to the existing load because the relevant check is in a Gecko-only code path.  As a result, the SheetLoadData inserted into Loader::mLoadingDatas by the first load is overwritten by the second load, leaving the table in an inconsistent state.

This will be fixed when caching is implemented for ServoStyleSheets, but there may be a simpler fix in the meantime.

This was originally found in bug 1292275 but it is separate from the non-debug crash fixed in that bug.
Priority: -- → P1
Keywords: assertion
Depends on: 1317427
Pushed by cmccormack@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/4787d54f7aa6
stylo: Downgrade "Bad loading table" assertion since it occurs frequently. r=me
Pushed by archaeopteryx@coole-files.de:
https://hg.mozilla.org/integration/mozilla-inbound/rev/0d069e7395e9
stylo: Downgrade "Bad loading table" assertion since it occurs frequently. r=me
Backed out for Windows debug build bustage:

https://hg.mozilla.org/integration/mozilla-inbound/rev/70e19926d22bc7ad68fc64825a869ab65afde184

Re-push with failures: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=a59eac65cc60b1c926d3d4fd8051c7b6e308b076
Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=73304124&repo=mozilla-inbound

> c:/builds/moz2_slave/m-in-w32-d-0000000000000000000/build/src/layout/style/Loader.cpp(1885): error C2220: warning treated as error - no 'object' file generated
Flags: needinfo?(cam)
Pushed by cmccormack@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/89782a895ca2
stylo: Downgrade "Bad loading table" assertion since it occurs frequently. r=me
Flags: needinfo?(cam)
Keywords: leave-open
Priority: P1 → P3
Duplicate of this bug: 1337611
I'll take this on.
Assignee: mbrubeck → bwerth
Attachment #8846202 - Flags: review?(cam)
Comment on attachment 8846202 [details]
Bug 1314045 Part 1: Return load table assertion to full force now that Servo stylesheet caching will keep load table consistent.

https://reviewboard.mozilla.org/r/119304/#review121296
Attachment #8846202 - Flags: review?(cam) → review+
Pushed by bwerth@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/13e7021f1350
Part 1: Return load table assertion to full force now that Servo stylesheet caching will keep load table consistent. r=heycam
Status: NEW → RESOLVED
Closed: 3 years ago
Keywords: leave-open
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.