Skip to content

Intermittent panic during webgl tests #40417

@jdm

Description

@jdm
  ▶ CRASH [expected OK] /_webgl/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html
  │   → Traceback (most recent call last):
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 1147, in run_func
  │   →     self.result = True, self.func(self.protocol, self.url, self.timeout)
  │   →                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 1236, in do_testharness
  │   →     test_window = self.create_test_window(protocol)
  │   →                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 1274, in create_test_window
  │   →     test_window = protocol.base.create_window()
  │   →                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 90, in create_window
  │   →     return self.webdriver.new_window(type_hint=type)
  │   →            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/webdriver/webdriver/client.py", line 588, in new_window
  │   →     value = self.send_session_command("POST", "window/new", body)
  │   →             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/webdriver/webdriver/client.py", line 556, in send_session_command
  │   →     return self.send_command(method, url, body, timeout)
  │   →            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/webdriver/webdriver/client.py", line 505, in send_command
  │   →     response = self.transport.send(
  │   →                ^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/webdriver/webdriver/transport.py", line 230, in send
  │   →     response = self._request(method, uri, payload, headers, timeout=timeout)
  │   →                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/webdriver/webdriver/transport.py", line 265, in _request
  │   →     response = self.connection.getresponse()
  │   →                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/http/client.py", line 1395, in getresponse
  │   →     response.begin()
  │   →   File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/http/client.py", line 325, in begin
  │   →     version, status, reason = self._read_status()
  │   →                               ^^^^^^^^^^^^^^^^^^^
  │   →   File "/opt/hostedtoolcache/Python/3.11.14/x64/lib/python3.11/http/client.py", line 294, in _read_status
  │   →     raise RemoteDisconnected("Remote end closed connection without"
  │   → http.client.RemoteDisconnected: Remote end closed connection without response
  │ 
  │ Should have destroyed the FBO renderbuffers with `destroy()`! (thread main, at /root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/surfman-0.10.0/src/renderbuffers.rs:32)
  │    0: servoshell::backtrace::print
  │    1: servoshell::panic_hook::panic_hook
  │    2: std::panicking::panic_with_hook
  │    3: std::panicking::panic_handler::{{closure}}
  │    4: std::sys::backtrace::__rust_end_short_backtrace
  │    5: __rustc::rust_begin_unwind
  │    6: core::panicking::panic_fmt
  │    7: <surfman::renderbuffers::Renderbuffers as core::ops::drop::Drop>::drop
  │    8: <webgl::webgl_mode::inprocess::WebGLExternalImages as compositing_traits::WebRenderExternalImageApi>::unlock
  │    9: <compositing_traits::WebRenderExternalImageHandlers as webrender_api::image::ExternalImageHandler>::unlock
  │   10: webrender::renderer::Renderer::render_impl
  │   11: webrender::renderer::Renderer::update
  │   12: profile_traits::time::profile
  │   13: compositing::painter::Painter::render
  │   14: compositing::compositor::IOCompositor::render
  │   15: servo::webview::WebView::paint
  │   16: servoshell::desktop::app_state::RunningAppState::repaint_servo_if_necessary
  │   17: servoshell::desktop::app::App::handle_events_with_headless
  │   18: servoshell::desktop::events_loop::EventsLoop::run_app
  │   19: servoshell::desktop::cli::main
  │   20: std::sys::backtrace::__rust_begin_short_backtrace
  │   21: std::rt::lang_start::{{closure}}
  │   22: std::rt::lang_start_internal
  │   23: main
  │   24: <unknown>
  │   25: __libc_start_main
  └   26: _start

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-content/webgl3d canvas APII-intermittentProblem reproduces intermittently.I-panicServo encounters a panic.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions