Closed Bug 1541279 Opened 6 years ago Closed 6 years ago

Intermittent /webdriver/tests/get_title/user_prompts.py | test_dismiss[capabilities0-alert-None] - UnknownErrorException: unknown error (500): Failed to decode response from marionette

Categories

(Remote Protocol :: Marionette, defect, P5)

Version 3
defect

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 1488790

People

(Reporter: intermittent-bug-filer, Unassigned)

References

Details

(Keywords: intermittent-failure, regression)

#[markdown(off)]
Filed by: btara [at] mozilla.com

https://treeherder.mozilla.org/logviewer.html#?job_id=237703351&repo=autoland

https://queue.taskcluster.net/v1/task/UBNAaJCSTYW-q6XOgM1gfw/runs/0/artifacts/public/logs/live_backing.log

21:55:37 INFO - TEST-START | /webdriver/tests/get_title/user_prompts.py
21:55:37 INFO - STDOUT: ============================= test session starts ==============================
21:55:37 INFO - STDOUT: platform darwin -- Python 2.7.10, pytest-unknown, py-1.5.2, pluggy-0.5.3.dev -- /Users/cltbld/tasks/task_1554241487/build/venv/bin/python
21:55:37 INFO - STDOUT: rootdir: /Users/cltbld/tasks/task_1554241487/build, inifile:
21:55:37 INFO - STDOUT: collecting ...
21:55:37 INFO - STDOUT: collected 18 items
21:55:37 INFO - STDOUT: tests/web-platform/tests/webdriver/tests/get_title/user_prompts.py::test_accept[capabilities0-alert-None]
21:55:37 INFO - PID 1054 | 1554242137548 webdriver::server DEBUG -> DELETE /session/52842b96-f473-7441-9468-4213925e4219
21:55:37 INFO - PID 1054 | 1554242137549 Marionette DEBUG 0 -> [0,147,"Marionette:Quit",{"flags":["eForceQuit"]}]
21:55:37 INFO - PID 1054 | 1554242137550 Marionette INFO Stopped listening on port 2828
21:55:37 INFO - PID 1054 | 1554242137611 Marionette TRACE Received observer notification quit-application
21:55:37 INFO - PID 1054 | 1554242137625 Marionette DEBUG 0 <- [1,147,null,{"cause":"shutdown"}]
21:55:37 INFO - PID 1054 | 1554242137667 webdriver::server DEBUG Deleting session
21:55:37 INFO - PID 1054 | 1554242137674 Marionette DEBUG 0 -> [0,148,"Marionette:Quit",{"flags":["eForceQuit"]}]
21:55:37 INFO - PID 1054 | 1554242137674 Marionette DEBUG 0 <- [1,148,{"error":"invalid session id","message":"Tried to run command without establishing a connection","stacktrace":"WebDriv ... t@chrome://marionette/content/server.js:236:9\n_onJSONObjectReady/<@chrome://marionette/content/transport.js:492:20\n"},null]
21:55:37 INFO - PID 1054 | 1554242137684 Marionette DEBUG Closed connection 0
21:55:38 INFO - PID 1054 | 1554242138047 Marionette TRACE Received observer notification xpcom-will-shutdown
...
...
21:56:08 INFO - STDOUT: =================================== FAILURES ===================================
21:56:08 INFO - STDOUT: ____________________ test_dismiss[capabilities0-alert-None] ____________________
21:56:08 INFO - STDOUT: check_user_prompt_closed_without_exception = <function check_user_prompt_closed_without_exception at 0x104c57758>
21:56:08 INFO - STDOUT: dialog_type = 'alert', retval = None
21:56:08 INFO - STDOUT: @pytest.mark.capabilities({"unhandledPromptBehavior": "dismiss"})
21:56:08 INFO - STDOUT: @pytest.mark.parametrize("dialog_type, retval", [
21:56:08 INFO - STDOUT: ("alert", None),
21:56:08 INFO - STDOUT: ("confirm", False),
21:56:08 INFO - STDOUT: ("prompt", None),
21:56:08 INFO - STDOUT: ])
21:56:08 INFO - STDOUT: def test_dismiss(check_user_prompt_closed_without_exception, dialog_type, retval):
21:56:08 INFO - STDOUT: > check_user_prompt_closed_without_exception(dialog_type, retval)
21:56:08 INFO - STDOUT: check_user_prompt_closed_without_exception = <function check_user_prompt_closed_without_exception at 0x104c57758>
21:56:08 INFO - STDOUT: dialog_type = 'alert'
21:56:08 INFO - STDOUT: retval = None
21:56:08 INFO - STDOUT: tests/web-platform/tests/webdriver/tests/get_title/user_prompts.py
21:56:08 INFO - STDOUT: :88:
21:56:08 INFO - STDOUT: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
21:56:08 INFO - STDOUT: tests/web-platform/tests/webdriver/tests/get_title/user_prompts.py
21:56:08 INFO - STDOUT: :17: in check_user_prompt_closed_without_exception
21:56:08 INFO - STDOUT: session.url = inline("<title>Foo</title>")
21:56:08 INFO - STDOUT: tests/web-platform/tests/tools/webdriver/webdriver/client.py
21:56:08 INFO - STDOUT: :20: in inner
21:56:08 INFO - STDOUT: return func(self, *args, **kwargs)
21:56:08 INFO - STDOUT: tests/web-platform/tests/tools/webdriver/webdriver/client.py
21:56:08 INFO - STDOUT: :521: in url
21:56:08 INFO - STDOUT: return self.send_session_command("POST", "url", body)
21:56:08 INFO - STDOUT: tests/web-platform/tests/tools/webdriver/webdriver/client.py
21:56:08 INFO - STDOUT: :508: in send_session_command
21:56:08 INFO - STDOUT: return self.send_command(method, url, body)
21:56:08 INFO - STDOUT: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
21:56:08 INFO - STDOUT: self = <Session 472a1dd1-a9b0-ce45-8b50-7fccac1444e1>, method = 'POST'
21:56:08 INFO - STDOUT: url = 'session/472a1dd1-a9b0-ce45-8b50-7fccac1444e1/url'
21:56:08 INFO - STDOUT: body = {'url': 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ctitle%3EFoo%3C%2Ftitle%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'}
21:56:08 INFO - STDOUT: def send_command(self, method, url, body=None):
21:56:08 INFO - STDOUT: """
21:56:08 INFO - STDOUT: Send a command to the remote end and validate its success.
21:56:08 INFO - STDOUT:
21:56:08 INFO - STDOUT: :param method: HTTP method to use in request.
21:56:08 INFO - STDOUT: :param uri: "Command part" of the HTTP request URL,
21:56:08 INFO - STDOUT: e.g. `window/rect`.
21:56:08 INFO - STDOUT: :param body: Optional body of the HTTP request.
21:56:08 INFO - STDOUT:
21:56:08 INFO - STDOUT: :return: `None` if the HTTP response body was empty, otherwise
21:56:08 INFO - STDOUT: the `value` field returned after parsing the response
21:56:08 INFO - STDOUT: body as JSON.
21:56:08 INFO - STDOUT:
21:56:08 INFO - STDOUT: :raises error.WebDriverException: If the remote end returns
21:56:08 INFO - STDOUT: an error.
21:56:08 INFO - STDOUT: :raises ValueError: If the response body does not contain a
21:56:08 INFO - STDOUT: `value` key.
21:56:08 INFO - STDOUT: """
21:56:08 INFO - STDOUT: response = self.transport.send(
21:56:08 INFO - STDOUT: method, url, body,
21:56:08 INFO - STDOUT: encoder=protocol.Encoder, decoder=protocol.Decoder,
21:56:08 INFO - STDOUT: session=self)
21:56:08 INFO - STDOUT:
21:56:08 INFO - STDOUT: if response.status != 200:
21:56:08 INFO - STDOUT: err = error.from_response(response)
21:56:08 INFO - STDOUT:
21:56:08 INFO - STDOUT: if isinstance(err, error.InvalidSessionIdException):
21:56:08 INFO - STDOUT: # The driver could have already been deleted the session.
21:56:08 INFO - STDOUT: self.session_id = None
21:56:08 INFO - STDOUT:
21:56:08 INFO - STDOUT: > raise err
21:56:08 INFO - STDOUT: E UnknownErrorException: unknown error (500): Failed to decode response from marionette
21:56:08 INFO - STDOUT: body = {'url': 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ctitle%3EFoo%3C%2Ftitle%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'}
21:56:08 INFO - STDOUT: err = <UnknownErrorException http_status=500>
21:56:08 INFO - STDOUT: method = 'POST'
21:56:08 INFO - STDOUT: response = <Response status=500 error=<UnknownErrorException http_status=500>>
21:56:08 INFO - STDOUT: self = <Session 472a1dd1-a9b0-ce45-8b50-7fccac1444e1>
21:56:08 INFO - STDOUT: url = 'session/472a1dd1-a9b0-ce45-8b50-7fccac1444e1/url'
21:56:08 INFO - STDOUT: tests/web-platform/tests/tools/webdriver/webdriver/client.py
21:56:08 INFO - STDOUT: :472: UnknownErrorException
21:56:08 INFO - STDOUT: =============================== warnings summary ===============================
21:56:08 INFO - STDOUT: <undetermined location>
21:56:08 INFO - STDOUT: Module already imported so cannot be rewritten: mozlog
21:56:08 INFO - STDOUT: Module already imported so cannot be rewritten: tests.support.fixtures
21:56:08 INFO - STDOUT: -- Docs: http://doc.pytest.org/en/latest/warnings.html
21:56:08 INFO - STDOUT: =============== 1 failed, 17 passed, 2 warnings in 31.01 seconds ===============
21:56:08 INFO -
21:56:08 INFO - TEST-PASS | /webdriver/tests/get_title/user_prompts.py | test_accept[capabilities0-alert-None]
21:56:08 INFO - TEST-PASS | /webdriver/tests/get_title/user_prompts.py | test_accept[capabilities0-confirm-True]
21:56:08 INFO - TEST-PASS | /webdriver/tests/get_title/user_prompts.py | test_accept[capabilities0-prompt-]
21:56:08 INFO - TEST-PASS | /webdriver/tests/get_title/user_prompts.py | test_accept_and_notify[capabilities0-alert-None]
21:56:08 INFO - TEST-PASS | /webdriver/tests/get_title/user_prompts.py | test_accept_and_notify[capabilities0-confirm-True]
21:56:08 INFO - TEST-PASS | /webdriver/tests/get_title/user_prompts.py | test_accept_and_notify[capabilities0-prompt-]
21:56:08 INFO - TEST-UNEXPECTED-FAIL | /webdriver/tests/get_title/user_prompts.py | test_dismiss[capabilities0-alert-None] - UnknownErrorException: unknown error (500): Failed to decode response from marionette
21:56:08 INFO - check_user_prompt_closed_without_exception = <function check_user_prompt_closed_without_exception at 0x104c57758>
21:56:08 INFO - dialog_type = 'alert', retval = None
21:56:08 INFO -
21:56:08 INFO - @pytest.mark.capabilities({"unhandledPromptBehavior": "dismiss"})
21:56:08 INFO - @pytest.mark.parametrize("dialog_type, retval", [
21:56:08 INFO - ("alert", None),
21:56:08 INFO - ("confirm", False),
21:56:08 INFO - ("prompt", None),
21:56:08 INFO - ])
21:56:08 INFO - def test_dismiss(check_user_prompt_closed_without_exception, dialog_type, retval):
21:56:08 INFO - > check_user_prompt_closed_without_exception(dialog_type, retval)
21:56:08 INFO -
21:56:08 INFO - check_user_prompt_closed_without_exception = <function check_user_prompt_closed_without_exception at 0x104c57758>
21:56:08 INFO - dialog_type = 'alert'
21:56:08 INFO - retval = None
21:56:08 INFO -
21:56:08 INFO - tests/web-platform/tests/webdriver/tests/get_title/user_prompts.py:88:
21:56:08 INFO - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
21:56:08 INFO - tests/web-platform/tests/webdriver/tests/get_title/user_prompts.py:17: in check_user_prompt_closed_without_exception
21:56:08 INFO - session.url = inline("<title>Foo</title>")
21:56:08 INFO - tests/web-platform/tests/tools/webdriver/webdriver/client.py:20: in inner
21:56:08 INFO - return func(self, *args, **kwargs)
21:56:08 INFO - tests/web-platform/tests/tools/webdriver/webdriver/client.py:521: in url
21:56:08 INFO - return self.send_session_command("POST", "url", body)
21:56:08 INFO - tests/web-platform/tests/tools/webdriver/webdriver/client.py:508: in send_session_command
21:56:08 INFO - return self.send_command(method, url, body)
21:56:08 INFO - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
21:56:08 INFO -
21:56:08 INFO - self = <Session 472a1dd1-a9b0-ce45-8b50-7fccac1444e1>, method = 'POST'
21:56:08 INFO - url = 'session/472a1dd1-a9b0-ce45-8b50-7fccac1444e1/url'
21:56:08 INFO - body = {'url': 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ctitle%3EFoo%3C%2Ftitle%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'}
21:56:08 INFO -
21:56:08 INFO - def send_command(self, method, url, body=None):
21:56:08 INFO - """
21:56:08 INFO - Send a command to the remote end and validate its success.
21:56:08 INFO -
21:56:08 INFO - :param method: HTTP method to use in request.
21:56:08 INFO - :param uri: "Command part" of the HTTP request URL,
21:56:08 INFO - e.g. `window/rect`.
21:56:08 INFO - :param body: Optional body of the HTTP request.
21:56:08 INFO -
21:56:08 INFO - :return: `None` if the HTTP response body was empty, otherwise
21:56:08 INFO - the `value` field returned after parsing the response
21:56:08 INFO - body as JSON.
21:56:08 INFO -
21:56:08 INFO - :raises error.WebDriverException: If the remote end returns
21:56:08 INFO - an error.
21:56:08 INFO - :raises ValueError: If the response body does not contain a
21:56:08 INFO - `value` key.
21:56:08 INFO - """
21:56:08 INFO - response = self.transport.send(
21:56:08 INFO - method, url, body,
21:56:08 INFO - encoder=protocol.Encoder, decoder=protocol.Decoder,
21:56:08 INFO - session=self)
21:56:08 INFO -
21:56:08 INFO - if response.status != 200:
21:56:08 INFO - err = error.from_response(response)
21:56:08 INFO -
21:56:08 INFO - if isinstance(err, error.InvalidSessionIdException):
21:56:08 INFO - # The driver could have already been deleted the session.
21:56:08 INFO - self.session_id = None
21:56:08 INFO -
21:56:08 INFO - > raise err
21:56:08 INFO - E UnknownErrorException: unknown error (500): Failed to decode response from marionette
21:56:08 INFO -
21:56:08 INFO - body = {'url': 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ctitle%3EFoo%3C%2Ftitle%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'}
21:56:08 INFO - err = <UnknownErrorException http_status=500>
21:56:08 INFO - method = 'POST'
21:56:08 INFO - response = <Response status=500 error=<UnknownErrorException http_status=500>>
21:56:08 INFO - self = <Session 472a1dd1-a9b0-ce45-8b50-7fccac1444e1>
21:56:08 INFO - url = 'session/472a1dd1-a9b0-ce45-8b50-7fccac1444e1/url'
21:56:08 INFO -
21:56:08 INFO - tests/web-platform/tests/tools/webdriver/webdriver/client.py:472: UnknownErrorException
21:56:08 INFO - ...........
21:56:08 INFO - TEST-OK | /webdriver/tests/get_title/user_prompts.py | took 31103ms

That is because Firefox quit/crashed:

21:55:51 INFO - PID 1054 | Exiting due to channel error.
21:55:51 INFO - PID 1054 | Exiting due to channel error.
21:55:51 INFO - PID 1054 | 1554242151372 webdriver::server DEBUG Deleting session
21:55:51 INFO - PID 1054 | 1554242151473 geckodriver::marionette DEBUG Browser process stopped: exit code: 5
21:55:51 INFO - PID 1054 | 1554242151480 webdriver::server DEBUG <- 500 Internal Server Error {"value":{"error":"unknown error","message":"Failed to decode response from marionette","stacktrace":""}}

Sadly we don't report a crash yet due to bug 1498094.

Depends on: 1498094
Depends on: 1490906
No longer depends on: 1498094
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Moving bug to Remote Protocol::Marionette component per bug 1815831.
Component: geckodriver → Marionette
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.