Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Layout 2020 panics in WebRender with mix-blend-mode over 16k pixels #26463

Open
SimonSapin opened this issue May 7, 2020 · 0 comments
Open

Layout 2020 panics in WebRender with mix-blend-mode over 16k pixels #26463

SimonSapin opened this issue May 7, 2020 · 0 comments

Comments

@SimonSapin
Copy link
Member

@SimonSapin SimonSapin commented May 7, 2020

Test case:

<html style="background: green; height: 17000px">
<body style="mix-blend-mode: difference; color: yellow">
Test

Expected result, and actual result in Layout 2013 or Firefox: the page renders

Actual result in Layout 2020: crash with

[2020-05-07T13:24:14Z ERROR webrender::render_task] Attempting to create a render task of size 1024x34000
explicit panic (thread WRRenderBackend#0, at /home/simon/.cargo/git/checkouts/webrender-c3596abe1cf4f320/4ba17a6/webrender/src/render_task.rs:37)
   0: servo::backtrace::print
   1: servo::main::{{closure}}
   2: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:515
   3: std::panicking::begin_panic
   4: webrender::render_task::RenderTask::new_picture
   5: webrender::picture::PicturePrimitive::take_context
   6: webrender::frame_builder::FrameBuilder::build
   7: webrender::render_backend::Document::build_frame
   8: webrender::render_backend::RenderBackend::update_document
   9: webrender::render_backend::RenderBackend::run
  10: std::sys_common::backtrace::__rust_begin_short_backtrace
  11: core::ops::function::FnOnce::call_once{{vtable.shim}}
  12: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c/src/liballoc/boxed.rs:1008
  13: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c/src/liballoc/boxed.rs:1008
      std::sys::unix::thread::Thread::new::thread_start
             at src/libstd/sys/unix/thread.rs:87
  14: start_thread
             at /build/glibc-OTsEL5/glibc-2.27/nptl/pthread_create.c:463
  15: __clone
[2020-05-07T13:24:14Z ERROR servo] explicit panic
Stack trace for thread "WRRenderBackend#0"
   0: servo::backtrace::print
   1: servo::install_crash_handler::handler
Segmentation fault (core dumped)

The panic comes from WebRender when the size of a "render task" is more than 16000 device pixels in either dimension:

https://github.com/servo/webrender/blob/4ba17a61580a03b68881ffba7ee22bcf8e1aac72/webrender/src/render_task.rs#L28-L39

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.