Closed Bug 1240179 Opened 8 years ago Closed 8 years ago

[e10s] Javascript error when run under XVFB: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIMessageSender.sendAsyncMessage] (chrome://marionette/content/listener.js, line 410)

Categories

(Remote Protocol :: Marionette, defect)

defect
Not set
normal

Tracking

(firefox43 unaffected, firefox44 affected, firefox45 affected, firefox46 affected)

RESOLVED INVALID
Tracking Status
firefox43 --- unaffected
firefox44 --- affected
firefox45 --- affected
firefox46 --- affected

People

(Reporter: whimboo, Unassigned)

Details

(Keywords: regression, regressionwindow-wanted)

Today i have seen the following failure a lot of times in a Travis build. I can reproduce it locally when run under XVFB and e10s mode turned on:

Here the command for firefox-ui-tests:

DISPLAY=:99.0 && firefox-ui-functional --binary /mozilla/bin/nightly/firefox --e10s firefox_puppeteer/tests/ --pref "marionette.logging:True"

Here some line from a local log and Marionette debugging turned on:

1452892022269	Marionette	TRACE	conn89 -> [0,74,"getCurrentChromeWindowHandle",null]
1452892022269	Marionette	TRACE	conn89 <- [1,74,null,{"value":"3"}]
JavaScript error: chrome://marionette/content/listener.js, line 410: NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIMessageSender.sendAsyncMessage]
1452892022272	Marionette	TRACE	conn89 -> [0,75,"executeScript",{"scriptTimeout":null,"newSandbox":true,"args":["3"],"filename":"windows.py","script":"\n              Components.utils.import(\"resource://gre/modules/Services.jsm\");\n              let win = Services.wm.getOuterWindowWithId(Number(arguments[0]));\n              return win.document.readyState == 'complete';\n            ","sandbox":"default","line":108}]
1452892022273	Marionette	TRACE	conn89 <- [1,75,null,{"value":true}]
I can reproduce this failure down to beta 44.0. The last release of Firefox is not affected.
I’m unable to run the tests using the command you provided above:

(_env)% firefox-ui-functional --binary /home/ato/1/gecko/build/desktop-release/dist/bin/firefox-bin --e10s firefox_puppeteer/tests/ --pref "marionette.logging:True"
Using workspace for temporary data: "/home/ato/1/firefox-ui-tests"
Profile destination is TMP
starting httpd
running httpd on http://127.0.0.1:40905/
Failure during test execution.
Traceback (most recent call last):

  File "/home/ato/1/firefox-ui-tests/_env/local/lib/python2.7/site-packages/marionette_client-2.0.0-py2.7.egg/marionette/runtests.py", line 71, in run
    runner.run_tests(tests)

  File "/home/ato/1/firefox-ui-tests/_env/local/lib/python2.7/site-packages/marionette_client-2.0.0-py2.7.egg/marionette/runner/base.py", line 850, in run_tests
    % '\n  '.join(invalid_tests))

Exception: Tests file names must starts with 'test_'. Invalid test names:
  /home/ato/1/firefox-ui-tests/firefox_puppeteer/tests
Flags: needinfo?(hskupin)
Yesterday I merged the python_packages branch for bug 1232967 into mozilla-central. So the path to the puppeteer tests have been changed: https://github.com/mozilla/firefox-ui-tests/tree/mozilla-central/firefox_ui_tests/firefox_ui_tests/puppeteer
Flags: needinfo?(hskupin)
Thanks!

The command `firefox-ui-functional --binary /home/ato/1/gecko/build/desktop-release/dist/bin/firefox-bin --e10s firefox_ui_tests/firefox_ui_tests/puppeteer --pref "marionette.logging:True"` appears to work.
This is the same problem you will run into if you wrap your command using xvfb-run.  The explanation is that certain parts of the Firefox UI needs a window manager in order to function normally.

If you imagine wrapping your command in a naïve xvfb wrapper that includes a window manager such as this:

    #!/bin/sh
    DISPLAY=:99
    Xvfb $DISPLAY -ac +extension RANDR &
    matchbox-window-manager &
    exec $@

All the tests will pass:

    % chmod +x xvfb-wm-run
    % ./xvfb-wm-run firefox-ui-functional --binary /home/ato/Code/gecko/build/desktop-release/dist/bin/firefox-bin firefox_ui_tests/firefox_ui_tests/puppeteer/test_toolbars.py --pref "marionette.logging:True"

    …

    SUMMARY
    -------
    passed: 13
    failed: 0
    todo: 0

It is possible that replacing matchbox-window-manager with xinit will work if you have that installed.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → INVALID
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.