Skip to content

Intermittent CRASH in /IndexedDB/worker-termination-aborts-upgrade.window.html #41918

@yezhizhen

Description

@yezhizhen

The log is a bit long, but first part is just async webdriver script execution command. The real panic is in Rust part in the end.

Stable unexpected results (1): 
  ▶ CRASH [expected OK] /IndexedDB/worker-termination-aborts-upgrade.window.html
  │   → Traceback (most recent call last):
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 1146, 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 1243, in do_testharness
  │   →     raw_results = protocol.testdriver.run(url, self.script_resume, test_window)
  │   →                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 687, in run
  │   →     test_driver_message = self.get_next_message(url, script_resume, test_window)
  │   →                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 731, in get_next_message
  │   →     return self._get_next_message_classic(url, script_resume)
  │   →            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 738, in _get_next_message_classic
  │   →     return self.parent.base.execute_script(script_resume, asynchronous=True, args=[strip_server(url)])
  │   →            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 80, in execute_script
  │   →     return method(script, args=args)
  │   →            ^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/webdriver/webdriver/client.py", line 774, in execute_async_script
  │   →     return self.send_session_command("POST", "execute/async", body)
  │   →            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  │   →   File "/home/runner/work/servo/servo/tests/wpt/tests/tools/webdriver/webdriver/client.py", line 644, 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 582, 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
  │ 
  │ A pending open request should have a pending upgrade. (thread IndexedDBManager, at components/storage/indexeddb/mod.rs:295)
  │    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: storage::indexeddb::OpenRequest::abort
  │    8: storage::indexeddb::IndexedDBManager::handle_sync_operation
  │    9: storage::indexeddb::IndexedDBManager::start
  │   10: std::sys::backtrace::__rust_begin_short_backtrace
  │   11: core::ops::function::FnOnce::call_once{{vtable.shim}}
  │   12: std::sys::thread::unix::Thread::new::thread_start
  │   13: <unknown>
  └   14: <unknown>

https://github.com/servo/servo/actions/runs/21002959812/job/60378623820

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-content/indexeddbIndexedDB implementation issues.I-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