Closed Bug 1148763 Opened 9 years ago Closed 9 years ago

browser_updateid.js is going to permafail when Gecko 39 merges to Beta

Categories

(Firefox Health Report Graveyard :: Client: Desktop, defect)

defect
Not set
normal

Tracking

(firefox39 verified, firefox40 verified)

VERIFIED FIXED
Firefox 40
Tracking Status
firefox39 --- verified
firefox40 --- verified

People

(Reporter: RyanVM, Assigned: Dexter)

References

Details

(Keywords: assertion, crash)

Attachments

(1 file)

It's not immediately clear what broke this, but it's something from the last few days (my mid-week simulation push wasn't hitting this). I'll try to bisect it down.

https://treeherder.mozilla.org/logviewer.html#?job_id=6018968&repo=try

15:39:56 INFO - Assertion failure: !aOther.IsNull() (Cannot compute with aOther null value), at ../../../dist/include/mozilla/TimeStamp.h:510
15:39:56 INFO - #01: mozilla::RecordShutdownEndTimeStamp() [xpcom/ds/TimeStamp.h:510]
15:39:56 INFO - #02: XRE_main [toolkit/xre/nsAppRunner.cpp:4500]
15:39:56 INFO - #03: do_main [browser/app/nsBrowserApp.cpp:294]
15:39:56 INFO - #04: main [browser/app/nsBrowserApp.cpp:669]
15:39:56 INFO - TEST-INFO | Main app process: killed by out-of-range signal, number 117
15:39:56 INFO - 617 INFO checking window state
15:39:56 INFO - 618 INFO TEST-START | Shutdown
15:39:56 INFO - 619 INFO Browser Chrome Test Summary
15:39:56 INFO - 620 INFO Passed: 12842
15:39:56 INFO - 621 INFO Failed: 0
15:39:56 INFO - 622 INFO Todo: 0
15:39:56 INFO - 623 INFO *** End BrowserChrome Test Results ***
15:39:56 WARNING - TEST-UNEXPECTED-FAIL | toolkit/mozapps/extensions/test/browser/test-window/browser_updateid.js | application terminated with exit code -11
Initial regression range based on my last green simulation push:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=cc0950b7a369&tochange=44e454b5e93b
More fun with Telemetry shutdown it appears.
https://hg.mozilla.org/integration/fx-team/pushloghtml?fromchange=01482cdccd72&tochange=386d8cc19d8d

I'll narrow it down to the specific cset.
Component: Add-ons Manager → Client: Desktop
Flags: needinfo?(alessio.placitelli)
Product: Toolkit → Firefox Health Report
Note that rev 2aa9f4d0385d didn't build by itself, so I don't know which of the two csets was responsible. For future reference, situations like these are why the practice of ensuring that every cset pushed is independently buildable/testable is strongly encouraged :)
Attached patch bug1148763.patch (deleted) — Splinter Review
This patch removes a double TelemetrySession initialisation in the browser_bug557956.js test, which was causing the weird shutdown behaviour in browser_updateid.js.

Try push with trunk as beta:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=06ad4850cc78

Try push with vanilla trunk:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=b5aacd4f7f69
Assignee: nobody → alessio.placitelli
Status: NEW → ASSIGNED
Flags: needinfo?(alessio.placitelli)
Attachment #8586718 - Flags: review?(gfritzsche)
Comment on attachment 8586718 [details] [diff] [review]
bug1148763.patch

Review of attachment 8586718 [details] [diff] [review]:
-----------------------------------------------------------------

::: toolkit/mozapps/extensions/test/browser/browser_bug557956.js
@@ -198,5 @@
>    Services.telemetry.canRecordExtended = true;
>    registerCleanupFunction(function () {
>      Services.telemetry.canRecordExtended = oldCanRecord;
>    });
> -  TelemetrySession.setup().then(run_next_test);

Whats the actual problem here?
Maybe we should just bail out early out of TelemetrySession.setupChromeProcess() on this._initStarted too?
Attachment #8586718 - Flags: review?(gfritzsche)
(In reply to Georg Fritzsche [:gfritzsche] from comment #7)
> Whats the actual problem here?

Forcing canRecordExtended to true makes |GetShutdownTimeFileName| get called and set |gRecordedShutdownTimeFileName|, which guards |RecordShutdownEndTimeStamp|. After the test runs, we correctly restore canRecordExtended to the old value (false).

When shutting down the browser, RecordShutdownStartTimeStamp [1] is not recording the timestamp due to Telemetry being disabled. RecordShutdownEndTimeStamp [1] still gets called, as |gRecordedShutdownTimeFileName| is set.

> Maybe we should just bail out early out of
> TelemetrySession.setupChromeProcess() on this._initStarted too?

I can add that, but his really only happens in Mochitests and I think we shouldn't be initializing TelemetrySession in that test to begin with.

[1] - https://hg.mozilla.org/mozilla-central/annotate/18a8ea7c2c62/toolkit/components/telemetry/Telemetry.cpp#l3558
[2] - https://hg.mozilla.org/mozilla-central/annotate/18a8ea7c2c62/toolkit/components/telemetry/Telemetry.cpp#l3568
[3] - https://hg.mozilla.org/mozilla-central/annotate/18a8ea7c2c62/toolkit/components/telemetry/Telemetry.cpp#l1773
(In reply to Alessio Placitelli [:Dexter] from comment #8)
> (In reply to Georg Fritzsche [:gfritzsche] from comment #7)
> > Whats the actual problem here?
> 
> Forcing canRecordExtended to true makes |GetShutdownTimeFileName| get called
> and set |gRecordedShutdownTimeFileName|, which guards
> |RecordShutdownEndTimeStamp|. After the test runs, we correctly restore
> canRecordExtended to the old value (false).
> 
> When shutting down the browser, RecordShutdownStartTimeStamp [1] is not
> recording the timestamp due to Telemetry being disabled.
> RecordShutdownEndTimeStamp [1] still gets called, as
> |gRecordedShutdownTimeFileName| is set.

This sounds potentially broken then, can you file a phase 4 follow-up on that?
Apparently this is hard to trace down and we should consider if we can fix it or make it a clearer failure etc.

> > Maybe we should just bail out early out of
> > TelemetrySession.setupChromeProcess() on this._initStarted too?
> 
> I can add that, but his really only happens in Mochitests and I think we
> shouldn't be initializing TelemetrySession in that test to begin with.

Yes and yes. This bug just points to that issue and we should fix it.
We don't have any safe-guards against calling TelemetrySession.setup() twice though, so we should fix that just like the this._initialized guard.

If the test works fine with those parts removed then that's good.
Is this test still fine if it is run alone, i.e. when the delayed TelemetrySession init didn't finish yet?
(In reply to Georg Fritzsche [:gfritzsche] from comment #9)
> (In reply to Alessio Placitelli [:Dexter] from comment #8)
> > (In reply to Georg Fritzsche [:gfritzsche] from comment #7)
> > > Whats the actual problem here?
> > 
> > Forcing canRecordExtended to true makes |GetShutdownTimeFileName| get called
> > and set |gRecordedShutdownTimeFileName|, which guards
> > |RecordShutdownEndTimeStamp|. After the test runs, we correctly restore
> > canRecordExtended to the old value (false).
> > 
> > When shutting down the browser, RecordShutdownStartTimeStamp [1] is not
> > recording the timestamp due to Telemetry being disabled.
> > RecordShutdownEndTimeStamp [1] still gets called, as
> > |gRecordedShutdownTimeFileName| is set.
> 
> This sounds potentially broken then, can you file a phase 4 follow-up on
> that?
> Apparently this is hard to trace down and we should consider if we can fix
> it or make it a clearer failure etc.

Filed bug 1149980 for that.

> > > Maybe we should just bail out early out of
> > > TelemetrySession.setupChromeProcess() on this._initStarted too?
> > 
> > I can add that, but his really only happens in Mochitests and I think we
> > shouldn't be initializing TelemetrySession in that test to begin with.
> 
> Yes and yes. This bug just points to that issue and we should fix it.
> We don't have any safe-guards against calling TelemetrySession.setup() twice
> though, so we should fix that just like the this._initialized guard.

As we discussed over IRC, that's not needed, as |.setup()| already bails out if |this._initialized| or there's an init task already running.

> If the test works fine with those parts removed then that's good.
> Is this test still fine if it is run alone, i.e. when the delayed
> TelemetrySession init didn't finish yet?

Yes, the test still works when run alone.
Attachment #8586718 - Flags: review?(gfritzsche)
Attachment #8586718 - Flags: review?(gfritzsche) → review+
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/2edd4fbfb7e1
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Whiteboard: [fixed-in-fx-team]
Target Milestone: --- → Firefox 40
Status: RESOLVED → VERIFIED
Product: Firefox Health Report → Firefox Health Report Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: