Closed Bug 721260 Opened 12 years ago Closed 12 years ago

Uncaught exceptions in async script can break Marionette

Categories

(Remote Protocol :: Marionette, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: jgriffin, Unassigned)

Details

Marionette currently doesn't catch async exceptions which are raised in secondary script frames, and these exceptions cause Marionette to hang.

To reproduce, you can run a script like this:

self.marionette.set_context("chrome")
self.marionette.set_script_timeout(10000)
self.marionette.execute_async_script("""
setTimeout(function() {
  foo();
  marionetteScriptFinished(true);
}, 1000);
""")

To fix this we should:

1 - update the marionette client with timeout handling, so that it will timeout after X seconds if it doesn't receive a response from the server; ideally X would be the same as the script timeout
2 - potentially override window.onerror while scripts are executing, so we can catch and deal with these exceptions without bad things happening
See bug 718205 also
Fixed now, but content errors don't print out a stack trace or any useful error right now. Opened Bug 722596 to address this.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.