Intermittent browser/components/places/tests/browser/browser_copy_query_without_tree.js | Uncaught exception - at PlacesTransactions.jsm:1632 - TypeError: creationInfo is null

RESOLVED FIXED in Firefox 58

Status

()

defect
P2
normal
RESOLVED FIXED
2 years ago
2 years ago

People

(Reporter: intermittent-bug-filer, Assigned: standard8)

Tracking

({intermittent-failure})

unspecified
Firefox 58
Points:
---

Firefox Tracking Flags

(firefox57 disabled, firefox58 fixed)

Details

(Whiteboard: [stockwell fixed:race])

Attachments

(1 attachment)

Reporter

Description

2 years ago
treeherder
Filed by: archaeopteryx [at] coole-files.de

https://treeherder.mozilla.org/logviewer.html#?job_id=127317069&repo=mozilla-inbound

https://archive.mozilla.org/pub/firefox/tinderbox-builds/mozilla-inbound-win64/mozilla-inbound_win8_64_test-mochitest-clipboard-e10s-bm109-tests1-windows-build458.txt.gz

01:02:02     INFO - *** Start BrowserChrome Test Results ***
01:02:02     INFO - checking window state
01:02:02     INFO - TEST-START | browser/components/places/tests/browser/browser_copy_query_without_tree.js
01:02:02     INFO - GECKO(3088) | console.error:
01:02:02     INFO - GECKO(3088) |   Message: TypeError: creationInfo is null
01:02:02     INFO - GECKO(3088) |   Stack:
01:02:02     INFO - GECKO(3088) |     execute@resource://gre/modules/PlacesTransactions.jsm:1632:5
01:02:02     INFO - GECKO(3088) | Async*transact/promise<@resource://gre/modules/PlacesTransactions.jsm:546:26
01:02:02     INFO - GECKO(3088) | async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO - GECKO(3088) | promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO - GECKO(3088) | transact@resource://gre/modules/PlacesTransactions.jsm:543:19
01:02:02     INFO - GECKO(3088) | transact@resource://gre/modules/PlacesTransactions.jsm:231:16
01:02:02     INFO - GECKO(3088) | paste/<@chrome://browser/content/places/controller.js:1294:30
01:02:02     INFO - GECKO(3088) | async*batch/<@resource://gre/modules/PlacesTransactions.jsm:566:20
01:02:02     INFO - GECKO(3088) | async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO - GECKO(3088) | promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO - GECKO(3088) | batch@resource://gre/modules/PlacesTransactions.jsm:561:12
01:02:02     INFO - GECKO(3088) | batch@resource://gre/modules/PlacesTransactions.jsm:340:14
01:02:02     INFO - GECKO(3088) | paste@chrome://browser/content/places/controller.js:1279:15
01:02:02     INFO - GECKO(3088) | async*copy_toolbar_shortcut@chrome://mochitests/content/browser/browser/components/places/tests/browser/browser_copy_query_without_tree.js:24:9
01:02:02     INFO - GECKO(3088) | Async*Tester_execTest/<@chrome://mochikit/content/browser-test.js:803:21
01:02:02     INFO - GECKO(3088) | TaskImpl_run@resource://gre/modules/Task.jsm:331:42
01:02:02     INFO - GECKO(3088) | TaskImpl@resource://gre/modules/Task.jsm:280:3
01:02:02     INFO - GECKO(3088) | asyncFunction@resource://gre/modules/Task.jsm:252:14
01:02:02     INFO - GECKO(3088) | Task_spawn@resource://gre/modules/Task.jsm:166:12
01:02:02     INFO - GECKO(3088) | Tester_execTest@chrome://mochikit/content/browser-test.js:794:9
01:02:02     INFO - GECKO(3088) | Tester.prototype.nextTest</<@chrome://mochikit/content/browser-test.js:694:7
01:02:02     INFO - GECKO(3088) | SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:795:59
01:02:02     INFO - GECKO(3088) | console.error:
01:02:02     INFO - GECKO(3088) |   Message: TypeError: creationInfo is null
01:02:02     INFO - GECKO(3088) |   Stack:
01:02:02     INFO - GECKO(3088) |     execute@resource://gre/modules/PlacesTransactions.jsm:1632:5
01:02:02     INFO - GECKO(3088) | Async*transact/promise<@resource://gre/modules/PlacesTransactions.jsm:546:26
01:02:02     INFO - GECKO(3088) | async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO - GECKO(3088) | promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO - GECKO(3088) | transact@resource://gre/modules/PlacesTransactions.jsm:543:19
01:02:02     INFO - GECKO(3088) | transact@resource://gre/modules/PlacesTransactions.jsm:231:16
01:02:02     INFO - GECKO(3088) | paste/<@chrome://browser/content/places/controller.js:1294:30
01:02:02     INFO - GECKO(3088) | async*batch/<@resource://gre/modules/PlacesTransactions.jsm:566:20
01:02:02     INFO - GECKO(3088) | async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO - GECKO(3088) | promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO - GECKO(3088) | batch@resource://gre/modules/PlacesTransactions.jsm:561:12
01:02:02     INFO - GECKO(3088) | batch@resource://gre/modules/PlacesTransactions.jsm:340:14
01:02:02     INFO - GECKO(3088) | paste@chrome://browser/content/places/controller.js:1279:15
01:02:02     INFO - GECKO(3088) | async*copy_toolbar_shortcut@chrome://mochitests/content/browser/browser/components/places/tests/browser/browser_copy_query_without_tree.js:24:9
01:02:02     INFO - GECKO(3088) | Async*Tester_execTest/<@chrome://mochikit/content/browser-test.js:803:21
01:02:02     INFO - GECKO(3088) | TaskImpl_run@resource://gre/modules/Task.jsm:331:42
01:02:02     INFO - GECKO(3088) | TaskImpl@resource://gre/modules/Task.jsm:280:3
01:02:02     INFO - GECKO(3088) | asyncFunction@resource://gre/modules/Task.jsm:252:14
01:02:02     INFO - GECKO(3088) | Task_spawn@resource://gre/modules/Task.jsm:166:12
01:02:02     INFO - GECKO(3088) | Tester_execTest@chrome://mochikit/content/browser-test.js:794:9
01:02:02     INFO - GECKO(3088) | Tester.prototype.nextTest</<@chrome://mochikit/content/browser-test.js:694:7
01:02:02     INFO - GECKO(3088) | SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:795:59
01:02:02     INFO - GECKO(3088) | console.error:
01:02:02     INFO - GECKO(3088) |   Message: TypeError: creationInfo is null
01:02:02     INFO - GECKO(3088) |   Stack:
01:02:02     INFO - GECKO(3088) |     execute@resource://gre/modules/PlacesTransactions.jsm:1632:5
01:02:02     INFO - GECKO(3088) | Async*transact/promise<@resource://gre/modules/PlacesTransactions.jsm:546:26
01:02:02     INFO - GECKO(3088) | async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO - GECKO(3088) | promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO - GECKO(3088) | transact@resource://gre/modules/PlacesTransactions.jsm:543:19
01:02:02     INFO - GECKO(3088) | transact@resource://gre/modules/PlacesTransactions.jsm:231:16
01:02:02     INFO - GECKO(3088) | paste/<@chrome://browser/content/places/controller.js:1294:30
01:02:02     INFO - GECKO(3088) | async*batch/<@resource://gre/modules/PlacesTransactions.jsm:566:20
01:02:02     INFO - GECKO(3088) | async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO - GECKO(3088) | promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO - GECKO(3088) | batch@resource://gre/modules/PlacesTransactions.jsm:561:12
01:02:02     INFO - GECKO(3088) | batch@resource://gre/modules/PlacesTransactions.jsm:340:14
01:02:02     INFO - GECKO(3088) | paste@chrome://browser/content/places/controller.js:1279:15
01:02:02     INFO - GECKO(3088) | async*copy_toolbar_shortcut@chrome://mochitests/content/browser/browser/components/places/tests/browser/browser_copy_query_without_tree.js:24:9
01:02:02     INFO - GECKO(3088) | Async*Tester_execTest/<@chrome://mochikit/content/browser-test.js:803:21
01:02:02     INFO - GECKO(3088) | TaskImpl_run@resource://gre/modules/Task.jsm:331:42
01:02:02     INFO - GECKO(3088) | TaskImpl@resource://gre/modules/Task.jsm:280:3
01:02:02     INFO - GECKO(3088) | asyncFunction@resource://gre/modules/Task.jsm:252:14
01:02:02     INFO - GECKO(3088) | Task_spawn@resource://gre/modules/Task.jsm:166:12
01:02:02     INFO - GECKO(3088) | Tester_execTest@chrome://mochikit/content/browser-test.js:794:9
01:02:02     INFO - GECKO(3088) | Tester.prototype.nextTest</<@chrome://mochikit/content/browser-test.js:694:7
01:02:02     INFO - GECKO(3088) | SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:795:59
01:02:02     INFO - TEST-INFO | started process screenshot
01:02:02     INFO - TEST-INFO | screenshot: exit 0
01:02:02     INFO - Buffered messages logged at 01:02:02
01:02:02     INFO - Entering test bound copy_toolbar_shortcut
01:02:02     INFO - must wait for load
01:02:02     INFO - must wait for focus
01:02:02     INFO - TEST-PASS | browser/components/places/tests/browser/browser_copy_query_without_tree.js | Clipboard has the given value - 
01:02:02     INFO - Buffered messages finished
01:02:02     INFO - TEST-UNEXPECTED-FAIL | browser/components/places/tests/browser/browser_copy_query_without_tree.js | Uncaught exception - at resource://gre/modules/PlacesTransactions.jsm:1632 - TypeError: creationInfo is null
01:02:02     INFO - Stack trace:
01:02:02     INFO -     execute@resource://gre/modules/PlacesTransactions.jsm:1632:5
01:02:02     INFO -     Async*transact/promise<@resource://gre/modules/PlacesTransactions.jsm:546:26
01:02:02     INFO -     async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO -     promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO -     transact@resource://gre/modules/PlacesTransactions.jsm:543:19
01:02:02     INFO -     transact@resource://gre/modules/PlacesTransactions.jsm:231:16
01:02:02     INFO -     paste/<@chrome://browser/content/places/controller.js:1294:30
01:02:02     INFO -     async*batch/<@resource://gre/modules/PlacesTransactions.jsm:566:20
01:02:02     INFO -     async*enqueue/promise<@resource://gre/modules/PlacesTransactions.jsm:472:58
01:02:02     INFO -     promise callback*enqueue@resource://gre/modules/PlacesTransactions.jsm:472:19
01:02:02     INFO -     batch@resource://gre/modules/PlacesTransactions.jsm:561:12
01:02:02     INFO -     batch@resource://gre/modules/PlacesTransactions.jsm:340:14
01:02:02     INFO -     paste@chrome://browser/content/places/controller.js:1279:15
01:02:02     INFO -     async*copy_toolbar_shortcut@chrome://mochitests/content/browser/browser/components/places/tests/browser/browser_copy_query_without_tree.js:24:9
01:02:02     INFO -     Async*Tester_execTest/<@chrome://mochikit/content/browser-test.js:803:21
01:02:02     INFO -     Tester_execTest@chrome://mochikit/content/browser-test.js:794:9
01:02:02     INFO -     Tester.prototype.nextTest</<@chrome://mochikit/content/browser-test.js:694:7
01:02:02     INFO -     SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:795:59
01:02:02     INFO - Leaving test bound copy_toolbar_shortcut
Summary: Intermittent browser/components/places/tests/browser/browser_copy_query_without_tree.js | Uncaught exception - at resource://gre/modules/PlacesTransactions.jsm:1632 - TypeError: creationInfo is null → Intermittent browser/components/places/tests/browser/browser_copy_query_without_tree.js | Uncaught exception - at PlacesTransactions.jsm:1632 - TypeError: creationInfo is null
Comment hidden (Intermittent Failures Robot)
Comment hidden (Intermittent Failures Robot)
Comment hidden (Intermittent Failures Robot)
this failure has increased recently with 31 instances in the last 7 days:
https://brasstacks.mozilla.com/orangefactor/index.html?display=Bug&bugid=1395526


these are primarily on opt/pgo builds, not really on debug.

::mak, is this something you can help set a priority on and work on it or find someone to work on it when appropriate?
Flags: needinfo?(mak77)
Whiteboard: [stockwell needswork]
Assignee

Comment 5

2 years ago
I'll take it.
Assignee: nobody → standard8
Flags: needinfo?(mak77)
Priority: P5 → P2
Comment hidden (Intermittent Failures Robot)
Assignee

Comment 7

2 years ago
FTR, I tried a push to try server with added debug, unfortunately I couldn't get it to fail on a simple opt build with 500 retriggers...

Next steps are to try and simplify the debug & land it, or see if I can get a pgo build running.
Assignee

Comment 9

2 years ago
New try build with some lower-impact debug and hopefully with pgo builds: https://treeherder.mozilla.org/#/jobs?repo=try&revision=5b106fcf6227476ca14306eb4d05a5de6dfec844
Assignee

Comment 11

2 years ago
mozreview-review
Comment on attachment 8913726 [details]
Bug 1395526 - Avoid potential race with places initialisation when clipboard tests are starting to avoid intermittents.

https://reviewboard.mozilla.org/r/185122/#review190146

This has had 82 green runs on try with an expanded debug version. I've just triggered some more with this landable version.

::: browser/components/places/tests/browser/head.js:79
(Diff revision 1)
>   * @param aFlavor
>   *        Data flavor to expect.
>   */
>  function promiseClipboard(aPopulateClipboardFn, aFlavor) {
> -  return new Promise(resolve => {
> -    waitForClipboard(data => !!data, aPopulateClipboardFn, resolve, aFlavor);
> +  return new Promise((resolve, reject) => {
> +    waitForClipboard(data => !!data, aPopulateClipboardFn, resolve, reject, aFlavor);

Note: this is a separate bug fix - the fourth argument to waitForClipboard was missing, that meant we could wait on any flavor rather than the one we wanted.
Comment hidden (Intermittent Failures Robot)

Comment 13

2 years ago
mozreview-review
Comment on attachment 8913726 [details]
Bug 1395526 - Avoid potential race with places initialisation when clipboard tests are starting to avoid intermittents.

https://reviewboard.mozilla.org/r/185122/#review190524

::: browser/components/nsBrowserGlue.js:1633
(Diff revision 1)
>        Cu.reportError(ex);
>      }).then(() => {
>        // NB: deliberately after the catch so that we always do this, even if
>        // we threw halfway through initializing in the Task above.
>        Services.obs.notifyObservers(null, "places-browser-init-complete");
> +      this._placesBrowserInitComplete = true;

nit: in one case you set the var before notifying, in the other case you set it after notifying, you should probably set it always before, just for consistency.

::: browser/components/places/tests/browser/browser_copy_query_without_tree.js:31
(Diff revision 1)
> +
> +  try {
> -  await library.ContentTree.view.controller.paste();
> +    await library.ContentTree.view.controller.paste();
> +  } catch (ex) {
> +    Assert.ok(false, `paste threw error: ${ex}`);
> +  }

I was actually expecting add_task to already fail and print out the exception if an await throws... is it not the case?

::: browser/components/places/tests/browser/head.js:478
(Diff revision 1)
>  };
> +
> +function promisePlacesInitComplete() {
> +  return new Promise(resolve => {
> +    const gBrowserGlue = Cc["@mozilla.org/browser/browserglue;1"]
> +      .getService(Ci.nsIObserver);

nit: align dot on [

::: browser/components/places/tests/browser/head.js:484
(Diff revision 1)
> +
> +    let observer = (aSubject, aTopic2, aData) => {
> +      Services.obs.removeObserver(observer, aTopic2);
> +      resolve({subject: aSubject, data: aData});
> +    };
> +    Services.obs.addObserver(observer, "places-browser-init-complete");

TestUtils.topicObserved

(there is potential for a follow up mentored bug to use that in Places instead of promiseTopicObserved)

::: browser/components/places/tests/browser/head.js:486
(Diff revision 1)
> +      Services.obs.removeObserver(observer, aTopic2);
> +      resolve({subject: aSubject, data: aData});
> +    };
> +    Services.obs.addObserver(observer, "places-browser-init-complete");
> +
> +    gBrowserGlue.observe({wrappedJSObject: fxAccounts}, "browser-glue-test",

maybe not fxAccounts :)
Attachment #8913726 - Flags: review?(mak77) → review+
Assignee

Comment 14

2 years ago
mozreview-review-reply
Comment on attachment 8913726 [details]
Bug 1395526 - Avoid potential race with places initialisation when clipboard tests are starting to avoid intermittents.

https://reviewboard.mozilla.org/r/185122/#review190524

> I was actually expecting add_task to already fail and print out the exception if an await throws... is it not the case?

I think I did that as part of debugging or something, and forgot to take out the try/catch. In any case, I think you're right, so I'll take it out.
Comment hidden (mozreview-request)

Comment 16

2 years ago
Pushed by mbanner@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/15ae046e02c5
Avoid potential race with places initialisation when clipboard tests are starting to avoid intermittents. r=mak

Comment 17

2 years ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/15ae046e02c5
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 58
I don't see these failures on Beta. I assume this is tied to async Places transactions.
Whiteboard: [stockwell needswork] → [stockwell fixed:race]
Comment hidden (Intermittent Failures Robot)
Comment hidden (Intermittent Failures Robot)
You need to log in before you can comment on or make changes to this bug.