Closed Bug 1523210 Opened 11 months ago Closed 11 months ago

Fix text runs being interned due to scroll offsets.

Categories

(Core :: Graphics: WebRender, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla66
Tracking Status
firefox66 --- fixed

People

(Reporter: gw, Assigned: gw)

Details

Attachments

(1 file)

The offset field in the text run key can change, depending on scroll offsets. The previous fix tried to make this relative to the primitive origin, but this doesn't work on all sites (and causes a talos regression).

Instead, for now we can store the reference frame offset (used for snapping) in the text run instance, to avoid it being a factor in the interning key.

In future, we can tidy this up when we fix up the remaining text snapping related bugs.

Assignee: nobody → gwatson
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8d47e7f253d8
Fix text runs being interned due to scroll offsets. r=jrmuizel

Backed out for wrench failures

backout: https://hg.mozilla.org/integration/autoland/rev/32b3bc02aaefacf53c2f843b5a7dd9de852dff87

push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=8d47e7f253d88207678c3b4255632f02dca8cf7e&searchStr=linux%2Cx64%2Cquantumrender%2Cdebug%2Cwebrender%2Cstandalone%2Cwebrender-linux-debug%2Cwr%28wrench%29

failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=224382147&repo=autoland

[task 2019-01-28T03:37:28.072Z] test texture_allocator::test_large ... ok
[task 2019-01-28T03:37:28.077Z] test prim_store::text_run::test_struct_sizes ... FAILED
[task 2019-01-28T03:37:28.077Z]
[task 2019-01-28T03:37:28.077Z] failures:
[task 2019-01-28T03:37:28.077Z]
[task 2019-01-28T03:37:28.077Z] ---- prim_store::text_run::test_struct_sizes stdout ----
[task 2019-01-28T03:37:28.077Z] thread 'prim_store::text_run::test_struct_sizes' panicked at 'assertion failed: (left == right)
[task 2019-01-28T03:37:28.077Z] left: 88,
[task 2019-01-28T03:37:28.077Z] right: 96: TextRun size changed', webrender/src/prim_store/text_run.rs:326:5
[task 2019-01-28T03:37:28.077Z] stack backtrace:
[task 2019-01-28T03:37:28.077Z] 0: 0x55f0f2d3fddf - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::hab66bb8ff7088f29
[task 2019-01-28T03:37:28.077Z] at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
[task 2019-01-28T03:37:28.077Z] 1: 0x55f0f2d48fc7 - std::sys_common::backtrace::print::h56719ed580ab1bba
[task 2019-01-28T03:37:28.077Z] at libstd/sys_common/backtrace.rs:71
[task 2019-01-28T03:37:28.077Z] at libstd/sys_common/backtrace.rs:59
[task 2019-01-28T03:37:28.078Z] 2: 0x55f0f2d43bef - std::panicking::default_hook::{{closure}}::hf8d811a2c97e4b3a
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:211
[task 2019-01-28T03:37:28.078Z] 3: 0x55f0f2d438ee - std::panicking::default_hook::hc6e051251a5e6b4e
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:221
[task 2019-01-28T03:37:28.078Z] 4: 0x55f0f2d442ce - std::panicking::rust_panic_with_hook::h71214e7ce0f7ac01
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:476
[task 2019-01-28T03:37:28.078Z] 5: 0x55f0f2d43e71 - std::panicking::continue_panic_fmt::ha8b8442f4ea9bcac
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:390
[task 2019-01-28T03:37:28.078Z] 6: 0x55f0f2d43dbe - std::panicking::begin_panic_fmt::h11692d2d479bd3e6
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:345
[task 2019-01-28T03:37:28.078Z] 7: 0x55f0f2c500bd - webrender::prim_store::text_run::test_struct_sizes::hdd848bc40e5e7b07
[task 2019-01-28T03:37:28.078Z] at webrender/src/prim_store/text_run.rs:326
[task 2019-01-28T03:37:28.078Z] 8: 0x55f0f2c74d69 - webrender::prim_store::text_run::test_struct_sizes::{{closure}}::h844c3af88487a71a
[task 2019-01-28T03:37:28.078Z] at webrender/src/prim_store/text_run.rs:318
[task 2019-01-28T03:37:28.078Z] 9: 0x55f0f2babbcd - core::ops::function::FnOnce::call_once::h79d21edaea07eb95
[task 2019-01-28T03:37:28.078Z] at libcore/ops/function.rs:238
[task 2019-01-28T03:37:28.078Z] 10: 0x55f0f2c76a3e - <F as alloc::boxed::FnBox<A>>::call_box::h3d8a1810f3c5b40f
[task 2019-01-28T03:37:28.078Z] at libtest/lib.rs:1468
[task 2019-01-28T03:37:28.078Z] at libcore/ops/function.rs:238
[task 2019-01-28T03:37:28.078Z] at liballoc/boxed.rs:672
[task 2019-01-28T03:37:28.078Z] 11: 0x55f0f2d541f9 - __rust_maybe_catch_panic
[task 2019-01-28T03:37:28.078Z] at libpanic_unwind/lib.rs:102
[task 2019-01-28T03:37:28.078Z] 12: 0x55f0f2c98782 - std::sys_common::backtrace::__rust_begin_short_backtrace::h1cacee00af43ed73
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:289
[task 2019-01-28T03:37:28.078Z] at libstd/panic.rs:392
[task 2019-01-28T03:37:28.078Z] at libtest/lib.rs:1423
[task 2019-01-28T03:37:28.078Z] at libstd/sys_common/backtrace.rs:136
[task 2019-01-28T03:37:28.078Z] 13: 0x55f0f2c99224 - std::panicking::try::do_call::h41920762ece46401
[task 2019-01-28T03:37:28.078Z] at libstd/thread/mod.rs:409
[task 2019-01-28T03:37:28.078Z] at libstd/panic.rs:313
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:310
[task 2019-01-28T03:37:28.078Z] 14: 0x55f0f2d541f9 - __rust_maybe_catch_panic
[task 2019-01-28T03:37:28.078Z] at libpanic_unwind/lib.rs:102
[task 2019-01-28T03:37:28.078Z] 15: 0x55f0f2c8644c - <F as alloc::boxed::FnBox<A>>::call_box::h36495f2c1a4be2b6
[task 2019-01-28T03:37:28.078Z] at libstd/panicking.rs:289
[task 2019-01-28T03:37:28.078Z] at libstd/panic.rs:392
[task 2019-01-28T03:37:28.078Z] at libstd/thread/mod.rs:408
[task 2019-01-28T03:37:28.078Z] at liballoc/boxed.rs:672
[task 2019-01-28T03:37:28.078Z] 16: 0x55f0f2d41a8d - std::sys_common::thread::start_thread::h5213f803a61d7811
[task 2019-01-28T03:37:28.078Z] at liballoc/boxed.rs:682
[task 2019-01-28T03:37:28.078Z] at libstd/sys_common/thread.rs:24
[task 2019-01-28T03:37:28.078Z] 17: 0x55f0f2d36c65 - std::sys::unix::thread::Thread::new::thread_start::he89121f566d2a8c7
[task 2019-01-28T03:37:28.078Z] at libstd/sys/unix/thread.rs:90
[task 2019-01-28T03:37:28.078Z] 18: 0x7fda61d59493 - start_thread
[task 2019-01-28T03:37:28.078Z] 19: 0x7fda61884afe - __clone
[task 2019-01-28T03:37:28.078Z] 20: 0x0 - <unknown>
[task 2019-01-28T03:37:28.078Z]
[task 2019-01-28T03:37:28.078Z]
[task 2019-01-28T03:37:28.078Z] failures:
[task 2019-01-28T03:37:28.078Z] prim_store::text_run::test_struct_sizes
[task 2019-01-28T03:37:28.078Z]
[task 2019-01-28T03:37:28.078Z] test result: FAILED. 42 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out
[task 2019-01-28T03:37:28.078Z]
[task 2019-01-28T03:37:28.079Z] error: test failed, to rerun pass '-p webrender --lib'
[taskcluster 2019-01-28 03:37:28.424Z] === Task Finished ===
[taskcluster 2019-01-28 03:37:28.425Z] Unsuccessful task run with exit code: 101 completed in 591.637 seconds

Flags: needinfo?(gwatson)

I have fixed the struct size unit tests and re-queued to land again.

Flags: needinfo?(gwatson)
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f86078e28b87
Fix text runs being interned due to scroll offsets. r=jrmuizel
Status: NEW → RESOLVED
Closed: 11 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla66
You need to log in before you can comment on or make changes to this bug.