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

assertion failed: !self.nodes.contains_key(&id) #19287

Closed
mateon1 opened this issue Nov 19, 2017 · 0 comments · Fixed by #19933
Closed

assertion failed: !self.nodes.contains_key(&id) #19287

mateon1 opened this issue Nov 19, 2017 · 0 comments · Fixed by #19933

Comments

@mateon1
Copy link
Contributor

mateon1 commented Nov 19, 2017

This is the same panic as #18441, but probably with a different cause.

Found with modified domato

Testcase:

<details open style="overflow: auto">
assertion failed: !self.nodes.contains_key(&id) (thread RenderBackend, at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/clip_scroll_tree.rs:493)
stack backtrace:
   0:     0x55b6a85741b4 - backtrace::backtrace::libunwind::trace
                        at .cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/libunwind.rs:53
                         - backtrace::backtrace::trace<closure>
                        at .cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/mod.rs:42
   1:     0x55b6a856950f - backtrace::capture::{{impl}}::new
                        at .cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/capture.rs:64
   2:     0x55b6a7a725de - servo::main::{{closure}}
                        at ports/servo/main.rs:130
   3:     0x55b6ae2b7556 - std::panicking::rust_panic_with_hook
                        at /checkout/src/libstd/panicking.rs:578
   4:     0x55b6a8b85d96 - std::panicking::begin_panic<&str>
                        at /checkout/src/libstd/panicking.rs:538
   5:     0x55b6a89126f6 - webrender::clip_scroll_tree::{{impl}}::add_node
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/clip_scroll_tree.rs:493
   6:     0x55b6a8b3e7d3 - webrender::frame_builder::{{impl}}::add_scroll_frame
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame_builder.rs:502
   7:     0x55b6a8b34f4e - webrender::frame::{{impl}}::flatten_scroll_frame
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:197
   8:     0x55b6a8b3795a - webrender::frame::{{impl}}::flatten_item
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:586
   9:     0x55b6a8b3499c - webrender::frame::{{impl}}::flatten_items
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:151
  10:     0x55b6a8b35827 - webrender::frame::{{impl}}::flatten_stacking_context
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:294
  11:     0x55b6a8b374c2 - webrender::frame::{{impl}}::flatten_item
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:534
  12:     0x55b6a8b3499c - webrender::frame::{{impl}}::flatten_items
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:151
  13:     0x55b6a8b34675 - webrender::frame::{{impl}}::flatten_root
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:117
  14:     0x55b6a8b3aa13 - webrender::frame::{{impl}}::create
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/frame.rs:1121
  15:     0x55b6a89f3652 - webrender::render_backend::{{impl}}::build_scene
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/render_backend.rs:89
  16:     0x55b6a89f4c34 - webrender::render_backend::{{impl}}::process_document
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/render_backend.rs:293
  17:     0x55b6a89f60f5 - webrender::render_backend::{{impl}}::run
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/render_backend.rs:502
  18:     0x55b6a8958425 - webrender::renderer::{{impl}}::new::{{closure}}
                        at .cargo/git/checkouts/webrender-c3596abe1cf4f320/aa74cdf/webrender/src/renderer.rs:1815
  19:     0x55b6a889b05a - std::sys_common::backtrace::__rust_begin_short_backtrace<closure,()>
                        at /checkout/src/libstd/sys_common/backtrace.rs:134
  20:     0x55b6a8a89cb3 - std::thread::{{impl}}::spawn::{{closure}}::{{closure}}<closure,()>
                        at /checkout/src/libstd/thread/mod.rs:400
  21:     0x55b6a88842ca - std::panic::{{impl}}::call_once<(),closure>
                        at /checkout/src/libstd/panic.rs:296
  22:     0x55b6a8b870d2 - std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure>,()>
                        at /checkout/src/libstd/panicking.rs:480
  23:     0x55b6ae2be69c - panic_unwind::__rust_maybe_catch_panic
                        at /checkout/src/libpanic_unwind/lib.rs:99
  24:     0x55b6a8b862a2 - std::panicking::try<(),std::panic::AssertUnwindSafe<closure>>
                        at /checkout/src/libstd/panicking.rs:459
  25:     0x55b6a889c235 - std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure>,()>
                        at /checkout/src/libstd/panic.rs:361
  26:     0x55b6a8a89ad1 - std::thread::{{impl}}::spawn::{{closure}}<closure,()>
                        at /checkout/src/libstd/thread/mod.rs:399
  27:     0x55b6a8ab4dc3 - alloc::boxed::{{impl}}::call_box<(),closure>
                        at /checkout/src/liballoc/boxed.rs:762
  28:     0x55b6ae2b626b - alloc::boxed::{{impl}}::call_once<(),()>
                        at /checkout/src/liballoc/boxed.rs:772
                         - std::sys_common::thread::start_thread
                        at /checkout/src/libstd/sys_common/thread.rs:24
                         - std::sys::imp::thread::{{impl}}::new::thread_start
                        at /checkout/src/libstd/sys/unix/thread.rs:90
  29:     0x7fa5e732c493 - start_thread
  30:     0x7fa5e6c51abe - __clone
  31:                0x0 - <unknown>
ERROR:servo: assertion failed: !self.nodes.contains_key(&id)
bors-servo pushed a commit to servo/webrender that referenced this issue Jan 31, 2018
Remove external scroll ids from ClipId

Move the concept of external scroll ids to ScrollFrames themselves. It
was probably a mistake to integrate this into ClipId in the first place.
Moving it out allows us to simplify a few code paths and will allow us
to remove user defined ClipIds entirely, making things simpler and more
consistent. This will also allow fixing Servo bugs servo/servo#19287,
servo/servo#17176, and servo/servo#19648.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/webrender/2315)
<!-- Reviewable:end -->
mrobinson added a commit to mrobinson/servo that referenced this issue Feb 2, 2018
This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes servo#17176.
Fixes servo#19287.
Fixes servo#19648.
@mrobinson mrobinson mentioned this issue Feb 2, 2018
5 tasks
bors-servo pushed a commit that referenced this issue Feb 2, 2018
Update WebRender

This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes #17176.
Fixes #19287.
Fixes #19648.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #17176, #19287, and #19648.

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
mrobinson added a commit to mrobinson/servo that referenced this issue Feb 2, 2018
This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes servo#17176.
Fixes servo#19287.
Fixes servo#19648.
bors-servo pushed a commit that referenced this issue Feb 2, 2018
Update WebRender

This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes #17176.
Fixes #19287.
Fixes #19648.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #17176, #19287, and #19648.

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19933)
<!-- Reviewable:end -->
mrobinson added a commit to mrobinson/servo that referenced this issue Feb 6, 2018
This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes servo#17176.
Fixes servo#19287.
Fixes servo#19648.
mrobinson added a commit to mrobinson/servo that referenced this issue Feb 6, 2018
This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes servo#17176.
Fixes servo#19287.
Fixes servo#19648.
bors-servo pushed a commit that referenced this issue Feb 6, 2018
Update WebRender

This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes #17176.
Fixes #19287.
Fixes #19648.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #17176, #19287, and #19648.

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19933)
<!-- Reviewable:end -->
mrobinson added a commit to mrobinson/servo that referenced this issue Feb 6, 2018
This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes servo#17176.
Fixes servo#19287.
Fixes servo#19648.
bors-servo pushed a commit that referenced this issue Feb 6, 2018
Update WebRender

This allows servo to use the ExternalScrollId API from WebRender fixing
some issues related to duplicate scroll root ids.

Fixes #17176.
Fixes #19287.
Fixes #19648.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #17176, #19287, and #19648.

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19933)
<!-- Reviewable:end -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant