New issue
Advanced search Search tips

Issue 703814 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 704169
Owner:
Closed: Mar 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

mash: desktopui_MashLogin is failing a lot

Project Member Reported by jamescook@chromium.org, Mar 21 2017

Issue description

I haven't had time to look into it yet, but wmatrix is a sea of red:
https://wmatrix.googleplex.com/unfiltered?hide_missing=True&releases=tot&tests=desktopui_MashLogin&days_back=14

Several of the errors are "Unhandled WebSocketConnectionClosedException: Connection is already closed"

Looking at a couple edgar ones I see a bunch of chrome crash dumps in /debug.

achuith, would this error be consistent with chrome crashing, perhaps on startup or login?

 
I think so. Could you post a stack?

For a while I've been meaning to replace these mystery exceptions with a more useful log message. We can detect chrome crashes (by keeping track of pids for instance). I just never got around to it.
I'll try to get a stack tomorrow. I'm at home today. (Aside: It's really a pain to get a stack trace out of wmatrix test failures. It's terrible that we don't symbolize them as part of running the tests.)

I meant a telemetry stack, not a chrome stack - I think there might be some confusion. The python telemetry stack shouldn't need symbolization.
Ah, sorry. Here's a telemetry stack from a recent failure:

https://wmatrix.googleplex.com/failures/unfiltered?platforms=edgar&tests=desktopui_MashLogin&days_back=14&builds=R59-9384.0.0&releases=tot&hide_missing=True

03/20 09:20:44.765 ERROR|           browser:0065| Failure while starting browser backend.
Traceback (most recent call last):
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/browser/browser.py", line 58, in __init__
    self._browser_backend.Start()
  File "/usr/local/telemetry/src/third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py", line 52, in traced_function
    return func(*args, **kwargs)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py", line 163, in Start
    self._gaia_id, not self.browser_options.disable_gaia_services)
  File "/usr/local/telemetry/src/third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py", line 52, in traced_function
    return func(*args, **kwargs)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome/oobe.py", line 60, in NavigateFakeLogin
    enterprise_enroll)
  File "/usr/local/telemetry/src/third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py", line 52, in traced_function
    return func(*args, **kwargs)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome/oobe.py", line 40, in _ExecuteOobeApi
    self.WaitForJavaScriptCondition("typeof Oobe == 'function'", timeout=120)
  File "/usr/local/telemetry/src/third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py", line 52, in traced_function
    return func(*args, **kwargs)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/browser/web_contents.py", line 191, in WaitForJavaScriptCondition
    return self._inspector_backend.WaitForJavaScriptCondition(*args, **kwargs)
  File "/usr/local/telemetry/src/third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py", line 52, in traced_function
    return func(*args, **kwargs)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py", line 281, in WaitForJavaScriptCondition
    return py_utils.WaitFor(IsJavaScriptExpressionTrue, timeout)
  File "/usr/local/telemetry/src/third_party/catapult/common/py_utils/py_utils/__init__.py", line 113, in WaitFor
    res = condition()
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py", line 278, in IsJavaScriptExpressionTrue
    return self._runtime.Evaluate(condition, context_id, timeout)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_runtime.py", line 45, in Evaluate
    res = self._inspector_websocket.SyncRequest(request, timeout)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_websocket.py", line 110, in SyncRequest
    res = self._Receive(timeout)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_websocket.py", line 149, in _Receive
    data = self._socket.recv()
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_core.py", line 293, in recv
    opcode, data = self.recv_data()
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_core.py", line 310, in recv_data
    opcode, frame = self.recv_data_frame(control_frame)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_core.py", line 323, in recv_data_frame
    frame = self.recv_frame()
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_core.py", line 357, in recv_frame
    return self.frame_buffer.recv_frame()
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_abnf.py", line 336, in recv_frame
    self.recv_header()
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_abnf.py", line 286, in recv_header
    header = self.recv_strict(2)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_abnf.py", line 371, in recv_strict
    bytes_ = self.recv(min(16384, shortage))
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_core.py", line 427, in _recv
    return recv(self.sock, bufsize)
  File "/usr/local/telemetry/src/third_party/catapult/telemetry/third_party/websocket-client/websocket/_socket.py", line 93, in recv
    "Connection is already closed.")
WebSocketConnectionClosedException: Connection is already closed.
03/20 09:20:50.267 ERROR|          parallel:0026| child process failed

Looking at this line in the stack:
self.WaitForJavaScriptCondition("typeof Oobe == 'function'", timeout=120)

You see that telemetry is waiting for the OOBE page to load, and looks like the connection got reset. It's most likely possible that chrome died after a few seconds of being alive. You should look into /var/log/messages to see if the chrome crash handler was invoked.
Mergedinto: 704169
Status: Duplicate (was: Assigned)
Looks like there's a startup crash with --mash.

Components: -Internals>MUS Internals>Services>WindowService

Sign in to add a comment