Closed
Bug 904549
Opened 11 years ago
Closed 11 years ago
browser_dbg_cmd.js doesn't always wait for helpers.audit to complete
Categories
(DevTools :: Debugger, defect)
DevTools
Debugger
Tracking
(Not tracked)
RESOLVED
FIXED
Firefox 26
People
(Reporter: jwalker, Assigned: jwalker)
Details
Attachments
(1 file, 2 obsolete files)
19.44 KB,
patch
|
anton
:
review+
|
Details | Diff | Splinter Review |
I think this is the cause of https://tbpl.mozilla.org/php/getParsedLog.php?id=26444486&tree=Try&full=1 (search for "Message: TypeError: options.display is undefined") I think what's happening is that stuff is getting cleaned up before the test has properly finished. 11:56:25 INFO - TEST-INFO | chrome://mochitests/content/browser/browser/devtools/debugger/test/browser_dbg_cmd.js | setInput("dbg close") 11:56:25 INFO - TEST-PASS | chrome://mochitests/content/browser/browser/devtools/debugger/test/browser_dbg_cmd.js | html output for dbg close 11:56:25 INFO - TEST-PASS | chrome://mochitests/content/browser/browser/devtools/debugger/test/browser_dbg_cmd.js | Debugger was closed. 11:56:25 INFO - console.error: 11:56:25 INFO - Message: TypeError: options.display is undefined 11:56:25 INFO - Stack: 11:56:25 INFO - @chrome://mochitests/content/browser/browser/devtools/commandline/test/helpers.js:776 11:56:25 INFO - resolve@resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - then@resource://gre/modules/commonjs/sdk/core/promise.js:47 11:56:25 INFO - resolve@resource://gre/modules/commonjs/sdk/core/promise.js:189 11:56:25 INFO - @resource://gre/modules/devtools/gcli.jsm:9141 11:56:25 INFO - @resource://gre/modules/devtools/gcli.jsm:8500 11:56:25 INFO - resolve@resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:47 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:189 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:47 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:189 11:56:25 INFO - TBOX_destroy/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/framework/toolbox.js:833 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:47 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:189 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:47 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:189 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:47 11:56:25 INFO - resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/promise.js:189 11:56:25 INFO - onClosed@resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/framework/target.js:451 11:56:25 INFO - @resource://gre/modules/devtools/dbg-client.jsm:380 11:56:25 INFO - @resource://gre/modules/devtools/dbg-client.jsm:102 11:56:25 INFO - EV_notify@resource://gre/modules/devtools/dbg-client.jsm:159 11:56:25 INFO - DC_onClosed@resource://gre/modules/devtools/dbg-client.jsm:705 11:56:25 INFO - LDT_close@resource://gre/modules/devtools/dbg-server.jsm -> resource://gre/modules/devtools/server/transport.js:258 11:56:25 INFO - LDT_close@resource://gre/modules/devtools/dbg-server.jsm -> resource://gre/modules/devtools/server/transport.js:254 11:56:25 INFO - LDT_close@resource://gre/modules/devtools/dbg-server.jsm -> resource://gre/modules/devtools/server/transport.js:254 11:56:25 INFO - closeTransport@resource://gre/modules/devtools/dbg-client.jsm:418 11:56:25 INFO - @resource://gre/modules/devtools/dbg-client.jsm:316 11:56:25 INFO - @resource://gre/modules/devtools/dbg-client.jsm:687 11:56:25 INFO - resolve@resource://gre/modules/commonjs/sdk/core/promise.js:122 11:56:25 INFO - then@resource://gre/modules/commonjs/sdk/core/promise.js:47 11:56:25 INFO - then@resource://gre/modules/commonjs/sdk/core/promise.js:157 11:56:25 INFO - DC_onPacket@resource://gre/modules/devtools/dbg-client.jsm:691 11:56:25 INFO - @resource://gre/modules/devtools/dbg-server.jsm -> resource://gre/modules/devtools/server/transport.js:239 11:56:25 INFO - @resource://gre/modules/devtools/dbg-server.jsm -> resource://gre/modules/devtools/DevToolsUtils.js:61 11:56:25 INFO - INFO TEST-END | chrome://mochitests/content/browser/browser/devtools/debugger/test/browser_dbg_cmd.js | finished in 2027ms
Assignee | ||
Comment 1•11 years ago
|
||
Perhaps this is a good time to convert it from using callbacks and promises to just promises.
Assignee | ||
Updated•11 years ago
|
Assignee: nobody → jwalker
Assignee | ||
Comment 2•11 years ago
|
||
I re-wrote it to use promises rather than callbacks, but I'm less sure now that we were failing to wait. There was one instance of dropping an error, but that wouldn't cause the exception above. Never the less, here's the promise version: http://pastebin.mozilla.org/2846701
Assignee | ||
Comment 3•11 years ago
|
||
And the same again re-written to use Task.jsm http://pastebin.mozilla.org/2849618
Assignee | ||
Comment 4•11 years ago
|
||
Attachment #789856 -
Flags: review?(past)
Comment 5•11 years ago
|
||
Comment on attachment 789856 [details] [diff] [review] taskdebug-904549.patch Review of attachment 789856 [details] [diff] [review]: ----------------------------------------------------------------- Oh yes, Task.jsm fits like a glove in this case! ::: browser/devtools/commandline/test/helpers.js @@ +115,5 @@ > + waitForExplicitFinish(); > + > + options = options || {}; > + options.chromeWindow = options.chromeWindow || window; > + options.isFirefox = true; "options" sounds rather confusing, but I don't really have a better suggestion. "metadata" would be equally meaningless and my only other ideas were "tabHandle" and HWND. I can't take credit for the last one. Naming is hard. @@ +123,5 @@ > + tabbrowser.selectedTab = options.tab; > + options.browser = tabbrowser.getBrowserForTab(options.tab); > + options.target = TargetFactory.forTab(options.tab); > + > + options.browser.contentWindow.location = url; Adding the "load" event listener before navigation would be more appropriate and less prone to races, wouldn't it?
Attachment #789856 -
Flags: review?(past) → review+
Assignee | ||
Comment 6•11 years ago
|
||
This change does the following: * Fixes the url ordering point raised by past * Makes this type of problem a test failure * Fixes an additional instance of this problem in browser_dbg_cmd_blackbox.js Asking fitzgen for r? this time because he wrote browser_dbg_cmd_blackbox.js and he's on a better TZ. I think you only need to look at browser_dbg_cmd_blackbox.js, Nick. The generic problem is that helpers.audit is async so in some cases tests were continuing, and then finishing before the 'post-exec' checks were made. So when the exec finished the test was already done and the post-exec checks failed.
Attachment #789856 -
Attachment is obsolete: true
Attachment #790248 -
Flags: review?(nfitzgerald)
Comment 7•11 years ago
|
||
Comment on attachment 790248 [details] [diff] [review] taskdebug-904549.patch v2 Review of attachment 790248 [details] [diff] [review]: ----------------------------------------------------------------- r+ browser_dbg_cmd_blackbox.js changes
Attachment #790248 -
Flags: review?(nfitzgerald) → review+
Assignee | ||
Comment 8•11 years ago
|
||
I found the bug (helpers.audit is not synchronous) in the profiler code too. The fix involved changes to the command too. Past and Fitzgen have reviewed a lot of this already, so you'll need to take a look at: gclicommands.properties, browser_profiler_cmd.js, and profiler/commands.js Thanks.
Attachment #790248 -
Attachment is obsolete: true
Attachment #790804 -
Flags: review?(anton)
Assignee | ||
Comment 9•11 years ago
|
||
Try for latest: https://tbpl.mozilla.org/?tree=Try&rev=9896f6574192
Comment 10•11 years ago
|
||
Comment on attachment 790804 [details] [diff] [review] taskdebug-904549.patch v3 Review of attachment 790804 [details] [diff] [review]: ----------------------------------------------------------------- As long as try is successful, changes lgtm.
Attachment #790804 -
Flags: review?(anton) → review+
Assignee | ||
Comment 11•11 years ago
|
||
https://tbpl.mozilla.org/?tree=Fx-Team&rev=3483a63fd3ca https://hg.mozilla.org/integration/fx-team/rev/8081dc2924bc
Comment 12•11 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/8081dc2924bc
Status: NEW → RESOLVED
Closed: 11 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → Firefox 26
Updated•6 years ago
|
Product: Firefox → DevTools
You need to log in
before you can comment on or make changes to this bug.
Description
•