Closed Bug 1305659 Opened 8 years ago Closed 8 years ago

[e10s] Calling forward() and an remoteness change involved cause Marionette to hang with: IOError: Process has been unexpectedly closed (Exit code: -15) (Reason: [Errno 61] Connection refused)

Categories

(Remote Protocol :: Marionette, defect)

Version 3
defect
Not set
normal

Tracking

(firefox50 wontfix, firefox51 wontfix, firefox52 fixed, firefox-esr52 fixed, firefox53 fixed, firefox54 fixed, firefox55 fixed)

RESOLVED FIXED
mozilla55
Tracking Status
firefox50 --- wontfix
firefox51 --- wontfix
firefox52 --- fixed
firefox-esr52 --- fixed
firefox53 --- fixed
firefox54 --- fixed
firefox55 --- fixed

People

(Reporter: whimboo, Assigned: whimboo)

References

(Blocks 1 open bug)

Details

(Whiteboard: [fixed by bug 1330348])

Attachments

(1 file)

Attached file test_minimized.py
I noticed that behavior while working on bug 1259055. When updating TestAboutPages.test_back_forward() with a call to forward() Marionette hangs until the socket timeout and gets killed: 2:16.56 TEST_END: MainThread ERROR, expected PASS Traceback (most recent call last): File "/Volumes/data/code/gecko/testing/marionette/harness/marionette/marionette_test/testcases.py", line 163, in run testMethod() File "/Volumes/data/code/gecko/_a/test_minimized.py", line 27, in test_back_forward_remote_non_remote self.marionette.navigate(self.remote_uri) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/marionette.py", line 1488, in navigate self._send_message("get", {"url": url}) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/decorators.py", line 55, in _ m.force_shutdown() File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/decorators.py", line 42, in _ return func(*args, **kwargs) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/marionette.py", line 682, in _send_message msg = self.client.request(name, params) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/transport.py", line 274, in request self.send(cmd) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/transport.py", line 236, in send self.connect() File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/transport.py", line 214, in connect self.sock.connect((self.addr, self.port)) File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth return getattr(self._sock,name)(*args) IOError: Process has been closed (Exit code: -15) (Reason: [Errno 61] Connection refused) Here the last successful commands then the communication stopped working: > 1474965609246 Marionette TRACE conn5 -> [0,9,"goForward",null] > 1474965609363 Marionette TRACE conn5 <- [1,9,null,{}] > 1474965609375 Marionette TRACE conn5 -> [0,10,"getCurrentUrl",null] We never get a response with the current URI here. This is an e10s only related issue.
Blocks: e10s-tests
Attachment #8795187 - Attachment mime type: text/x-python-script → text/plain
Here the actual failure message: File "/Volumes/data/code/gecko/testing/marionette/harness/marionette/marionette_test/testcases.py", line 166, in run testMethod() File "/Volumes/data/code/gecko/_a/test_second.py", line 27, in test_back_forward_remote_non_remote self.marionette.navigate(self.remote_uri) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/marionette.py", line 1624, in navigate self._send_message("get", {"url": url}) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/decorators.py", line 28, in _ m.handle_socket_failure() File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/decorators.py", line 23, in _ return func(*args, **kwargs) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/marionette.py", line 707, in _send_message msg = self.client.request(name, params) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/transport.py", line 283, in request self.send(cmd) File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/transport.py", line 245, in send self.connect() File "/Volumes/data/code/gecko/testing/marionette/client/marionette_driver/transport.py", line 223, in connect self.sock.connect((self.addr, self.port)) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth return getattr(self._sock,name)(*args)
Summary: [e10s] Marionette hangs when calling forward() and an remoteness change involved → [e10s] Calling forward() and an remoteness change involved cause Marionette to hang with: IOError: Process has been unexpectedly closed (Exit code: -15) (Reason: [Errno 61] Connection refused)
Blocks: 1303346
Depends on: 1301399
So a debug build actually shows an assertion: [Child 14272] ###!!! ASSERTION: no SHEntry for a non-transient viewer?: 'NS_IsAboutBlank(mCurrentURI)', file /builds/slave/m-cen-m64-d-000000000000000000/build/src/docshell/base/nsDocShell.cpp, line 11601 It means that somehow the communication dies for Marionette components and Firefox finally gets killed by the OS due to no data received over the socket. It also means that we are blocked on bug 1301399 now.
Whiteboard: [blocked by bug 1301399]
No longer blocks: 1303346
The IOError is caused by Marionette as it kills Firefox after 60s with a socket timeout due to get() doesn't respond within that time period - the default page load timeout is 300s. See bug 1322277 for how we can improve that.
Depends on: 1322277
This most likely depends on bug 1330348.
Depends on: 1330348
With my patch on bug 1330348 landed this is no longer an issue.
Assignee: nobody → hskupin
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Whiteboard: [blocked by bug 1301399] → [fixed by bug 1330348]
Target Milestone: --- → mozilla55
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: