Repository: mozilla/bugbug

Issue:
Add basic tests for uplift model



Discussion:
I will try implement test for that
I am new to open source contribution . This issue is not closed yet . Can you provide me some insights regarding the issue
You can take inspiration from #606.

Resolving patch:
diff --git a/bugbug/model.py b/bugbug/model.py
--- a/bugbug/model.py
+++ b/bugbug/model.py
@@ -283,16 +283,17 @@ def train(self, importance_cutoff=0.15):
             print(
                 f"\nConfidence threshold > {confidence_threshold} - {len(y_test_filter)} classified"
             )
-            print(
-                metrics.confusion_matrix(
-                    y_test_filter, y_pred_filter, labels=class_names
+            if len(y_test_filter) != 0:
+                print(
+                    metrics.confusion_matrix(
+                        y_test_filter, y_pred_filter, labels=class_names
+                    )
                 )
-            )
-            print(
-                classification_report_imbalanced(
-                    y_test_filter, y_pred_filter, labels=class_names
+                print(
+                    classification_report_imbalanced(
+                        y_test_filter, y_pred_filter, labels=class_names
+                    )
                 )
-            )
 
         joblib.dump(self, self.__class__.__name__.lower())
 


Test patch:
diff --git a/tests/fixtures/bugs.json b/tests/fixtures/bugs.json
--- a/tests/fixtures/bugs.json
+++ b/tests/fixtures/bugs.json
@@ -32,3 +32,5 @@
 {"cf_status_firefox68": "---", "blocks": [], "cf_status_geckoview66": "---", "is_cc_accessible": true, "keywords": ["perf", "testcase", "triage-deferred"], "cf_qa_whiteboard": "", "url": "https://alexvincent.us/temp/intersect-test/perfTest.html", "qa_contact": "", "cf_rank": null, "regressions": [], "cf_tracking_firefox67": "---", "cf_fx_iteration": "---", "cf_tracking_firefox_relnote": "---", "cf_last_resolved": null, "cf_fx_points": "---", "cf_tracking_geckoview66": "---", "cc_detail": [{"email": "lhansen@mozilla.com", "real_name": "Lars T Hansen [:lth]", "name": "lhansen@mozilla.com", "nick": "lth", "id": 499633}, {"email": "nicolas.b.pierron@mozilla.com", "real_name": "Nicolas B. Pierron [:nbp]", "name": "nicolas.b.pierron@mozilla.com", "nick": "nbp", "id": 422187}], "summary": "Performance issue vs Google Chrome computing union or intersection of two JS arrays", "cf_has_str": "---", "cf_user_story": "", "cf_status_firefox69": "---", "platform": "x86", "cf_status_firefox_esr60": "---", "votes": 0, "version": "Trunk", "mentors_detail": [], "cf_status_firefox67": "---", "is_creator_accessible": true, "is_confirmed": true, "priority": "P3", "cf_status_thunderbird_esr60": "---", "assigned_to_detail": {"email": "nobody@mozilla.org", "real_name": "Nobody; OK to take it and work on it", "name": "nobody@mozilla.org", "nick": "nobody", "id": 1}, "creator": "ajvincent@gmail.com", "last_change_time": "2017-09-23T01:06:10Z", "cf_fission_milestone": "---", "comment_count": 2, "creator_detail": {"email": "ajvincent@gmail.com", "real_name": "Alex Vincent [:WeirdAl]", "name": "ajvincent@gmail.com", "nick": "WeirdAl", "id": 16665}, "cc": ["lhansen@mozilla.com", "nicolas.b.pierron@mozilla.com"], "duplicates": [], "cf_tracking_thunderbird_esr60": "---", "assigned_to": "nobody@mozilla.org", "groups": [], "see_also": [], "id": 1320195, "whiteboard": "", "creation_time": "2016-11-24T22:17:56Z", "cf_status_firefox53": "affected", "depends_on": [], "cf_webcompat_priority": "---", "cf_tracking_firefox69": "---", "mentors": [], "dupe_of": null, "cf_tracking_firefox67_0_5": "---", "regressed_by": [], "resolution": "", "type": "defect", "classification": "Components", "alias": null, "cf_has_regression_range": "---", "op_sys": "macOS", "status": "NEW", "cf_status_firefox67_0_5": "---", "cf_crash_signature": "", "is_open": true, "cf_tracking_firefox_esr60": "---", "severity": "normal", "flags": [], "cf_tracking_firefox68": "---", "component": "JavaScript Engine", "product": "Core", "target_milestone": "---", "history": [{"when": "2016-11-25T08:18:19Z", "changes": [{"removed": "", "added": "lhansen@mozilla.com", "field_name": "cc"}], "who": "lhansen@mozilla.com"}, {"when": "2016-11-25T18:28:39Z", "changes": [{"removed": "", "added": "nicolas.b.pierron@mozilla.com", "field_name": "cc"}], "who": "nicolas.b.pierron@mozilla.com"}, {"when": "2017-09-23T01:06:10Z", "changes": [{"removed": "", "added": "triage-deferred", "field_name": "keywords"}, {"removed": "--", "added": "P3", "field_name": "priority"}], "who": "bug-husbandry-bot@mozilla.bugs"}], "comments": [{"count": 0, "text": "Steps to reproduce:\n(1) In Firefox, set the preference dom.max_script_run_time to 0.\n(2) Open the URL.\n(3) Open the Web Console.\n(4) Click on the \"Run test\" button.\n\nIn Google Chrome, the test takes about ten minutes to run.  In Mozilla Firefox, three to four hours.\n\nThe code exercises two different ways to generate intersections between two arrays of objects, and likewise two different ways to generate unions of the arrays.  I was looking for criteria to form a tipping point from one algorithm to another.", "id": 11886460, "creation_time": "2016-11-24T22:17:56Z", "author": "ajvincent@gmail.com"}, {"count": 1, "text": "On evilpie's advice, I reduced the number of tests and dropped the largest tests (those which test 65,536 elements in an array).  In the revised test, Google Chrome clocks in at about 16 seconds, while Mozilla Firefox trunk takes about 50 seconds, three times as long.", "id": 11892237, "creation_time": "2016-11-28T19:45:29Z", "author": "ajvincent@gmail.com"}], "attachments": []}
 {"cf_status_firefox68": "---", "blocks": [1286041, 1325148, 1332283], "cf_status_geckoview66": "---", "is_cc_accessible": true, "keywords": ["memory-leak", "regression"], "cf_qa_whiteboard": "", "url": "", "qa_contact": "", "cf_rank": "12", "regressions": [], "cf_tracking_firefox67": "---", "cf_status_firefox52": "fixed", "cf_fx_iteration": "---", "cf_tracking_firefox_relnote": "---", "cf_last_resolved": "2017-01-18T22:19:50Z", "cf_fx_points": "---", "cf_status_firefox50": "unaffected", "cf_tracking_geckoview66": "---", "cf_status_firefox51": "unaffected", "cc_detail": [{"email": "achronop@gmail.com", "real_name": "Alex Chronopoulos [:achronop]", "name": "achronop@gmail.com", "nick": "achronop", "id": 441856}, {"email": "andrei.vaida@softvision.ro", "real_name": "Andrei Vaida [:avaida]", "name": "andrei.vaida@softvision.ro", "nick": "avaida", "id": 488993}, {"email": "bzbarsky@mit.edu", "real_name": "Boris Zbarsky [:bzbarsky, bz on IRC]", "name": "bzbarsky@mit.edu", "nick": "bzbarsky", "id": 20209}, {"email": "continuation@gmail.com", "real_name": "Andrew McCreight [:mccr8]", "name": "continuation@gmail.com", "nick": "mccr8", "id": 406194}, {"email": "d@domenic.me", "real_name": "Domenic Denicola", "name": "d@domenic.me", "nick": "d", "id": 308714}, {"email": "ehsan@mozilla.com", "real_name": ":Ehsan Akhgari", "name": "ehsan@mozilla.com", "nick": "Ehsan", "id": 251051}, {"email": "erahm@mozilla.com", "real_name": "Eric Rahm [:erahm] (Away until June 3rd)", "name": "erahm@mozilla.com", "nick": "erahm", "id": 496127}, {"email": "karlt@mozbugz.karlt.net", "real_name": "Karl Tomlinson (:karlt)", "name": "karlt@mozbugz.karlt.net", "nick": "karlt", "id": 274246}, {"email": "mozillamarcia.knous@gmail.com", "real_name": "Marcia Knous [:marcia - needinfo? me]", "name": "mozillamarcia.knous@gmail.com", "nick": "marcia", "id": 8519}, {"email": "mreavy@mozilla.com", "real_name": "Maire Reavy [:mreavy] Plz needinfo", "name": "mreavy@mozilla.com", "nick": "mreavy", "id": 74434}, {"email": "padenot@mozilla.com", "real_name": "Paul Adenot (:padenot) (Off until the 10th of June)", "name": "padenot@mozilla.com", "nick": "padenot", "id": 404637}, {"email": "rjesup@jesup.org", "real_name": "Randell Jesup [:jesup] (needinfo me)", "name": "rjesup@jesup.org", "nick": "jesup", "id": 11539}, {"email": "ryanvm@gmail.com", "real_name": "Ryan VanderMeulen [:RyanVM]", "name": "ryanvm@gmail.com", "nick": "RyanVM", "id": 75935}, {"email": "sunfish@mozilla.com", "real_name": "Dan Gohman [:sunfish]", "name": "sunfish@mozilla.com", "nick": "sunfish", "id": 468136}, {"email": "VYV03354@nifty.ne.jp", "real_name": "Masatoshi Kimura [:emk]", "name": "VYV03354@nifty.ne.jp", "nick": "emk", "id": 5842}], "summary": "Linux32 crashtests perma leaking the world", "cf_has_str": "---", "cf_user_story": "", "cf_status_firefox69": "---", "platform": "Unspecified", "cf_status_firefox_esr60": "---", "votes": 0, "version": "52 Branch", "mentors_detail": [], "cf_status_firefox67": "---", "is_creator_accessible": true, "is_confirmed": true, "priority": "P1", "cf_status_thunderbird_esr60": "---", "cf_tracking_firefox53": "+", "assigned_to_detail": {"email": "padenot@mozilla.com", "real_name": "Paul Adenot (:padenot) (Off until the 10th of June)", "name": "padenot@mozilla.com", "nick": "padenot", "id": 404637}, "creator": "ahal@mozilla.com", "last_change_time": "2017-01-31T06:27:52Z", "cf_fission_milestone": "---", "comment_count": 56, "creator_detail": {"email": "ahal@mozilla.com", "real_name": "Andrew Halberstadt [:ahal]", "name": "ahal@mozilla.com", "nick": "ahal", "id": 382067}, "cc": ["achronop@gmail.com", "andrei.vaida@softvision.ro", "bzbarsky@mit.edu", "continuation@gmail.com", "d@domenic.me", "ehsan@mozilla.com", "erahm@mozilla.com", "karlt@mozbugz.karlt.net", "mozillamarcia.knous@gmail.com", "mreavy@mozilla.com", "padenot@mozilla.com", "rjesup@jesup.org", "ryanvm@gmail.com", "sunfish@mozilla.com", "VYV03354@nifty.ne.jp"], "duplicates": [1330372], "cf_tracking_thunderbird_esr60": "---", "assigned_to": "padenot@mozilla.com", "groups": [], "see_also": [], "id": 1325215, "whiteboard": "[MemShrink:P1]", "creation_time": "2016-12-21T22:04:51Z", "cf_status_firefox53": "fixed", "depends_on": [], "cf_tracking_firefox69": "---", "cf_webcompat_priority": "---", "mentors": [], "dupe_of": null, "cf_tracking_firefox67_0_5": "---", "regressed_by": [], "resolution": "FIXED", "cf_tracking_firefox52": "+", "type": "defect", "classification": "Components", "alias": null, "cf_has_regression_range": "---", "op_sys": "Linux", "status": "RESOLVED", "cf_status_firefox67_0_5": "---", "cf_crash_signature": "", "is_open": false, "cf_tracking_firefox_esr60": "---", "severity": "normal", "flags": [{"modification_date": "2017-01-25T17:09:20Z", "creation_date": "2017-01-25T17:09:20Z", "type_id": 37, "status": "+", "name": "in-testsuite", "id": 1517688, "setter": "ryanvm@gmail.com"}, {"modification_date": "2017-01-31T06:27:52Z", "creation_date": "2017-01-31T06:27:52Z", "type_id": 864, "status": "-", "name": "qe-verify", "id": 1520455, "setter": "andrei.vaida@softvision.ro"}], "cf_tracking_firefox68": "---", "component": "Web Audio", "product": "Core", "target_milestone": "mozilla53", "history": [{"when": "2016-12-22T03:02:13Z", "changes": [{"removed": "Unspecified", "added": "Linux", "field_name": "op_sys"}], "who": "ahal@mozilla.com"}, {"when": "2016-12-29T17:19:20Z", "changes": [{"removed": "", "added": "ryanvm@gmail.com", "field_name": "cc"}, {"removed": "unspecified", "added": "52 Branch", "field_name": "version"}], "who": "ahal@mozilla.com"}, {"when": "2016-12-29T17:50:20Z", "changes": [{"removed": "", "added": "luke@mozilla.com, sunfish@mozilla.com", "field_name": "cc"}, {"removed": "", "added": "needinfo?(luke@mozilla.com), needinfo?(sunfish@mozilla.com)", "field_name": "flagtypes.name"}], "who": "ahal@mozilla.com"}, {"when": "2016-12-29T17:54:16Z", "changes": [{"removed": "needinfo?(luke@mozilla.com), needinfo?(sunfish@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "ahal@mozilla.com"}, {"when": "2016-12-29T18:36:04Z", "changes": [{"removed": "", "added": "achronop@gmail.com", "field_name": "cc"}, {"removed": "Linux crashtests perma leaking the world", "added": "Linux32 crashtests perma leaking the world", "field_name": "summary"}, {"removed": "", "added": "needinfo?(achronop@gmail.com)", "field_name": "flagtypes.name"}], "who": "ahal@mozilla.com"}, {"when": "2016-12-29T18:37:50Z", "changes": [{"removed": "", "added": "1286041", "field_name": "blocks"}], "who": "ahal@mozilla.com"}, {"when": "2016-12-29T18:39:15Z", "changes": [{"removed": "", "added": "mlk, regression", "field_name": "keywords"}, {"removed": "---", "added": "unaffected", "field_name": "cf_status_firefox50"}, {"removed": "---", "added": "unaffected", "field_name": "cf_status_firefox51"}, {"removed": "---", "added": "affected", "field_name": "cf_status_firefox52"}, {"removed": "---", "added": "affected", "field_name": "cf_status_firefox53"}], "who": "ryanvm@gmail.com"}, {"when": "2016-12-29T19:17:09Z", "changes": [{"removed": "---", "added": "?", "field_name": "cf_tracking_firefox52"}, {"removed": "---", "added": "?", "field_name": "cf_tracking_firefox53"}], "who": "bzbarsky@mit.edu"}, {"when": "2016-12-29T19:26:05Z", "changes": [{"removed": "", "added": "ehsan@mozilla.com", "field_name": "cc"}, {"removed": "", "added": "needinfo?(ehsan@mozilla.com)", "field_name": "flagtypes.name"}], "who": "bzbarsky@mit.edu"}, {"when": "2016-12-29T19:26:18Z", "changes": [{"removed": "", "added": "bzbarsky@mit.edu", "field_name": "cc"}], "who": "bzbarsky@mit.edu"}, {"when": "2016-12-29T19:44:48Z", "changes": [{"removed": "General", "added": "Web Audio", "field_name": "component"}, {"removed": "nobody@mozilla.org", "added": "ehsan@mozilla.com", "field_name": "assigned_to"}, {"removed": "needinfo?(ehsan@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "ehsan@mozilla.com"}, {"when": "2016-12-29T19:45:12Z", "changes": [{"removed": "", "added": "needinfo?(ahalberstadt@mozilla.com)", "field_name": "flagtypes.name"}], "who": "ehsan@mozilla.com"}, {"when": "2016-12-29T19:54:16Z", "changes": [{"attachment_id": 8822500, "removed": "", "added": "review?(bzbarsky@mit.edu)", "field_name": "flagtypes.name"}], "who": "ehsan@mozilla.com"}, {"when": "2016-12-29T19:56:41Z", "changes": [{"attachment_id": 8822500, "removed": "review?(bzbarsky@mit.edu)", "added": "review+", "field_name": "flagtypes.name"}], "who": "bzbarsky@mit.edu"}, {"when": "2016-12-29T20:05:59Z", "changes": [{"removed": "", "added": "karlt@mozbugz.karlt.net", "field_name": "cc"}, {"attachment_id": 8822500, "removed": "", "added": "review?(karlt@mozbugz.karlt.net)", "field_name": "flagtypes.name"}], "who": "ehsan@mozilla.com"}, {"when": "2016-12-29T20:08:21Z", "changes": [{"removed": "needinfo?(ahalberstadt@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "ahal@mozilla.com"}, {"when": "2016-12-29T22:58:02Z", "changes": [{"removed": "luke@mozilla.com", "added": "", "field_name": "cc"}], "who": "luke@mozilla.com"}, {"when": "2016-12-30T06:31:56Z", "changes": [{"attachment_id": 8822500, "removed": "review?(karlt@mozbugz.karlt.net)", "added": "review-", "field_name": "flagtypes.name"}], "who": "karlt@mozbugz.karlt.net"}, {"when": "2016-12-30T11:53:21Z", "changes": [{"removed": "needinfo?(achronop@gmail.com)", "added": "", "field_name": "flagtypes.name"}], "who": "achronop@gmail.com"}, {"when": "2017-01-03T19:00:29Z", "changes": [{"removed": "", "added": "mozillamarcia.knous@gmail.com", "field_name": "cc"}, {"removed": "?", "added": "+", "field_name": "cf_tracking_firefox52"}, {"removed": "?", "added": "+", "field_name": "cf_tracking_firefox53"}], "who": "mozillamarcia.knous@gmail.com"}, {"when": "2017-01-03T20:32:49Z", "changes": [{"attachment_id": 8823403, "removed": "", "added": "review?(padenot@mozilla.com)", "field_name": "flagtypes.name"}, {"removed": "", "added": "padenot@mozilla.com", "field_name": "cc"}], "who": "ehsan@mozilla.com"}, {"when": "2017-01-03T20:32:51Z", "changes": [{"attachment_id": 8822500, "removed": "0", "added": "1", "field_name": "attachments.isobsolete"}], "who": "ehsan@mozilla.com"}, {"when": "2017-01-04T04:00:55Z", "changes": [{"removed": "", "added": "needinfo?(ehsan@mozilla.com)", "field_name": "flagtypes.name"}], "who": "bzbarsky@mit.edu"}, {"when": "2017-01-04T14:16:50Z", "changes": [{"removed": "", "added": "21", "field_name": "cf_rank"}, {"removed": "--", "added": "P2", "field_name": "priority"}], "who": "mfroman@nostrum.com"}, {"when": "2017-01-04T15:25:33Z", "changes": [{"removed": "needinfo?(ehsan@mozilla.com)", "added": "needinfo?(bzbarsky@mit.edu)", "field_name": "flagtypes.name"}], "who": "ehsan@mozilla.com"}, {"when": "2017-01-04T17:22:30Z", "changes": [{"removed": "needinfo?(bzbarsky@mit.edu)", "added": "", "field_name": "flagtypes.name"}], "who": "bzbarsky@mit.edu"}, {"when": "2017-01-04T17:31:24Z", "changes": [{"removed": "ehsan@mozilla.com", "added": "nobody@mozilla.org", "field_name": "assigned_to"}], "who": "ehsan@mozilla.com"}, {"when": "2017-01-06T22:47:47Z", "changes": [{"removed": "", "added": "continuation@gmail.com", "field_name": "cc"}, {"removed": "", "added": "[MemShrink]", "field_name": "whiteboard"}], "who": "continuation@gmail.com"}, {"when": "2017-01-09T17:19:59Z", "changes": [{"removed": "", "added": "needinfo?(ehsan@mozilla.com), needinfo?(bzbarsky@mit.edu)", "field_name": "flagtypes.name"}], "who": "padenot@mozilla.com"}, {"when": "2017-01-09T19:57:56Z", "changes": [{"removed": "", "added": "d@domenic.me", "field_name": "cc"}, {"removed": "needinfo?(bzbarsky@mit.edu)", "added": "needinfo?(d@domenic.me)", "field_name": "flagtypes.name"}], "who": "bzbarsky@mit.edu"}, {"when": "2017-01-09T23:25:51Z", "changes": [{"removed": "", "added": "needinfo?(achronop@gmail.com)", "field_name": "flagtypes.name"}], "who": "ryanvm@gmail.com"}, {"when": "2017-01-10T00:52:58Z", "changes": [{"removed": "needinfo?(d@domenic.me)", "added": "", "field_name": "flagtypes.name"}], "who": "d@domenic.me"}, {"when": "2017-01-10T10:25:49Z", "changes": [{"removed": "needinfo?(achronop@gmail.com)", "added": "", "field_name": "flagtypes.name"}], "who": "achronop@gmail.com"}, {"when": "2017-01-10T22:24:41Z", "changes": [{"removed": "", "added": "VYV03354@nifty.ne.jp", "field_name": "cc"}], "who": "VYV03354@nifty.ne.jp"}, {"when": "2017-01-12T00:51:57Z", "changes": [{"removed": "", "added": "erahm@mozilla.com", "field_name": "cc"}, {"removed": "[MemShrink]", "added": "[MemShrink:P1]", "field_name": "whiteboard"}, {"removed": "", "added": "needinfo?(ryanvm@gmail.com)", "field_name": "flagtypes.name"}], "who": "erahm@mozilla.com"}, {"when": "2017-01-12T00:57:41Z", "changes": [{"removed": "needinfo?(ryanvm@gmail.com)", "added": "", "field_name": "flagtypes.name"}], "who": "ryanvm@gmail.com"}, {"when": "2017-01-12T01:35:19Z", "changes": [{"removed": "", "added": "rjesup@jesup.org", "field_name": "cc"}, {"removed": "", "added": "needinfo?(padenot@mozilla.com)", "field_name": "flagtypes.name"}], "who": "rjesup@jesup.org"}, {"when": "2017-01-12T14:03:46Z", "changes": [{"removed": "needinfo?(padenot@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "padenot@mozilla.com"}, {"when": "2017-01-12T16:21:46Z", "changes": [{"removed": "nobody@mozilla.org", "added": "padenot@mozilla.com", "field_name": "assigned_to"}], "who": "padenot@mozilla.com"}, {"when": "2017-01-13T14:30:21Z", "changes": [{"removed": "21", "added": "12", "field_name": "cf_rank"}, {"removed": "P2", "added": "P1", "field_name": "priority"}, {"removed": "", "added": "mreavy@mozilla.com", "field_name": "cc"}], "who": "mreavy@mozilla.com"}, {"when": "2017-01-17T15:10:15Z", "changes": [{"attachment_id": 8827467, "removed": "", "added": "review?(ehsan@mozilla.com)", "field_name": "flagtypes.name"}], "who": "padenot@mozilla.com"}, {"when": "2017-01-17T16:10:58Z", "changes": [{"attachment_id": 8823403, "removed": "review?(padenot@mozilla.com)", "added": "review+", "field_name": "flagtypes.name"}], "who": "padenot@mozilla.com"}, {"when": "2017-01-17T18:40:59Z", "changes": [{"attachment_id": 8827467, "removed": "review?(ehsan@mozilla.com)", "added": "review+", "field_name": "flagtypes.name"}], "who": "ehsan@mozilla.com"}, {"when": "2017-01-17T18:41:08Z", "changes": [{"removed": "needinfo?(ehsan@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "ehsan@mozilla.com"}, {"when": "2017-01-18T22:19:50Z", "changes": [{"removed": "NEW", "added": "RESOLVED", "field_name": "status"}, {"removed": "", "added": "FIXED", "field_name": "resolution"}, {"removed": "---", "added": "mozilla53", "field_name": "target_milestone"}, {"removed": "", "added": "2017-01-18T22:19:50Z", "field_name": "cf_last_resolved"}, {"removed": "affected", "added": "fixed", "field_name": "cf_status_firefox53"}], "who": "wkocher@mozilla.com"}, {"when": "2017-01-18T22:59:15Z", "changes": [{"removed": "", "added": "needinfo?(padenot@mozilla.com)", "field_name": "flagtypes.name"}], "who": "ryanvm@gmail.com"}, {"when": "2017-01-18T23:04:28Z", "changes": [{"attachment_id": 8823403, "removed": "0", "added": "1", "field_name": "attachments.isobsolete"}], "who": "ryanvm@gmail.com"}, {"when": "2017-01-19T14:28:07Z", "changes": [{"removed": "", "added": "1332283", "field_name": "blocks"}], "who": "ahal@mozilla.com"}, {"when": "2017-01-24T12:21:32Z", "changes": [{"removed": "needinfo?(padenot@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "padenot@mozilla.com"}, {"when": "2017-01-24T16:06:50Z", "changes": [{"attachment_id": 8827465, "removed": "", "added": "approval-mozilla-aurora?, approval-mozilla-beta?", "field_name": "flagtypes.name"}], "who": "padenot@mozilla.com"}, {"when": "2017-01-24T16:16:38Z", "changes": [{"attachment_id": 8827465, "removed": "approval-mozilla-aurora?", "added": "", "field_name": "flagtypes.name"}], "who": "ryanvm@gmail.com"}, {"when": "2017-01-25T10:57:16Z", "changes": [{"attachment_id": 8827465, "removed": "approval-mozilla-beta?", "added": "approval-mozilla-beta+", "field_name": "flagtypes.name"}], "who": "jcristau@mozilla.com"}, {"when": "2017-01-25T17:09:20Z", "changes": [{"removed": "", "added": "in-testsuite+", "field_name": "flagtypes.name"}, {"removed": "affected", "added": "fixed", "field_name": "cf_status_firefox52"}], "who": "ryanvm@gmail.com"}, {"when": "2017-01-31T06:27:52Z", "changes": [{"removed": "", "added": "andrei.vaida@softvision.ro", "field_name": "cc"}, {"removed": "", "added": "qe-verify-", "field_name": "flagtypes.name"}], "who": "andrei.vaida@softvision.ro"}], "comments": [{"count": 0, "text": "https://archive.mozilla.org/pub/firefox/try-builds/ahalberstadt@mozilla.com-46239c8ae40ed066d6ed784a1d91a0811c71f7df/try-linux-debug/try_ubuntu32_vm-debug_test-crashtest-bm04-tests1-linux32-build295.txt.gz\n\nA bug was recently found for suites using both structured logs and mozleak where leaks failed to turn jobs orange. In the meantime, a leak slipped in causing linux crashtests to leak the world (see above log). This is currently permafail on both central and aurora (but not yet beta).\n\nThe fix to the test infrastructure is landing in bug 1325148. As part of that bug, I will be temporarily disabling leak checks for crashtest. This will allow us to land the fix sooner and prevent further leaks from slipping past reftest and jsreftest.\n\nOnce this bug is fixed, leak checking in crashtests can be turned back on.", "id": 11936106, "creation_time": "2016-12-21T22:04:51Z", "author": "ahal@mozilla.com"}, {"count": 1, "text": "The leak was introduced somewhere in this push:\nhttps://hg.mozilla.org/mozilla-central/pushloghtml?changeset=38fcc30d818f99f3798865d551acce5681b0a3c0", "id": 11936116, "creation_time": "2016-12-21T22:08:40Z", "author": "ahal@mozilla.com"}, {"count": 2, "text": "This also exists on aurora, it is not on beta.", "id": 11946801, "creation_time": "2016-12-29T17:19:20Z", "author": "ahal@mozilla.com"}, {"count": 3, "text": "Because this is permafail, I was able to bisect this to this push:\nhttps://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=06baf9c96c5b2f45df49941ef00f190c79445295\n\nSo either bug 1303079 or bug 1287220 caused the leak. Luke and Dan, sorry this went uncaught for so long. The test harnesses have been failing to report leaks for a long time (see my firefox-dev post or bug 1325148). But I believe one of the above bugs introduced a memory leak into the crastest suite on linux (see linked log in comment 0).\n\nIf you'd like to see the failure on a try push, simply backout https://hg.mozilla.org/mozilla-central/rev/90dd139d7578 alongside your push. Please let me know if you need more information.", "id": 11946851, "creation_time": "2016-12-29T17:50:20Z", "author": "ahal@mozilla.com"}, {"count": 4, "text": "Crap, sorry I messed up the bisection. I didn't realize this leak was only happening on linux32 (not linux64), and the linux32 crashtests need to be backfilled. So you guys are likely off the hook, and I'll post again when the backfill has finished running.", "id": 11946856, "creation_time": "2016-12-29T17:54:16Z", "author": "ahal@mozilla.com"}, {"count": 5, "text": "The real culprit is:\nhttps://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=ace491cb598e8767a76e817f111e534fda405518&filter-searchStr=linux%20debug%20crashtest\n\nAlex, sorry this went uncaught for so long. The test harnesses have been failing to report leaks for a long time (see my firefox-dev post or bug 1325148). But I believe one of your patches in this push introduced this memory leak (see linked log in comment 0).\n\nIf you'd like to see the failure on a try push, simply backout https://hg.mozilla.org/mozilla-central/rev/90dd139d7578 alongside your push. Please let me know if you need more information.", "id": 11946943, "creation_time": "2016-12-29T18:36:04Z", "author": "ahal@mozilla.com"}, {"count": 6, "text": "[Tracking Requested - why for this release]: Leaks are bad.", "id": 11947038, "creation_time": "2016-12-29T19:17:09Z", "author": "bzbarsky@mit.edu"}, {"count": 7, "text": "Hmm.  Looking at AudioContext, it's got all sorts of strong-ref members it's not cycle-collecting (e.g. mDecodeJobs, mPromiseGripArray, mBasicWaveFormCache).\n\nThe early return added in the push above in OnStateChanged may be preventing us from reaching the mPromiseGripArray.RemoveElement() call, and then the lack of cycle collection could be causing us to leak...\n\nIs there a reason those various things are not cycle collected?", "id": 11947055, "creation_time": "2016-12-29T19:26:05Z", "author": "bzbarsky@mit.edu"}, {"count": 8, "text": "(In reply to Boris Zbarsky [:bz] (still a bit busy) from comment #7)\n> Hmm.  Looking at AudioContext, it's got all sorts of strong-ref members it's\n> not cycle-collecting (e.g. mDecodeJobs, mPromiseGripArray,\n> mBasicWaveFormCache).\n\nmBasicWaveFormCache holds an object that cannot participate in cycles, but the other two are definitely bugs.\n\n> The early return added in the push above in OnStateChanged may be preventing\n> us from reaching the mPromiseGripArray.RemoveElement() call, and then the\n> lack of cycle collection could be causing us to leak...\n\nGiven that push, this is indeed the most plausible reason.  I'll write a patch.", "id": 11947100, "creation_time": "2016-12-29T19:44:48Z", "author": "ehsan@mozilla.com"}, {"count": 9, "text": "Andrew, what's the process for testing a patch for one of these bugs?", "id": 11947101, "creation_time": "2016-12-29T19:45:12Z", "author": "ehsan@mozilla.com"}, {"count": 10, "text": "Probably back out https://hg.mozilla.org/mozilla-central/rev/90dd139d7578 and see if things fail with/without the patch?", "id": 11947120, "creation_time": "2016-12-29T19:51:26Z", "author": "bzbarsky@mit.edu"}, {"count": 11, "text": "Created attachment 8822500\nEnsure that all AudioContext members that need to participate in cycle collection do so", "id": 11947126, "creation_time": "2016-12-29T19:54:16Z", "author": "ehsan@mozilla.com"}, {"count": 12, "text": "Comment on attachment 8822500\nEnsure that all AudioContext members that need to participate in cycle collection do so\n\nr=me but I have low confidence that I'd catch issues like someone on another thread having a ref to something in mPromiseGripArray (its ostensible job is to enable that, right?) and us pulling the rug out from under it.  At the very least, it's worth a comment for mPromiseGripArray explaining what the ownership model is and why clearing it is safe....", "id": 11947129, "creation_time": "2016-12-29T19:56:41Z", "author": "bzbarsky@mit.edu"}, {"count": 13, "text": "Comment on attachment 8822500\nEnsure that all AudioContext members that need to participate in cycle collection do so\n\nWhen we transfer the promise to another thread, we cast it to void* and then cast it back to Promise* when we receive it again on the main thread.  But I'll ask another review from karlt.", "id": 11947159, "creation_time": "2016-12-29T20:05:59Z", "author": "ehsan@mozilla.com"}, {"count": 14, "text": "https://treeherder.mozilla.org/#/jobs?repo=try&revision=608191d559885134ede4dfdb8fbe082b2f481128", "id": 11947160, "creation_time": "2016-12-29T20:06:10Z", "author": "ehsan@mozilla.com"}, {"count": 15, "text": "Yes, backout https://hg.mozilla.org/mozilla-central/rev/90dd139d7578 to test it. This is also the only leak I've seen in reftests, so you can also push the backout along with this patch (or just land this and I'll do it later).", "id": 11947192, "creation_time": "2016-12-29T20:07:44Z", "author": "ahal@mozilla.com"}, {"count": 16, "text": "(In reply to :Ehsan Akhgari from comment #14)\n> https://treeherder.mozilla.org/#/\n> jobs?repo=try&revision=608191d559885134ede4dfdb8fbe082b2f481128\n\nThe patch fixes the leak! \\o/", "id": 11947354, "creation_time": "2016-12-29T21:30:47Z", "author": "ehsan@mozilla.com"}, {"count": 17, "text": "Comment on attachment 8822500\nEnsure that all AudioContext members that need to participate in cycle collection do so\n\nAsyncDecodeWebAudio creates a MediaDecodeTask with a unaccounted/bare reference\nto a WebAudioDecodeJob in mDecodeJobs.  The MediaDecodeTask is dispatched to\nanother thread and then passed back to the main thread.\nI don't see anything else keeping the WebAudioDecodeJob alive and so AFAICS\nthe reference in mDecodeJobs cannot be cleared by CC.\n\nSimilarly, allowing the AudioContext and WebAudioDecodeJob to be CCed could\nmean the callback and promise are not called.  Is there a reference I'm\nmissing?\n\nThe MediaDecodeTask should complete in finite time and call\nWebAudioDecodeJob::OnSuccess/Failure(), which will clear the reference in\nmDecodeJobs.  That means there should be no need to traverse this link, but I\ndon't know why WebAudioDecodeJob is a CCed class and I don't know what stops\nthe script running while the page is in BF cache.\n\nI've run out of time to look at mPromiseGripArray, sorry.  Does it have similar\nissues?  Feel free to ask padenot to review that as I won't be back for a few\ndays and I'm not familiar with this code.  Similarly, if you can convince\nsomeone else that there is another untraversed reference to the\nWebAudioDecodeJob somewhere.", "id": 11948001, "creation_time": "2016-12-30T06:31:56Z", "author": "karlt@mozbugz.karlt.net"}, {"count": 18, "text": "Tracking 52/53+ since this is a perma leak.", "id": 11953731, "creation_time": "2017-01-03T19:00:29Z", "author": "mozillamarcia.knous@gmail.com"}, {"count": 19, "text": "(In reply to Karl Tomlinson (:karlt) from comment #17)\n> Comment on attachment 8822500\n> Ensure that all AudioContext members that need to participate in cycle\n> collection do so\n> \n> AsyncDecodeWebAudio creates a MediaDecodeTask with a unaccounted/bare\n> reference\n> to a WebAudioDecodeJob in mDecodeJobs.  The MediaDecodeTask is dispatched to\n> another thread and then passed back to the main thread.\n> I don't see anything else keeping the WebAudioDecodeJob alive and so AFAICS\n> the reference in mDecodeJobs cannot be cleared by CC.\n> \n> Similarly, allowing the AudioContext and WebAudioDecodeJob to be CCed could\n> mean the callback and promise are not called.  Is there a reference I'm\n> missing?\n\nNo, you're completely right.\n\n> The MediaDecodeTask should complete in finite time and call\n> WebAudioDecodeJob::OnSuccess/Failure(), which will clear the reference in\n> mDecodeJobs.  That means there should be no need to traverse this link, but I\n> don't know why WebAudioDecodeJob is a CCed class and I don't know what stops\n> the script running while the page is in BF cache.\n\nThe reason why this class is CCed is that it used to have a |JS::Heap<JSObject*>| member (see bug 891986) but that seems unnecessary now.  I think we should probably consider removing the CC stuff and just hold on to it using a UniquePtr.\n\n> I've run out of time to look at mPromiseGripArray, sorry.  Does it have\n> similar\n> issues?  Feel free to ask padenot to review that as I won't be back for a few\n> days and I'm not familiar with this code.  Similarly, if you can convince\n> someone else that there is another untraversed reference to the\n> WebAudioDecodeJob somewhere.\n\nFor mPromiseGripArray, we use this array to keep the promises alive, but that's not crucial for our observable behavior, that is, it will only be observable that a promise is resolved or rejected if the consumer is already holding a reference to the promise and therefore keeping it alive.  Otherwise it's find for us to not resolve the promise and nobody will notice.  We should probably detect and handle that case correctly in AudioContext::OnStateChanged though.", "id": 11954036, "creation_time": "2017-01-03T20:26:39Z", "author": "ehsan@mozilla.com"}, {"count": 20, "text": "Created attachment 8823403\nEnsure that all AudioContext members that need to participate in cycle collection do so", "id": 11954060, "creation_time": "2017-01-03T20:32:49Z", "author": "ehsan@mozilla.com"}, {"count": 21, "text": "(In reply to :Ehsan Akhgari from comment #19)\n> > The MediaDecodeTask should complete in finite time and call\n> > WebAudioDecodeJob::OnSuccess/Failure(), which will clear the reference in\n> > mDecodeJobs.  That means there should be no need to traverse this link, but I\n> > don't know why WebAudioDecodeJob is a CCed class and I don't know what stops\n> > the script running while the page is in BF cache.\n> \n> The reason why this class is CCed is that it used to have a\n> |JS::Heap<JSObject*>| member (see bug 891986) but that seems unnecessary\n> now.  I think we should probably consider removing the CC stuff and just\n> hold on to it using a UniquePtr.\n\nI did that in bug 1328422.", "id": 11954288, "creation_time": "2017-01-03T21:57:21Z", "author": "ehsan@mozilla.com"}, {"count": 22, "text": "> that is, it will only be observable that a promise is resolved or rejected\n> if the consumer is already holding a reference to the promise and therefore keeping it alive.\n\nThat is not true at all.  Say the consumer does:\n\n  yourObject.getPromise().then(f1, f2);\n\nThe consumer is not holding a reference to the promise returned by getPromise.  But it _can_ tell whether the promise is resolved or rejected by which of f1 and f2 is called.  The thing keeping the promise alive is whatever is planning to resolve or reject it.\n\n> Otherwise it's find for us to not resolve the promise and nobody will notice\n\nThe people whose callbacks don't get called will notice!", "id": 11954981, "creation_time": "2017-01-04T04:00:45Z", "author": "bzbarsky@mit.edu"}, {"count": 23, "text": "This can only happen in a window that has FreeInnerObjects called on it, no?  Are such callbacks expected to be called in that situation?", "id": 11956163, "creation_time": "2017-01-04T15:25:33Z", "author": "ehsan@mozilla.com"}, {"count": 24, "text": "> This can only happen in a window that has FreeInnerObjects called on it, no? \n\nWhich \"this\"?\n\n> Are such callbacks expected to be called in that situation?\n\nUnclear.  Per spec, yes, but the spec is bonkers.  In Gecko, we avoid calling callbacks for a promise whose global IsDying(), but call them otherwise, I believe.", "id": 11956570, "creation_time": "2017-01-04T17:22:30Z", "author": "bzbarsky@mit.edu"}, {"count": 25, "text": "(In reply to Boris Zbarsky [:bz] (still a bit busy) from comment #24)\n> > This can only happen in a window that has FreeInnerObjects called on it, no? \n> \n> Which \"this\"?\n\nThe callbacks not getting called.\n\n> > Are such callbacks expected to be called in that situation?\n> \n> Unclear.  Per spec, yes, but the spec is bonkers.  In Gecko, we avoid\n> calling callbacks for a promise whose global IsDying(), but call them\n> otherwise, I believe.\n\nHmm, so it's _possible_ for this to happen after FreeInnerObjects.  :(\n\nI don't have a good idea on what to do any more then.", "id": 11956608, "creation_time": "2017-01-04T17:31:24Z", "author": "ehsan@mozilla.com"}, {"count": 26, "text": "Note that putting promises in mPromiseGripArray isn't the only way to keep them alive, but still the problem of us having a reference that creates a cycle but we cannot declare to the cycle collector remains, even if we resort to manual AddRefs/Releases...", "id": 11956618, "creation_time": "2017-01-04T17:33:20Z", "author": "ehsan@mozilla.com"}, {"count": 27, "text": "> The callbacks not getting called.\n\nAh, because that's the only way to get into the \"mAudioContextState == AudioContextState::Closed\" state?  \n\nWould it make sense to just reject all the promises when entering that state, and block more promises being added to the list?", "id": 11956673, "creation_time": "2017-01-04T17:49:31Z", "author": "bzbarsky@mit.edu"}, {"count": 28, "text": "More to the point, shouldn't the web audio spec define the behavior for what happens with these promises on navigation?", "id": 11956675, "creation_time": "2017-01-04T17:50:19Z", "author": "bzbarsky@mit.edu"}, {"count": 29, "text": "Yes, I think this is definitely underdefined right now.", "id": 11956745, "creation_time": "2017-01-04T18:17:08Z", "author": "ehsan@mozilla.com"}, {"count": 30, "text": "(In reply to Boris Zbarsky [:bz] (still a bit busy) from comment #27)\n> > The callbacks not getting called.\n> \n> Ah, because that's the only way to get into the \"mAudioContextState ==\n> AudioContextState::Closed\" state?  \n\nYou can enter \"AudioContextState::Closed\" when calling `close` on the `AudioContext`. This is also called from FreeInnerObject (FreeInnerObject -> AudioContext::Shutdown -> AudioContext::Close), but the promise returned is ignored.\n\n> Would it make sense to just reject all the promises when entering that\n> state, and block more promises being added to the list?\n\nWe already do the second part: per spec, calling `close` on an `AudioContext` set a main thread flag on the `AudioContext` so that authors cannot call `suspend`, `resume` or `close` again on it (it throws). This blocks more promise from being added to the list.\n\nThen in theory, all requests and their associated promises are being processed linearly on the other thread, until processing the `close`, which is the last one in the queue, since no other `Promise` can be queue after (apart from an implementation detail in bug 1285290). When a request has been processed on the other thread, a runnable is posted to the main thread, we find the promise associated with it, and resolve it.\n\nHowever in this context (Calling `close` on an `AudioContext` that has other promises in fligh), it is probably reasonable to reject all  promises that are in flight (we would store them on the AudioContext) and proceed with closing the context, resolving the `Promise` returned by the `close` method last.\n\nThis would require a spec change but not too crazy, and is what Chromium is doing apparently. I don't quite know for sure what we would do with the pointers we sent to the other thread, we can probably check if there are still registered as \"in-flight promise\", and if not, do nothing. We can also send something else that are not pointers if we want extra safety (probably using CoatCheck [0]).\n\nNow, if we are navigating away from the page, what usually happens with `Promise`s that are in flight? Do usually we drop them? There is no time to execute the `then()` functions, right ? Maybe we can just spec that navigating away from a page that has active (i.e. non already closed) `AudioContext` close them, but drops the promise instead of rejecting them. Is that legal?\n\nIs there a precedent on the web platform to write prose like this? I tried to have a look at fetch (that I know is promise heavy), but I haven't managed to find a behaviour I could use as an inspiration, but I must be looking in the wrong location.\n\n\n[0]: https://dxr.mozilla.org/mozilla-central/source/dom/media/systemservices/MediaUtils.h?q=CoatCheck&redirect_type=direct#208", "id": 11967516, "creation_time": "2017-01-09T17:19:59Z", "author": "padenot@mozilla.com"}, {"count": 31, "text": "> what usually happens with `Promise`s that are in flight?\n\nUnclear.\n\n> There is no time to execute the `then()` functions, right ?\n\nUnclear.  Per spec, the interaction of promise processing with navigation is somewhere between \"batshit crazy\" (i.e. everything is alive forever, navigation can't clean anything up) and \"not defined\", depending on how you choose to look at it...\n\n> Is there a precedent on the web platform to write prose like this?\n\nI'm not sure.  Paging Domenic, who's been more involved in promisy bits...", "id": 11968106, "creation_time": "2017-01-09T19:57:56Z", "author": "bzbarsky@mit.edu"}, {"count": 32, "text": "I'm wondering if we should consider backing out bug 1286041 from Aurora at this point. I checked and it nearly does so cleanly, so hopefully Alex could cook that up with minimal effort. This bug doesn't seem to be moving in a \"We're going to have a safe to uplift fix\" direction :(", "id": 11968711, "creation_time": "2017-01-09T23:25:51Z", "author": "ryanvm@gmail.com"}, {"count": 33, "text": "(In reply to Paul Adenot (:padenot) from comment #30)\n> > Would it make sense to just reject all the promises when entering that\n> > state, and block more promises being added to the list?\n> \n> We already do the second part: per spec, calling `close` on an\n> `AudioContext` set a main thread flag on the `AudioContext` so that authors\n> cannot call `suspend`, `resume` or `close` again on it (it throws). This\n> blocks more promise from being added to the list.\n> \n> Then in theory, all requests and their associated promises are being\n> processed linearly on the other thread, until processing the `close`, which\n> is the last one in the queue, since no other `Promise` can be queue after\n> (apart from an implementation detail in bug 1285290). When a request has\n> been processed on the other thread, a runnable is posted to the main thread,\n> we find the promise associated with it, and resolve it.\n\nThat sounds reasonable to me, and that is not the cause of this bug IIUC.\n\n> However in this context (Calling `close` on an `AudioContext` that has other\n> promises in fligh), it is probably reasonable to reject all  promises that\n> are in flight (we would store them on the AudioContext) and proceed with\n> closing the context, resolving the `Promise` returned by the `close` method\n> last.\n\nI prefer the model of resolving promises in a way that depends only on the\nstate of the AudioContext at the time the promise is created, rather than\nhaving the resolution depend on subsequent async operations, leading to races.\n\n> Now, if we are navigating away from the page, what usually happens with\n> `Promise`s that are in flight? Do usually we drop them? There is no time to\n> execute the `then()` functions, right ? Maybe we can just spec that\n> navigating away from a page that has active (i.e. non already closed)\n> `AudioContext` close them, but drops the promise instead of rejecting them.\n> Is that legal?\n\nThat sound fine to me, if others think it is reasonable.", "id": 11968758, "creation_time": "2017-01-09T23:38:36Z", "author": "karlt@mozbugz.karlt.net"}, {"count": 34, "text": "I was summoned to talk about promises and navigation, so here goes:\n\nIn general, the platform allows code from navigated-away-from frames to run, as long as the event loop still exists. (For example, you can save a closure from an iframe, then navigate that iframe, and the closure will still work when called.) Conceptually, that's how promises work too. A closure is saved to the event loop, and can still be executed even after navigation. Only tearing down the entire event loop will stop it from executing. So, you can definitely execute then() callbacks after navigation; there's no issue there.\n\nFor specific cases, the platform will prevent certain closures from executing on navigation. This is often done in the \"unloading document cleanup steps\". HTML itself uses these to clear the \"list of active timers\", thus stopping any setTimeout-enqueued closures from executing after navigation.\n\nAnother example is Fetch. Although it is currently buggy (per https://github.com/whatwg/fetch/issues/416) and I believe underdefined (in that nothing on the platform actually uses https://fetch.spec.whatwg.org/#concept-fetch-group-terminate from what I can tell), the intent is that navigating will reject all in-flight promises. This will immediately run their rejection handlers. (Although it's possible that they might execute after the actual document destruction due to event loop vagaries; I'm not sure.)\n\nSo in general, you first need to ask whether you actually want to prevent these promises from settling after navigation or not. If an AudioContext is usable even in a navigated-away-from document in general, then there's no reason to prematurely cease any ongoing promise activity. I don't see \"active document\" anywhere Ctrl+Fing through https://webaudio.github.io/web-audio-api/, or any \"unloading document cleanup steps\" that would close an AudioContext when the documents unloads, so maybe this is the case you've landed in here.\n\nIf you *do* want to prevent web audio from working after navigation, then you'll probably want to insert a bunch of \"active document\" checks throughout the web audio spec, and then add \"unloading document cleanup steps\" that reject any in-flight promises and perform any necessary shutdown.\n\nHope this helps...", "id": 11969001, "creation_time": "2017-01-10T00:52:58Z", "author": "d@domenic.me"}, {"count": 35, "text": "To avoid spamming this thread, I will follow up Ryan's request in the original bug (1286041).", "id": 11969936, "creation_time": "2017-01-10T10:25:49Z", "author": "achronop@gmail.com"}, {"count": 36, "text": "P1, this has disabled leak checking on crash tests. Is there a reason we're only backing out on Aurora?", "id": 11975985, "creation_time": "2017-01-12T00:51:57Z", "author": "erahm@mozilla.com"}, {"count": 37, "text": "I wanted to leave the door open for a \"real\" fix based on the work already done in this bug once the spec-related questions get sorted out. And the leak checking disabling is only on Linux, so we're not completely devoid of coverage. That said, I'm not opposed to bug 1330372 landing on trunk too to stop the bleeding and repurposing this bug for a \"real\" fix if that's what the media folks prefer.", "id": 11975998, "creation_time": "2017-01-12T00:57:41Z", "author": "ryanvm@gmail.com"}, {"count": 38, "text": "Paul - please see comment 34.  And what's your opinion on backing out, or leaving it disabled (on linux)?\n\nIn any case, you know more about this than I.", "id": 11976112, "creation_time": "2017-01-12T01:35:19Z", "author": "rjesup@jesup.org"}, {"count": 39, "text": "(In reply to Karl Tomlinson (:karlt) from comment #33)\n\n> I prefer the model of resolving promises in a way that depends only on the\n> state of the AudioContext at the time the promise is created, rather than\n> having the resolution depend on subsequent async operations, leading to\n> races.\n\nI agree. Let's continue doing that, then.\n\n> > Now, if we are navigating away from the page, what usually happens with\n> > `Promise`s that are in flight? Do usually we drop them? There is no time to\n> > execute the `then()` functions, right ? Maybe we can just spec that\n> > navigating away from a page that has active (i.e. non already closed)\n> > `AudioContext` close them, but drops the promise instead of rejecting them.\n> > Is that legal?\n> \n> That sound fine to me, if others think it is reasonable.\n\nI think we will settle on rejecting the promise on navigation.", "id": 11977412, "creation_time": "2017-01-12T14:03:46Z", "author": "padenot@mozilla.com"}, {"count": 40, "text": "Thanks all, this is much clearer now.\n\n(In reply to Domenic Denicola from comment #34)\n> If you *do* want to prevent web audio from working after navigation, then\n> you'll probably want to insert a bunch of \"active document\" checks\n> throughout the web audio spec, and then add \"unloading document cleanup\n> steps\" that reject any in-flight promises and perform any necessary shutdown.\n\nThe behaviour here is that if we're navigating away from a document, all sound should be stopped and we should stop everything as far as web audio is concerned. I've filed an issue [0] against the spec, and I've assigned myself.\n\nNow, the plan of action to solve this is as follow:\n1. Wait for a rough consensus from the WG (we'll probably settle on rejecting the promises when navigating away from the doc, so we can start doing step 2 now).\n2. Write a gecko patch that rejects the promises when the AudioContext is being shutdown. It will do the following:\n  1. Reject all the promises when the document is unloaded.\n  2. Whenever we want to resolve a promise on the main thread because we've just finished an operation on the audio thread, don't panic if we can't find it in the `mPromiseGripArray`, since it can be that it has already been rejected.\n  3. Land something along the lines of ehsan's patch (since I think step 2.2 will bitrot it) and restore checking for leaks\n  4. Clean up all this, using `CoatCheck` [1] instead of our `void*` hack so it's less dangerous, and add comments about all this more.\n\nI'll probably do 2.4 in a separate bug so we can close this bug and restore leak checking as soon as possible.\n\n[0]: https://github.com/WebAudio/web-audio-api/issues/1139\n[2]: http://searchfox.org/mozilla-central/source/dom/media/systemservices/MediaUtils.h#271", "id": 11977575, "creation_time": "2017-01-12T14:50:21Z", "author": "padenot@mozilla.com"}, {"count": 41, "text": "Created attachment 8827465\nEnsure that all AudioContext members that need to participate in cycle collection do so\n\nEhsan's patch, without the promise rejection bit, that comes in the next patch,\nbecause it was bitrot.", "id": 11987234, "creation_time": "2017-01-17T15:08:24Z", "author": "padenot@mozilla.com"}, {"count": 42, "text": "Created attachment 8827467\nReject promises in flight when shutting down AudioContexts\n\nThis rejects the promises on shutdown, and has the part about your other patch,\nbut rebased on top of the rest.", "id": 11987238, "creation_time": "2017-01-17T15:10:15Z", "author": "padenot@mozilla.com"}, {"count": 43, "text": "This is green on try when re-triggering a number of times, and with the leak-check restored.", "id": 11987452, "creation_time": "2017-01-17T16:11:27Z", "author": "padenot@mozilla.com"}, {"count": 44, "text": "Comment on attachment 8827467\nReject promises in flight when shutting down AudioContexts\n\nReview of attachment 8827467:\n-----------------------------------------------------------------\n\n::: dom/media/webaudio/AudioContext.cpp\n@@ +638,5 @@\n>    }\n>  \n> +  for (auto p : mPromiseGripArray) {\n> +    p->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);\n> +  }\n\nI think you also need to clear the whole array here.  r=me with that.", "id": 11987949, "creation_time": "2017-01-17T18:40:59Z", "author": "ehsan@mozilla.com"}, {"count": 45, "text": "Pushed by paul@paul.cx:\nhttps://hg.mozilla.org/integration/mozilla-inbound/rev/c01f7957ff52\nEnsure that all AudioContext members that need to participate in cycle collection do so; r=padenot\nhttps://hg.mozilla.org/integration/mozilla-inbound/rev/353266dd63ed\nReject promises in flight when shutting down AudioContexts.  r=ehsan", "id": 11990079, "creation_time": "2017-01-18T09:52:09Z", "author": "pulsebot@bots.tld"}, {"count": 46, "text": "Pushed by paul@paul.cx:\nhttps://hg.mozilla.org/integration/mozilla-inbound/rev/3f73c8d5bb4d\nFix bustage.", "id": 11990113, "creation_time": "2017-01-18T10:04:43Z", "author": "pulsebot@bots.tld"}, {"count": 47, "text": "*** Bug 1330372 has been marked as a duplicate of this bug. ***", "id": 11991133, "creation_time": "2017-01-18T15:59:17Z", "author": "achronop@gmail.com"}, {"count": 48, "text": "https://hg.mozilla.org/mozilla-central/rev/c01f7957ff52\nhttps://hg.mozilla.org/mozilla-central/rev/353266dd63ed\nhttps://hg.mozilla.org/mozilla-central/rev/3f73c8d5bb4d", "id": 11992617, "creation_time": "2017-01-18T22:19:50Z", "author": "wkocher@mozilla.com"}, {"count": 49, "text": "Please request Aurora approval on this when you're comfortable doing so.", "id": 11992777, "creation_time": "2017-01-18T22:59:15Z", "author": "ryanvm@gmail.com"}, {"count": 50, "text": "(In reply to Ryan VanderMeulen [:RyanVM] from comment #49)\n> Please request Aurora approval on this when you're comfortable doing so.\n\nBeta, now. Quite an easy patch, though.", "id": 12005519, "creation_time": "2017-01-24T12:21:32Z", "author": "padenot@mozilla.com"}, {"count": 51, "text": "Comment on attachment 8827465\nEnsure that all AudioContext members that need to participate in cycle collection do so\n\nApproval Request Comment\n[Feature/Bug causing the regression]: bug 1286041\n[User impact if declined]: unnecessary test failure, inability to monitor leak count\n[Is this code covered by automated tests?]: yes, this allows us to restore leak checking\n[Has the fix been verified in Nightly?]: yes, RyanVM tells us it's better\n[Needs manual test from QE? If yes, steps to reproduce]: No\n[List of other uplifts needed for the feature/fix]: All three revision pushed in this bug\n[Is the change risky?]: No\n[Why is the change risky/not risky?]: ehsan has looked at the CC stuff, and I've look at the promise stuff, we believe we got it right. The leak is now gone with this patch, and we've restored the leak check, that is still green.\n[String changes made/needed]: none", "id": 12006078, "creation_time": "2017-01-24T16:06:50Z", "author": "padenot@mozilla.com"}, {"count": 52, "text": "Comment on attachment 8827465\nEnsure that all AudioContext members that need to participate in cycle collection do so\n\nThis landed before the uplift, so only Beta needs it.", "id": 12006111, "creation_time": "2017-01-24T16:16:38Z", "author": "ryanvm@gmail.com"}, {"count": 53, "text": "Comment on attachment 8827465\nEnsure that all AudioContext members that need to participate in cycle collection do so\n\nfix memory leak, beta52+ (all three patches), should be in b2", "id": 12008990, "creation_time": "2017-01-25T10:57:16Z", "author": "jcristau@mozilla.com"}, {"count": 54, "text": "https://hg.mozilla.org/releases/mozilla-beta/rev/0eff29d27930\nhttps://hg.mozilla.org/releases/mozilla-beta/rev/9be555475ce9", "id": 12010080, "creation_time": "2017-01-25T17:09:20Z", "author": "ryanvm@gmail.com"}, {"count": 55, "text": "Setting qe-verify- per Comment 51.", "id": 12023652, "creation_time": "2017-01-31T06:27:52Z", "author": "andrei.vaida@softvision.ro"}], "attachments": [{"content_type": "text/plain", "creator_detail": {"email": "ehsan@mozilla.com", "real_name": ":Ehsan Akhgari", "name": "ehsan@mozilla.com", "nick": "Ehsan", "id": 251051}, "creator": "ehsan@mozilla.com", "flags": [{"modification_date": "2016-12-29T19:56:41Z", "creation_date": "2016-12-29T19:54:16Z", "type_id": 937, "status": "+", "name": "review", "id": 1504516, "setter": "bzbarsky@mit.edu"}, {"modification_date": "2016-12-30T06:31:56Z", "creation_date": "2016-12-29T20:05:59Z", "type_id": 937, "status": "-", "name": "review", "id": 1504523, "setter": "karlt@mozbugz.karlt.net"}], "is_patch": 1, "creation_time": "2016-12-29T19:54:16Z", "id": 8822500, "is_obsolete": 1}, {"content_type": "text/plain", "creator_detail": {"email": "ehsan@mozilla.com", "real_name": ":Ehsan Akhgari", "name": "ehsan@mozilla.com", "nick": "Ehsan", "id": 251051}, "creator": "ehsan@mozilla.com", "flags": [{"modification_date": "2017-01-17T16:10:58Z", "creation_date": "2017-01-03T20:32:49Z", "type_id": 937, "status": "+", "name": "review", "id": 1505874, "setter": "padenot@mozilla.com"}], "is_patch": 1, "creation_time": "2017-01-03T20:32:49Z", "id": 8823403, "is_obsolete": 1}, {"content_type": "text/plain", "creator_detail": {"email": "padenot@mozilla.com", "real_name": "Paul Adenot (:padenot) (Off until the 10th of June)", "name": "padenot@mozilla.com", "nick": "padenot", "id": 404637}, "creator": "padenot@mozilla.com", "flags": [{"modification_date": "2017-01-25T10:57:16Z", "creation_date": "2017-01-24T16:06:50Z", "type_id": 721, "status": "+", "name": "approval-mozilla-beta", "id": 1516839, "setter": "jcristau@mozilla.com"}], "is_patch": 1, "creation_time": "2017-01-17T15:08:24Z", "id": 8827465, "is_obsolete": 0}, {"content_type": "text/plain", "creator_detail": {"email": "padenot@mozilla.com", "real_name": "Paul Adenot (:padenot) (Off until the 10th of June)", "name": "padenot@mozilla.com", "nick": "padenot", "id": 404637}, "creator": "padenot@mozilla.com", "flags": [{"modification_date": "2017-01-17T18:40:59Z", "creation_date": "2017-01-17T15:10:15Z", "type_id": 937, "status": "+", "name": "review", "id": 1512767, "setter": "ehsan@mozilla.com"}], "is_patch": 1, "creation_time": "2017-01-17T15:10:15Z", "id": 8827467, "is_obsolete": 0}]}
 {"cf_status_firefox68": "---", "blocks": [], "cf_status_geckoview66": "---", "is_cc_accessible": true, "keywords": ["crash", "steps-wanted", "testcase-wanted"], "cf_qa_whiteboard": "", "url": "", "qa_contact": "", "cf_rank": null, "regressions": [], "cf_tracking_firefox67": "---", "cf_fx_iteration": "---", "cf_tracking_firefox_relnote": "---", "cf_last_resolved": "2018-10-01T12:23:37Z", "cf_fx_points": "---", "cf_tracking_geckoview66": "---", "cf_status_firefox58": "affected", "cc_detail": [{"email": "jan@ikenmeyer.eu", "real_name": "Jan Andre Ikenmeyer [:darkspirit]", "name": "jan@ikenmeyer.eu", "nick": "darkspirit", "id": 580271}, {"email": "lsalzman@mozilla.com", "real_name": "Lee Salzman [:lsalzman]", "name": "lsalzman@mozilla.com", "nick": "lsalzman", "id": 536714}, {"email": "marcus.husar@gmail.com", "real_name": "Marcus Husar", "name": "marcus.husar@gmail.com", "nick": "marcus.husar", "id": 303966}, {"email": "milaninbugzilla@gmail.com", "real_name": "Milan Sreckovic [:milan] (needinfo for best results)", "name": "milaninbugzilla@gmail.com", "nick": "milan", "id": 456486}, {"email": "nical.bugzilla@gmail.com", "real_name": "Nicolas Silva [:nical]", "name": "nical.bugzilla@gmail.com", "nick": "nical", "id": 438998}], "summary": "Crash in libX11.so.6.3.0@0x41d5b", "cf_has_str": "no", "cf_user_story": "", "cf_status_firefox69": "---", "platform": "Unspecified", "cf_status_firefox_esr60": "---", "votes": 0, "cf_status_firefox55": "wontfix", "version": "55 Branch", "mentors_detail": [], "cf_status_firefox67": "---", "is_creator_accessible": true, "is_confirmed": true, "priority": "P3", "cf_status_thunderbird_esr60": "---", "assigned_to_detail": {"email": "nobody@mozilla.org", "real_name": "Nobody; OK to take it and work on it", "name": "nobody@mozilla.org", "nick": "nobody", "id": 1}, "creator": "mozillamarcia.knous@gmail.com", "last_change_time": "2018-10-01T12:23:37Z", "cf_fission_milestone": "---", "comment_count": 11, "creator_detail": {"email": "mozillamarcia.knous@gmail.com", "real_name": "Marcia Knous [:marcia - needinfo? me]", "name": "mozillamarcia.knous@gmail.com", "nick": "marcia", "id": 8519}, "cc": ["jan@ikenmeyer.eu", "lsalzman@mozilla.com", "marcus.husar@gmail.com", "milaninbugzilla@gmail.com", "nical.bugzilla@gmail.com"], "duplicates": [], "cf_tracking_thunderbird_esr60": "---", "assigned_to": "nobody@mozilla.org", "groups": [], "see_also": ["https://bugzilla.mozilla.org/show_bug.cgi?id=1415020"], "id": 1372243, "whiteboard": "[gfx-noted]", "creation_time": "2017-06-12T15:03:02Z", "depends_on": [], "cf_status_firefox56": "wontfix", "cf_tracking_firefox69": "---", "cf_webcompat_priority": "---", "mentors": [], "dupe_of": null, "cf_tracking_firefox67_0_5": "---", "regressed_by": [], "resolution": "WONTFIX", "type": "defect", "classification": "Components", "alias": null, "cf_has_regression_range": "---", "op_sys": "Linux", "status": "RESOLVED", "cf_status_firefox67_0_5": "---", "cf_crash_signature": "[@ libX11.so.6.3.0@0x41d5b]\r\n[@ libX11.so.6.3.0@0x4259b]", "is_open": false, "cf_tracking_firefox_esr60": "---", "severity": "normal", "flags": [], "cf_tracking_firefox68": "---", "cf_status_firefox57": "wontfix", "component": "Graphics", "product": "Core", "target_milestone": "---", "history": [{"when": "2017-06-12T20:01:41Z", "changes": [{"removed": "", "added": "steps-wanted, testcase-wanted", "field_name": "keywords"}, {"removed": "--", "added": "P3", "field_name": "priority"}, {"removed": "", "added": "lsalzman@mozilla.com", "field_name": "cc"}, {"removed": "", "added": "[gfx-noted]", "field_name": "whiteboard"}, {"removed": "critical", "added": "normal", "field_name": "severity"}], "who": "lsalzman@mozilla.com"}, {"when": "2017-06-12T20:30:47Z", "changes": [{"removed": "", "added": "nical.bugzilla@gmail.com", "field_name": "cc"}], "who": "lsalzman@mozilla.com"}, {"when": "2017-06-15T14:49:06Z", "changes": [{"removed": "", "added": "bugzilla@terrax.net", "field_name": "cc"}], "who": "jan@ikenmeyer.eu"}, {"when": "2017-06-20T15:34:46Z", "changes": [{"removed": "", "added": "marcus.husar@gmail.com", "field_name": "cc"}], "who": "marcus.husar@gmail.com"}, {"when": "2017-09-15T17:08:27Z", "changes": [{"removed": "", "added": "milan@mozilla.com", "field_name": "cc"}, {"removed": "affected", "added": "wontfix", "field_name": "cf_status_firefox55"}, {"removed": "---", "added": "wontfix", "field_name": "cf_status_firefox56"}, {"removed": "---", "added": "wontfix", "field_name": "cf_status_firefox57"}], "who": "milaninbugzilla@gmail.com"}, {"when": "2017-11-04T22:44:42Z", "changes": [{"removed": "---", "added": "no", "field_name": "cf_has_str"}, {"removed": "---", "added": "affected", "field_name": "cf_status_firefox58"}], "who": "jan@ikenmeyer.eu"}, {"when": "2017-11-09T10:27:44Z", "changes": [{"removed": "", "added": "https://bugzilla.mozilla.org/show_bug.cgi?id=1415020", "field_name": "see_also"}], "who": "sotaro.ikeda.g@gmail.com"}, {"when": "2018-10-01T12:23:37Z", "changes": [{"removed": "NEW", "added": "RESOLVED", "field_name": "status"}, {"removed": "", "added": "WONTFIX", "field_name": "resolution"}, {"removed": "", "added": "2018-10-01T12:23:37Z", "field_name": "cf_last_resolved"}], "who": "sledru@mozilla.com"}], "comments": [{"count": 0, "text": "This bug was filed from the Socorro interface and is \nreport bp-89c29ea2-95ec-444d-a90c-a2b7b0170514.\n=============================================================\n\nSeen while looking at crash stats - these Linux crashes seem to go back to 20170511133312: http://bit.ly/2rneewr\n\nMaybe the correlations tab can help here, didn't see any URLs yet.", "id": 12390839, "creation_time": "2017-06-12T15:03:02Z", "author": "mozillamarcia.knous@gmail.com"}, {"count": 1, "text": "At a minimum, this seems to be only occurring with OpenGL layers being used, which is not enabled by default.\n\nAlso, unless I'm interpreting the reports wrong, it looks like they're all coming from the same user.\n\nI did a cursory glance of the teardown code therein, and I couldn't spot anything obvious going wrong. It would help if we could find some STR or testcase for this.", "id": 12391819, "creation_time": "2017-06-12T20:01:41Z", "author": "lsalzman@mozilla.com"}, {"count": 2, "text": "Socorro shows 9 installs/17 crashes on one of the 2 signatures, so I think it is more than 1 user crashing.", "id": 12391908, "creation_time": "2017-06-12T20:24:38Z", "author": "mozillamarcia.knous@gmail.com"}, {"count": 3, "text": "Created attachment 8879587\nCore dump of Firefox GPU process\n\nI beg your pardon that I generated so many crash reports (between 90 and 100). I will disable the GPU process after I have sent this message.\n\nTo help you out I compiled a nightly Firefox with debug symbols. Today I was finally lucky to catch a core dump of the crashing GPU process. The attached file has information about the core dump, a backtrace and a full backtrace. If it helps, I can try to upload the complete core dump to bugzilla (4.9M, lz4 compressed).\n\nHere\u2019s the crash report that was automatically generated: https://crash-stats.mozilla.com/report/index/43be6b3c-1d43-4981-b447-ade511170620\n\nHow to reproduce:\n * Install Fedora 26\n * Download and unpack Firefox nightly\n * Start Firefox\n * Force-enable the GPU process\n * Restart Firefox\n\nThe GPU process crashes within the first 30 seconds which is not visible for the user. The browser works as expected, it just generates crash reports. It doesn\u2019t happen on every browser start.\n\nJust ask if you need any information.", "id": 12414731, "creation_time": "2017-06-20T15:34:24Z", "author": "marcus.husar@gmail.com"}, {"count": 4, "text": "Hello, I am the one with the most [@ libX11.so.6.3.0@0x4259b ] crashes.\n\nThe cause: I opened a pdf with pdfium and network.disable.ipc.security;false\n\nFor example:\nbp-11665dc6-7488-4ee8-903f-231b40170615 15.06.17 11:20 [@ libX11.so.6.3.0@0x4259b ]\n= this bug\nbp-0a1275b3-d959-40cf-9080-07caa0170615 15.06.17 11:20 [@ mozilla::net::NeckoParent::GetValidatedOriginAttributes ]\n= bug 1322610\n\n\nbp-f4b851c9-c940-4e2e-8058-622e30170609 09.06.17 17:50 [@ libX11.so.6.3.0@0x4259b ]\n= this bug\nbp-5a09146a-9cb4-40e3-b831-04d5e0170609 09.06.17 17:50 [@ mozilla::net::NeckoParent::GetValidatedOriginAttributes ]\n= bug 1322610\n\n\n(Darkspirit from bug 1322610 comment #9)\n> network.disable.ipc.security;false (default=true)\n> \n> https://gopherproxy.meulie.net/ygrex.ru/h/debian/firefox-security.html\n> > Interprocess security checks (disabled by default per bug 820712):\n> > network.disable.ipc.security=false\n> \n> I just thought that \"disabling\" \"security\" is needed for some old addons or\n> plugins, so I set it to false. \"Security checks\" sounded good.", "id": 12414897, "creation_time": "2017-06-20T16:21:41Z", "author": "jan@ikenmeyer.eu"}, {"count": 5, "text": "(In reply to Darkspirit from comment #4)\n> pdfium\nNo, sorry, I meant pdfjs.", "id": 12414910, "creation_time": "2017-06-20T16:24:40Z", "author": "jan@ikenmeyer.eu"}, {"count": 6, "text": "No user should change network.disable.ipc.security and it will get deleted in the future (post-57). See bug 1322610 comment 6.", "id": 12414919, "creation_time": "2017-06-20T16:27:45Z", "author": "jan@ikenmeyer.eu"}, {"count": 7, "text": "(In reply to Marcus Husar from comment #3)\n> How to reproduce:\n>  * Install Fedora 26\n>  * Download and unpack Firefox nightly\n>  * Start Firefox\n>  * Force-enable the GPU process\n>  * Restart Firefox\n> \n> The GPU process crashes within the first 30 seconds which is not visible for\n> the user. The browser works as expected, it just generates crash reports. It\n> doesn\u2019t happen on every browser start.\n\nThe GPU Process does not crash on my Debian Testing x64. It runs perfectly.\nThere, I have the best experience accross all systems with \"hardware accelleration (Radeon RX480) + gpu-process + webrender + webrendest\". macOS is fine without gpu-process. Windows 10 has some flickering/green elements problem with Webrender, but it is getting better.\n\nMaybe I should try Fedora (I don't want to xD) to test if it's Nightly, a bad driver or something else.\n\nbrowser.tabs.remote.force-enable;true\ndom.ipc.processCount;100\ngfx.webrender.enabled;true\ngfx.webrendest.enabled;true\nlayers.acceleration.force-enabled;true\nlayers.gpu-process.enabled;true\nlayers.gpu-process.force-enabled;true\nlayers.gpu-process.max_restarts;50\nmedia.hardware-video-decoding.force-enabled;true\nplugin.allowed_types;\nplugin.default.state;0\nplugin.disable;true\nplugin.state.flash;0\nplugin.state.java;0\nprivacy.popups.disable_from_plugins;3", "id": 12414944, "creation_time": "2017-06-20T16:35:32Z", "author": "jan@ikenmeyer.eu"}, {"count": 8, "text": "bp-27ebdab1-395f-4f88-8a7c-4343d0170621 [@ libX11.so.6.3.0@0x4259b ] a standalone crash from today. can't remember if I noticed a crash. but network.disable.ipc.security is default now and does not longer appear along to a [@ mozilla::net::NeckoParent::GetValidatedOriginAttributes ].\n\nOther crashs I had today and often:\nbp-a9a63a95-1c06-4004-b989-0a0b70170620 [@ mozalloc_abort | abort | webrender::texture_cache::TextureCache::insert ] \n= bug 1352092\n\nbp-d037725b-bb02-45be-a090-8061d0170621 [@ mozilla::gfx::DrawTarget::PushLayer ] \n= bug 1373304\n\nIn the last days I also had similar crashes which do not have a bug yet.\nbp-b677272d-61a9-46b3-a0ea-e797f0170614 [@ @0x405b17 ]\nbp-34fa4b5f-b52c-4e84-980f-27a040170614 [@ @0x405ab7 ]\nbp-36de30f3-93b8-4d90-998c-2fe990170610 [@ @0x405ab7 ]\nbp-dda82670-04c9-4d8a-9706-2887b0170610 [@ libX11.so.6.3.0@0x4259b ]\n\nbp-253ed072-8f9f-48c0-bfb6-54eee0170610 [@ libxul.so@0x10f0cf9 | gfxPlatform::GetPlatform ]\nbp-ef9b5b14-5010-460a-9699-0e68d0170610 [@ libxul.so@0x10fbe19 | gfxPlatform::GetPlatform ]\nthose two have: MOZ_RELEASE_ASSERT(!XRE_IsGPUProcess()) (GFX: Not allowed in GPU process.)", "id": 12418125, "creation_time": "2017-06-21T14:36:30Z", "author": "jan@ikenmeyer.eu"}, {"count": 9, "text": "Nightly 58 x64 20171104100412 de_DE @ Debian Testing (KDE, Radeon RX480)\ngpu process, layers force accel, no webrender (forgot it), blob-images (wihout effect), omtp, stylo-chrome\n\nMeldungs-ID \tSendedatum\nbp-8300d544-3031-417a-a01a-093090171104 04.11.17 23:32 [@ libX11.so.6.3.0@0x4259b ]\nbp-f5bc9099-2c37-420a-8535-5195a0171104 04.11.17 22:45 [@ libX11.so.6.3.0@0x4259b ]\n\nMy perception is that I can get this crash signature - with and without WebRender - when closing Nightly (and when WebRender crashs).\nThe crash stack has changed a bit over time. Especially this line is 'new':\n\n> 5 \tlibxul.so \tmozilla::layers::CompositorManagerParent::DeallocPCompositorBridgeParent \tgfx/layers/ipc/CompositorManagerParent.cpp:272", "id": 12817771, "creation_time": "2017-11-04T22:44:42Z", "author": "jan@ikenmeyer.eu"}, {"count": 10, "text": "Closing because no crash reported since 12 weeks.", "id": 13653256, "creation_time": "2018-10-01T12:23:37Z", "author": "sledru@mozilla.com"}], "attachments": [{"content_type": "text/plain", "creator_detail": {"email": "marcus.husar@gmail.com", "real_name": "Marcus Husar", "name": "marcus.husar@gmail.com", "nick": "marcus.husar", "id": 303966}, "creator": "marcus.husar@gmail.com", "flags": [], "is_patch": 0, "creation_time": "2017-06-20T15:34:24Z", "id": 8879587, "is_obsolete": 0}]}
+{"cf_status_firefox68": "---", "blocks": [1257116], "is_cc_accessible": true, "keywords": ["regression"], "cf_qa_whiteboard": "", "url": "", "qa_contact": "", "cf_rank": null, "regressions": [], "cf_tracking_firefox67": "---", "cf_fx_iteration": "---", "cf_tracking_firefox_relnote": "---", "cf_last_resolved": "2017-05-19T16:17:09Z", "cf_fx_points": "---", "cc_detail": [{"email": "andrei.vaida@softvision.ro", "real_name": "Andrei Vaida [:avaida]", "name": "andrei.vaida@softvision.ro", "nick": "avaida", "id": 488993}, {"email": "blakewu0205@gmail.com", "real_name": "Blake Wu [:bwu][:blakewu]", "name": "blakewu0205@gmail.com", "nick": "bwu", "id": 488943}, {"email": "brindusa.tot@softvision.ro", "real_name": "Brindusa Tot[:brindusat]", "name": "brindusa.tot@softvision.ro", "nick": "brindusat", "id": 553429}, {"email": "gchang@mozilla.com", "real_name": "Gerry Chang [:gchang]", "name": "gchang@mozilla.com", "nick": "gchang", "id": 506302}, {"email": "gsquelart@mozilla.com", "real_name": "Gerald Squelart [:gerald]", "name": "gsquelart@mozilla.com", "nick": "gerald", "id": 515575}, {"email": "jwilliams@softvision.com", "real_name": "Justin [:JW_SoftvisionQA]", "name": "jwilliams@softvision.com", "nick": "jwilliams", "id": 554370}, {"email": "kilik.kuo@gmail.com", "real_name": "Kilik Kuo [:kikuo] (inactive)", "name": "kilik.kuo@gmail.com", "nick": "kikuo", "id": 505627}, {"email": "nfroyd@mozilla.com", "real_name": "Nathan Froyd [:froydnj] [out until 17 June 2019]", "name": "nfroyd@mozilla.com", "nick": "froydnj", "id": 417288}, {"email": "petruta.rasa@softvision.ro", "real_name": "Petruta Rasa [Away. Please needinfo? bogdan.maris@softvision.ro]", "name": "petruta.rasa@softvision.ro", "nick": "petruta.rasa", "id": 475155}, {"email": "ryanvm@gmail.com", "real_name": "Ryan VanderMeulen [:RyanVM]", "name": "ryanvm@gmail.com", "nick": "RyanVM", "id": 75935}], "summary": "ffmpeg decoder returning errors if no frame decoded.", "cf_has_str": "---", "cf_user_story": "", "cf_status_firefox69": "---", "platform": "Unspecified", "cf_status_firefox_esr60": "---", "votes": 0, "cf_status_firefox55": "verified", "version": "52 Branch", "cf_status_firefox54": "verified", "mentors_detail": [], "cf_status_firefox67": "---", "is_creator_accessible": true, "is_confirmed": true, "priority": "P1", "cf_status_thunderbird_esr60": "---", "assigned_to_detail": {"email": "jyavenard@mozilla.com", "real_name": "Jean-Yves Avenard [:jya]", "name": "jyavenard@mozilla.com", "nick": "jya", "id": 512198}, "creator": "jyavenard@mozilla.com", "last_change_time": "2017-07-07T14:49:33Z", "cf_fission_milestone": "---", "comment_count": 21, "creator_detail": {"email": "jyavenard@mozilla.com", "real_name": "Jean-Yves Avenard [:jya]", "name": "jyavenard@mozilla.com", "nick": "jya", "id": 512198}, "cc": ["andrei.vaida@softvision.ro", "blakewu0205@gmail.com", "brindusa.tot@softvision.ro", "gchang@mozilla.com", "gsquelart@mozilla.com", "jwilliams@softvision.com", "kilik.kuo@gmail.com", "nfroyd@mozilla.com", "petruta.rasa@softvision.ro", "ryanvm@gmail.com"], "duplicates": [], "cf_tracking_thunderbird_esr60": "---", "assigned_to": "jyavenard@mozilla.com", "groups": [], "see_also": [], "id": 1364870, "whiteboard": "", "creation_time": "2017-05-15T12:06:56Z", "cf_status_firefox53": "wontfix", "depends_on": [], "cf_tracking_firefox69": "---", "cf_webcompat_priority": "---", "mentors": [], "dupe_of": null, "cf_tracking_firefox67_0_5": "---", "regressed_by": [], "resolution": "FIXED", "type": "defect", "classification": "Components", "alias": null, "cf_has_regression_range": "---", "op_sys": "Unspecified", "status": "VERIFIED", "cf_status_firefox67_0_5": "---", "cf_crash_signature": "", "is_open": false, "cf_tracking_firefox_esr60": "---", "severity": "normal", "cf_status_firefox_esr52": "fixed", "flags": [], "cf_tracking_firefox68": "---", "component": "Audio/Video: Playback", "product": "Core", "target_milestone": "mozilla55", "history": [{"when": "2017-05-16T15:36:23Z", "changes": [{"removed": "", "added": "jwilliams@softvision.com", "field_name": "cc"}, {"removed": "unspecified", "added": "52 Branch", "field_name": "version"}, {"removed": "---", "added": "wontfix", "field_name": "cf_status_firefox53"}, {"removed": "---", "added": "affected", "field_name": "cf_status_firefox54"}, {"removed": "---", "added": "affected", "field_name": "cf_status_firefox55"}], "who": "jwilliams@softvision.com"}, {"when": "2017-05-17T01:34:44Z", "changes": [{"removed": "--", "added": "P3", "field_name": "priority"}, {"removed": "", "added": "bwu@mozilla.com", "field_name": "cc"}], "who": "blakewu0205@gmail.com"}, {"when": "2017-05-19T07:47:56Z", "changes": [{"removed": "mochitest short media files are invalid", "added": "ffmpeg decoder returning errors if no frame decoded.", "field_name": "summary"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-05-19T07:49:47Z", "changes": [{"removed": "P3", "added": "P1", "field_name": "priority"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-05-19T07:54:40Z", "changes": [{"attachment_id": 8869350, "removed": "", "added": "review?(gsquelart@mozilla.com)", "field_name": "flagtypes.name"}, {"removed": "", "added": "gsquelart@mozilla.com", "field_name": "cc"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-05-19T08:40:23Z", "changes": [{"removed": "nobody@mozilla.org", "added": "jyavenard@mozilla.com", "field_name": "assigned_to"}], "who": "gsquelart@mozilla.com"}, {"when": "2017-05-19T08:42:23Z", "changes": [{"attachment_id": 8869350, "removed": "review?(gsquelart@mozilla.com)", "added": "review+", "field_name": "flagtypes.name"}], "who": "gsquelart@mozilla.com"}, {"when": "2017-05-19T16:17:09Z", "changes": [{"removed": "NEW", "added": "RESOLVED", "field_name": "status"}, {"removed": "", "added": "FIXED", "field_name": "resolution"}, {"removed": "---", "added": "mozilla55", "field_name": "target_milestone"}, {"removed": "", "added": "2017-05-19T16:17:09Z", "field_name": "cf_last_resolved"}, {"removed": "affected", "added": "fixed", "field_name": "cf_status_firefox55"}], "who": "ryanvm@gmail.com"}, {"when": "2017-05-19T20:15:18Z", "changes": [{"removed": "", "added": "ryanvm@gmail.com", "field_name": "cc"}, {"removed": "", "added": "needinfo?(jyavenard@mozilla.com)", "field_name": "flagtypes.name"}, {"removed": "---", "added": "affected", "field_name": "cf_status_firefox_esr52"}], "who": "ryanvm@gmail.com"}, {"when": "2017-05-20T05:40:16Z", "changes": [{"removed": "needinfo?(jyavenard@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-05-23T19:39:08Z", "changes": [{"removed": "", "added": "nfroyd@mozilla.com", "field_name": "cc"}, {"removed": "", "added": "needinfo?(jyavenard@mozilla.com)", "field_name": "flagtypes.name"}], "who": "nfroyd@mozilla.com"}, {"when": "2017-05-23T20:21:50Z", "changes": [{"removed": "needinfo?(jyavenard@mozilla.com)", "added": "", "field_name": "flagtypes.name"}, {"attachment_id": 8869350, "removed": "", "added": "approval-mozilla-beta?", "field_name": "flagtypes.name"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-05-24T09:43:35Z", "changes": [{"removed": "", "added": "brindusa.tot@softvision.ro, gchang@mozilla.com", "field_name": "cc"}, {"removed": "", "added": "needinfo?(brindusa.tot@softvision.ro)", "field_name": "flagtypes.name"}], "who": "gchang@mozilla.com"}, {"when": "2017-05-25T15:34:32Z", "changes": [{"removed": "RESOLVED", "added": "VERIFIED", "field_name": "status"}, {"removed": "needinfo?(brindusa.tot@softvision.ro)", "added": "", "field_name": "flagtypes.name"}, {"removed": "fixed", "added": "verified", "field_name": "cf_status_firefox55"}], "who": "brindusa.tot@softvision.ro"}, {"when": "2017-05-26T02:37:16Z", "changes": [{"attachment_id": 8869350, "removed": "approval-mozilla-beta?", "added": "approval-mozilla-beta+", "field_name": "flagtypes.name"}], "who": "gchang@mozilla.com"}, {"when": "2017-05-26T17:17:22Z", "changes": [{"removed": "affected", "added": "fixed", "field_name": "cf_status_firefox54"}], "who": "ryanvm@gmail.com"}, {"when": "2017-05-30T04:29:28Z", "changes": [{"removed": "", "added": "andrei.vaida@softvision.ro", "field_name": "cc"}, {"removed": "", "added": "qe-verify+", "field_name": "flagtypes.name"}], "who": "andrei.vaida@softvision.ro"}, {"when": "2017-05-31T12:39:17Z", "changes": [{"removed": "", "added": "petruta.rasa@softvision.ro", "field_name": "cc"}, {"removed": "qe-verify+", "added": "", "field_name": "flagtypes.name"}, {"removed": "fixed", "added": "verified", "field_name": "cf_status_firefox54"}], "who": "petruta.rasa@softvision.ro"}, {"when": "2017-06-20T22:51:48Z", "changes": [{"removed": "", "added": "needinfo?(jyavenard@mozilla.com)", "field_name": "flagtypes.name"}], "who": "ryanvm@gmail.com"}, {"when": "2017-06-21T06:27:54Z", "changes": [{"removed": "needinfo?(jyavenard@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-06-21T06:28:06Z", "changes": [{"removed": "", "added": "needinfo?(jyavenard@mozilla.com)", "field_name": "flagtypes.name"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-07-06T09:29:26Z", "changes": [{"removed": "needinfo?(jyavenard@mozilla.com)", "added": "", "field_name": "flagtypes.name"}, {"attachment_id": 8883881, "removed": "", "added": "approval-mozilla-esr52?", "field_name": "flagtypes.name"}], "who": "jyavenard@mozilla.com"}, {"when": "2017-07-07T07:35:17Z", "changes": [{"attachment_id": 8883881, "removed": "approval-mozilla-esr52?", "added": "approval-mozilla-esr52+", "field_name": "flagtypes.name"}], "who": "gchang@mozilla.com"}, {"when": "2017-07-07T14:49:33Z", "changes": [{"removed": "affected", "added": "fixed", "field_name": "cf_status_firefox_esr52"}], "who": "ryanvm@gmail.com"}], "comments": [{"count": 0, "text": "In bug 1257116, many media files use in mochitests were shortened.\n\nHowever, those files are invalid and start with data that can't be decoded.\n\nThey happen to work because we skip data with error.\n\nThose files should be remade so that they don't contain errors.", "id": 12318619, "creation_time": "2017-05-15T12:06:56Z", "author": "jyavenard@mozilla.com"}, {"count": 1, "text": "The problem is in FFmpeg MediaDataDecoder...", "id": 12332050, "creation_time": "2017-05-19T07:47:56Z", "author": "jyavenard@mozilla.com"}, {"count": 2, "text": "Created attachment 8869350\nBug 1364870: [ffmpeg] only check format if frame has been decoded.\n\nThe format member isn't set when an audio frame hasn't been decoded yet.\n\nReview commit: https://reviewboard.mozilla.org/r/140988/diff/#index_header\nSee other reviews: https://reviewboard.mozilla.org/r/140988/", "id": 12332061, "creation_time": "2017-05-19T07:54:40Z", "author": "jyavenard@mozilla.com"}, {"count": 3, "text": "Comment on attachment 8869350\nBug 1364870: [ffmpeg] only check format if frame has been decoded.\n\nhttps://reviewboard.mozilla.org/r/140988/#review144514", "id": 12332172, "creation_time": "2017-05-19T08:42:23Z", "author": "gsquelart@mozilla.com"}, {"count": 4, "text": "Pushed by jyavenard@mozilla.com:\nhttps://hg.mozilla.org/integration/autoland/rev/0333314aa0e9\n[ffmpeg] only check format if frame has been decoded. r=gerald", "id": 12332398, "creation_time": "2017-05-19T10:24:49Z", "author": "pulsebot@bots.tld"}, {"count": 5, "text": "https://hg.mozilla.org/mozilla-central/rev/0333314aa0e9", "id": 12333233, "creation_time": "2017-05-19T16:17:09Z", "author": "ryanvm@gmail.com"}, {"count": 6, "text": "Can this ride the 55 train or should it be considered for backport?", "id": 12333997, "creation_time": "2017-05-19T20:15:18Z", "author": "ryanvm@gmail.com"}, {"count": 7, "text": "I'd like this backported. Yes.", "id": 12334837, "creation_time": "2017-05-20T05:40:16Z", "author": "jyavenard@mozilla.com"}, {"count": 8, "text": "(In reply to Jean-Yves Avenard [:jya] from comment #7)\n> I'd like this backported. Yes.\n\nCan you request uplift, then, please? :)", "id": 12342074, "creation_time": "2017-05-23T19:39:08Z", "author": "nfroyd@mozilla.com"}, {"count": 9, "text": "Comment on attachment 8869350\nBug 1364870: [ffmpeg] only check format if frame has been decoded.\n\nApproval Request Comment\n[Feature/Bug causing the regression]: 1270016\n[User impact if declined]: audio decoding error with some contents. \n[Is this code covered by automated tests?]: yes. Though as errors are ignored, the regression didn't get spotted. This is being worked out. \n[Has the fix been verified in Nightly?]: manually tested\n[Needs manual test from QE? If yes, steps to reproduce]: create/set the pref media.audio-max-decode-error and set it to 0. Attempt to play the gizmo.mp4 in dom/media/test on Linux. Without the fix, the file won't play\n[List of other uplifts needed for the feature/fix]: no\n[Is the change risky?]: no\n[Why is the change risky/not risky?]: we only check the file format once decoded. \n[String changes made/needed]: None", "id": 12342210, "creation_time": "2017-05-23T20:21:50Z", "author": "jyavenard@mozilla.com"}, {"count": 10, "text": "Hi Brindusa, could you help find someone to verify if this issue was fixed as expected on a latest Nightly build? Thanks!", "id": 12343855, "creation_time": "2017-05-24T09:43:35Z", "author": "gchang@mozilla.com"}, {"count": 11, "text": "Reproduced the issue on Nightly 55.0a1, on a build from 05/06/2017 on Ubuntu 16.04 x64.\n\nVerified as fixed on the latest Nightly, 55.0a1, build ID 20170525100253 on Ubuntu 16.04 x64.", "id": 12348356, "creation_time": "2017-05-25T15:34:32Z", "author": "brindusa.tot@softvision.ro"}, {"count": 12, "text": "Comment on attachment 8869350\nBug 1364870: [ffmpeg] only check format if frame has been decoded.\n\nFix a regression and was verified. Beta54+. Should be in 54 beta 12.", "id": 12350028, "creation_time": "2017-05-26T02:37:16Z", "author": "gchang@mozilla.com"}, {"count": 13, "text": "https://hg.mozilla.org/releases/mozilla-beta/rev/808da66ef9e2", "id": 12351869, "creation_time": "2017-05-26T17:17:22Z", "author": "ryanvm@gmail.com"}, {"count": 14, "text": "Reproduced on Firefox 54 beta 11 under Ubuntu 16.04 LTS 64-bit.\nVerified as fixed on Firefox 54 beta 12.", "id": 12360939, "creation_time": "2017-05-31T12:39:17Z", "author": "petruta.rasa@softvision.ro"}, {"count": 15, "text": "Is this something we should consider for ESR52 too? If so, it'll need a rebased patch.", "id": 12416160, "creation_time": "2017-06-20T22:51:48Z", "author": "ryanvm@gmail.com"}, {"count": 16, "text": "Yes, we should....\n\nI'll wrap a patch (though I'm surprised the current one wouldn't apply)", "id": 12416979, "creation_time": "2017-06-21T06:27:54Z", "author": "jyavenard@mozilla.com"}, {"count": 17, "text": "Created attachment 8883881\n[ffmpeg] only check format if frame has been decoded. r=gerald, a=gchang\n\nThe format member isn't set when an audio frame hasn't been decoded yet.\n\nMozReview-Commit-ID: IgUj6bjVzdF", "id": 12450829, "creation_time": "2017-07-06T09:28:04Z", "author": "jyavenard@mozilla.com"}, {"count": 18, "text": "Comment on attachment 8883881\n[ffmpeg] only check format if frame has been decoded. r=gerald, a=gchang\n\n[Approval Request Comment]\nIf this is not a sec:{high,crit} bug, please state case for ESR consideration:\nUser impact if declined: Decoding error with some audio files\nFix Landed on Version: 54\nRisk to taking this patch (and alternatives if risky): no risk\nString or UUID changes made by this patch:  none", "id": 12450832, "creation_time": "2017-07-06T09:29:26Z", "author": "jyavenard@mozilla.com"}, {"count": 19, "text": "Comment on attachment 8883881\n[ffmpeg] only check format if frame has been decoded. r=gerald, a=gchang\n\nFix an audio playback issue. Let's uplift this to ESR52.3.", "id": 12453779, "creation_time": "2017-07-07T07:35:17Z", "author": "gchang@mozilla.com"}, {"count": 20, "text": "https://hg.mozilla.org/releases/mozilla-esr52/rev/de8deecbcb02", "id": 12454550, "creation_time": "2017-07-07T14:49:33Z", "author": "ryanvm@gmail.com"}], "attachments": [{"content_type": "text/x-review-board-request", "creator_detail": {"email": "jyavenard@mozilla.com", "real_name": "Jean-Yves Avenard [:jya]", "name": "jyavenard@mozilla.com", "nick": "jya", "id": 512198}, "creator": "jyavenard@mozilla.com", "flags": [{"modification_date": "2017-05-19T08:42:23Z", "creation_date": "2017-05-19T07:54:40Z", "type_id": 937, "status": "+", "name": "review", "id": 1583923, "setter": "gsquelart@mozilla.com"}, {"modification_date": "2017-05-26T02:37:16Z", "creation_date": "2017-05-23T20:21:50Z", "type_id": 721, "status": "+", "name": "approval-mozilla-beta", "id": 1585959, "setter": "gchang@mozilla.com"}], "is_patch": 0, "creation_time": "2017-05-19T07:54:40Z", "id": 8869350, "is_obsolete": 0}, {"content_type": "text/plain", "creator_detail": {"email": "jyavenard@mozilla.com", "real_name": "Jean-Yves Avenard [:jya]", "name": "jyavenard@mozilla.com", "nick": "jya", "id": 512198}, "creator": "jyavenard@mozilla.com", "flags": [{"modification_date": "2017-07-07T07:35:17Z", "creation_date": "2017-07-06T09:29:26Z", "type_id": 914, "status": "+", "name": "approval-mozilla-esr52", "id": 1607324, "setter": "gchang@mozilla.com"}], "is_patch": 1, "creation_time": "2017-07-06T09:28:04Z", "id": 8883881, "is_obsolete": 0}]}
+{"cf_status_firefox68": "---", "blocks": [1358055, 1368234], "is_cc_accessible": true, "keywords": [], "cf_qa_whiteboard": "", "url": "", "qa_contact": "", "cf_rank": null, "regressions": [], "cf_tracking_firefox67": "---", "cf_fx_iteration": "---", "cf_tracking_firefox_relnote": "---", "cf_last_resolved": "2017-05-27T08:05:52Z", "cf_fx_points": "---", "cc_detail": [{"email": "bmo@upshifts.org", "real_name": "Astley Chen (inactive)", "name": "bmo@upshifts.org", "nick": "bmo", "id": 549002}, {"email": "dbaron@dbaron.org", "real_name": "David Baron :dbaron: \ud83c\udde8\ud83c\udde6 \u231aUTC-4 (busy June 4-7)", "name": "dbaron@dbaron.org", "nick": "dbaron", "id": 3881}, {"email": "gchang@mozilla.com", "real_name": "Gerry Chang [:gchang]", "name": "gchang@mozilla.com", "nick": "gchang", "id": 506302}, {"email": "mephisto41@gmail.com", "real_name": "Morris Tseng [:mtseng] [:Morris] (Inactive)", "name": "mephisto41@gmail.com", "nick": "mtseng", "id": 473875}, {"email": "mstange@themasta.com", "real_name": "Markus Stange [:mstange]", "name": "mstange@themasta.com", "nick": "mstange", "id": 293943}, {"email": "percyley@qq.com", "real_name": "yisibl", "name": "percyley@qq.com", "nick": "percyley", "id": 543470}, {"email": "u459114@disabled.tld", "real_name": "", "name": "u459114@disabled.tld", "nick": "u459114", "id": 459114}, {"email": "wisniewskit@gmail.com", "real_name": "Thomas Wisniewski", "name": "wisniewskit@gmail.com", "nick": "wisniewskit", "id": 471096}], "summary": "[css-mask] mask-image failure at position: fixed", "cf_has_str": "---", "cf_user_story": "", "cf_status_firefox69": "---", "platform": "Unspecified", "cf_status_firefox_esr60": "---", "votes": 0, "cf_status_firefox55": "fixed", "version": "55 Branch", "cf_status_firefox54": "wontfix", "mentors_detail": [], "cf_status_firefox67": "---", "is_creator_accessible": true, "is_confirmed": true, "priority": "--", "cf_status_thunderbird_esr60": "---", "assigned_to_detail": {"email": "u459114@disabled.tld", "real_name": "", "name": "u459114@disabled.tld", "nick": "u459114", "id": 459114}, "creator": "percyley@qq.com", "last_change_time": "2017-06-08T13:30:55Z", "cf_fission_milestone": "---", "comment_count": 26, "creator_detail": {"email": "percyley@qq.com", "real_name": "yisibl", "name": "percyley@qq.com", "nick": "percyley", "id": 543470}, "cc": ["bmo@upshifts.org", "dbaron@dbaron.org", "gchang@mozilla.com", "mephisto41@gmail.com", "mstange@themasta.com", "percyley@qq.com", "u459114@disabled.tld", "wisniewskit@gmail.com"], "duplicates": [], "cf_tracking_thunderbird_esr60": "---", "assigned_to": "u459114@disabled.tld", "groups": [], "see_also": ["https://bugzilla.mozilla.org/show_bug.cgi?id=1363855", "https://bugzilla.mozilla.org/show_bug.cgi?id=1300864", "https://webcompat.com/issues/7009"], "id": 1350663, "whiteboard": "", "creation_time": "2017-03-26T05:49:36Z", "depends_on": [], "cf_webcompat_priority": "---", "cf_tracking_firefox69": "---", "mentors": [], "dupe_of": null, "cf_tracking_firefox67_0_5": "---", "regressed_by": [], "resolution": "FIXED", "type": "defect", "classification": "Components", "alias": null, "cf_has_regression_range": "---", "op_sys": "Unspecified", "status": "RESOLVED", "cf_status_firefox67_0_5": "---", "cf_crash_signature": "", "is_open": false, "cf_tracking_firefox_esr60": "---", "severity": "normal", "flags": [], "cf_tracking_firefox68": "---", "component": "Layout", "product": "Core", "target_milestone": "mozilla55", "history": [{"when": "2017-03-26T05:50:06Z", "changes": [{"removed": "", "added": "cku@mozilla.com", "field_name": "cc"}], "who": "percyley@qq.com"}, {"when": "2017-03-26T05:51:59Z", "changes": [{"removed": "", "added": "dbaron@dbaron.org", "field_name": "cc"}], "who": "percyley@qq.com"}, {"when": "2017-03-26T05:52:19Z", "changes": [{"removed": "", "added": "aschen@mozilla.com", "field_name": "cc"}], "who": "percyley@qq.com"}, {"when": "2017-03-27T09:03:57Z", "changes": [{"removed": "", "added": "percyley@qq.com", "field_name": "cc"}], "who": "percyley@qq.com"}, {"when": "2017-03-27T09:04:04Z", "changes": [{"removed": "percyley@qq.com", "added": "", "field_name": "cc"}], "who": "percyley@qq.com"}, {"when": "2017-03-27T09:09:57Z", "changes": [{"removed": "", "added": "percyley@qq.com", "field_name": "cc"}], "who": "percyley@qq.com"}, {"when": "2017-03-29T06:36:27Z", "changes": [{"removed": "nobody@mozilla.org", "added": "cku@mozilla.com", "field_name": "assigned_to"}], "who": "u459114@disabled.tld"}, {"when": "2017-03-30T06:16:59Z", "changes": [{"removed": "UNCONFIRMED", "added": "NEW", "field_name": "status"}, {"removed": "0", "added": "1", "field_name": "is_confirmed"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-11T13:09:56Z", "changes": [{"removed": "", "added": "https://bugzilla.mozilla.org/show_bug.cgi?id=1363855", "field_name": "see_also"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-14T18:13:29Z", "changes": [{"attachment_id": 8867523, "removed": "Bug 1350663 -WIP.", "added": "Bug 1350663 - Repaint mask layer when the offset fr0m mask region to  mask layer changed.", "field_name": "attachments.description"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-14T18:30:46Z", "changes": [{"attachment_id": 8867523, "removed": "", "added": "review?(mstange@themasta.com)", "field_name": "flagtypes.name"}, {"removed": "", "added": "mstange@themasta.com", "field_name": "cc"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-15T14:42:18Z", "changes": [{"attachment_id": 8867523, "removed": "review?(mstange@themasta.com)", "added": "", "field_name": "flagtypes.name"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-15T15:19:49Z", "changes": [{"attachment_id": 8867523, "removed": "Bug 1350663 - Repaint mask layer when the offset fr0m mask region to  mask layer changed.", "added": "Bug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.", "field_name": "attachments.description"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-15T15:24:23Z", "changes": [{"attachment_id": 8867523, "removed": "", "added": "review?(mstange@themasta.com)", "field_name": "flagtypes.name"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-22T05:56:25Z", "changes": [{"removed": "", "added": "1358055", "field_name": "blocks"}], "who": "mephisto41@gmail.com"}, {"when": "2017-05-22T05:56:37Z", "changes": [{"removed": "", "added": "mtseng@mozilla.com", "field_name": "cc"}], "who": "mephisto41@gmail.com"}, {"when": "2017-05-26T17:16:38Z", "changes": [{"removed": "", "added": "https://bugzilla.mozilla.org/show_bug.cgi?id=1300864", "field_name": "see_also"}], "who": "u459114@disabled.tld"}, {"when": "2017-05-26T17:27:08Z", "changes": [{"attachment_id": 8867523, "removed": "review?(mstange@themasta.com)", "added": "review+", "field_name": "flagtypes.name"}], "who": "mstange@themasta.com"}, {"when": "2017-05-27T08:05:52Z", "changes": [{"removed": "NEW", "added": "RESOLVED", "field_name": "status"}, {"removed": "", "added": "FIXED", "field_name": "resolution"}, {"removed": "---", "added": "mozilla55", "field_name": "target_milestone"}, {"removed": "", "added": "2017-05-27T08:05:52Z", "field_name": "cf_last_resolved"}, {"removed": "---", "added": "fixed", "field_name": "cf_status_firefox55"}], "who": "aryx.bugmail@gmx-topmail.de"}, {"when": "2017-05-27T09:12:35Z", "changes": [{"removed": "", "added": "1368234", "field_name": "blocks"}], "who": "u459114@disabled.tld"}, {"when": "2017-06-07T18:18:06Z", "changes": [{"removed": "", "added": "wisniewskit@gmail.com", "field_name": "cc"}, {"removed": "", "added": "https://webcompat.com/issues/7009", "field_name": "see_also"}, {"removed": "", "added": "needinfo?(cku@mozilla.com)", "field_name": "flagtypes.name"}], "who": "wisniewskit@gmail.com"}, {"when": "2017-06-08T12:45:12Z", "changes": [{"removed": "needinfo?(cku@mozilla.com)", "added": "", "field_name": "flagtypes.name"}], "who": "u459114@disabled.tld"}, {"when": "2017-06-08T12:55:00Z", "changes": [{"attachment_id": 8867523, "removed": "", "added": "approval-mozilla-beta?", "field_name": "flagtypes.name"}], "who": "u459114@disabled.tld"}, {"when": "2017-06-08T13:30:42Z", "changes": [{"attachment_id": 8867523, "removed": "approval-mozilla-beta?", "added": "approval-mozilla-beta-", "field_name": "flagtypes.name"}], "who": "gchang@mozilla.com"}, {"when": "2017-06-08T13:30:55Z", "changes": [{"removed": "", "added": "gchang@mozilla.com", "field_name": "cc"}, {"removed": "---", "added": "wontfix", "field_name": "cf_status_firefox54"}], "who": "gchang@mozilla.com"}], "comments": [{"count": 0, "text": "User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36\n\nSteps to reproduce:\n\nOpen http://razvancaliman.com/cssmasking/ and scroll down page\n\n\nActual results:\n\n \"Trekking\" text is not hidden.\n\n\nExpected results:\n\nChrome will hide text.", "id": 12178377, "creation_time": "2017-03-26T05:49:36Z", "author": "percyley@qq.com"}, {"count": 1, "text": "Created attachment 8851514\nfirefox.png", "id": 12179992, "creation_time": "2017-03-27T09:09:07Z", "author": "percyley@qq.com"}, {"count": 2, "text": "Created attachment 8851515\nchrome.png", "id": 12179993, "creation_time": "2017-03-27T09:09:26Z", "author": "percyley@qq.com"}, {"count": 3, "text": "Patch in bug 1362000 fix invalidation check for svg-mask.\nThis bug is another case - invalid test for image mask is not sufficien as well.\nBy removing the if statment at [1], we won't see this bug again.\n\nStill working on it.\n\n[1] https://hg.mozilla.org/mozilla-central/file/a2832968581c/layout/painting/FrameLayerBuilder.cpp#l3884", "id": 12316417, "creation_time": "2017-05-13T09:39:23Z", "author": "u459114@disabled.tld"}, {"count": 4, "text": "we probably should skip cache if there is any outflow element under the mask.", "id": 12316729, "creation_time": "2017-05-13T18:01:43Z", "author": "u459114@disabled.tld"}, {"count": 5, "text": "Created attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview commit: https://reviewboard.mozilla.org/r/139076/diff/#index_header\nSee other reviews: https://reviewboard.mozilla.org/r/139076/", "id": 12317018, "creation_time": "2017-05-14T11:32:19Z", "author": "u459114@disabled.tld"}, {"count": 6, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview request updated; see interdiff: https://reviewboard.mozilla.org/r/139076/diff/1-2/", "id": 12317236, "creation_time": "2017-05-14T18:13:29Z", "author": "u459114@disabled.tld"}, {"count": 7, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview request updated; see interdiff: https://reviewboard.mozilla.org/r/139076/diff/2-3/", "id": 12317237, "creation_time": "2017-05-14T18:16:32Z", "author": "u459114@disabled.tld"}, {"count": 8, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview request updated; see interdiff: https://reviewboard.mozilla.org/r/139076/diff/3-4/", "id": 12317243, "creation_time": "2017-05-14T18:28:07Z", "author": "u459114@disabled.tld"}, {"count": 9, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview request updated; see interdiff: https://reviewboard.mozilla.org/r/139076/diff/4-5/", "id": 12319137, "creation_time": "2017-05-15T15:19:49Z", "author": "u459114@disabled.tld"}, {"count": 10, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview request updated; see interdiff: https://reviewboard.mozilla.org/r/139076/diff/5-6/", "id": 12347772, "creation_time": "2017-05-25T12:18:56Z", "author": "u459114@disabled.tld"}, {"count": 11, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview request updated; see interdiff: https://reviewboard.mozilla.org/r/139076/diff/6-7/", "id": 12347908, "creation_time": "2017-05-25T13:20:13Z", "author": "u459114@disabled.tld"}, {"count": 12, "text": "When e10 is turning off, this patch can fix this bug totally. Unforunately, when e10s is on, this patch fix only part of it.\nWhen e10s turns on, we do not have a change to repatin mask while scrolling, so the content of mask keep wrong until scroll finished.\n\nBut I still think we should land this patch first, since it can fix a reftest failure in bug 1358055.", "id": 12351052, "creation_time": "2017-05-26T12:56:03Z", "author": "u459114@disabled.tld"}, {"count": 13, "text": "Created attachment 8871705\nscroll-this-page.html\n\nA test page to verify the patch.", "id": 12351106, "creation_time": "2017-05-26T13:25:50Z", "author": "u459114@disabled.tld"}, {"count": 14, "text": "I need to figure out when we have a out-of-flow element inside mask, why mask layer does not scroll with scroll frame.", "id": 12351804, "creation_time": "2017-05-26T17:02:13Z", "author": "u459114@disabled.tld"}, {"count": 15, "text": "Hi CJ, sorry I'm taking so long to review this. I was aware of a problem with APZ and mask layers that wrap fixed position frames, and since this patch didn't seem to touch anything related to APZ, I wanted to test whether it actually helps when APZ is used. But I hadn't got around to doing that.\n\nSo now that we know that it's not going to fix the problem with APZ, I'm less confused about what the patch is doing.", "id": 12351838, "creation_time": "2017-05-26T17:10:03Z", "author": "mstange@themasta.com"}, {"count": 16, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nhttps://reviewboard.mozilla.org/r/139076/#review147046\n\n::: commit-message-68d7a:46\n(Diff revision 7)\n> +   rejected.\n> +\n> +It's difficult to create a reftest for this bug as well. With scrollTo, we may\n> +mimic an environment of this error, but since reftest harness will trigger\n> +whole viewport repaint while taking a snapshot, we actually can not repro this\n> +issue on it.\n\nI think it should be quite possible to write a test for this. See 1155828-1.html or 1025914-1.html for examples.", "id": 12351915, "creation_time": "2017-05-26T17:27:08Z", "author": "mstange@themasta.com"}, {"count": 17, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nhttps://reviewboard.mozilla.org/r/139076/#review147046\n\n> I think it should be quite possible to write a test for this. See 1155828-1.html or 1025914-1.html for examples.\n\nYou are right, write a reftest for this is possible, but make it failed is not easy.\nWhen we take a snapshot in reftest harness, we will \"repaint\". When we repaint, make layer repaint; if mask layer repaint, test case pass.", "id": 12352006, "creation_time": "2017-05-26T17:56:15Z", "author": "u459114@disabled.tld"}, {"count": 18, "text": "Keep chatting log on IRC:\nmstange> CJKu: the position:fixed inside mask layer with APZ problem is a bit tricky, I think\nCJKu: I think we should fix it in a different bug\nI was trying to fix it a few weeks ago but ran into some problems, and then I mostly forgot what I had done\nI will try to find my patch and explain the problems I ran into\n<CJKu> mstange: I notice, even I turn off mask layer, use indirect paint(nsDispalyMask::PaintAsLayer), the result is still wrong  \n<mstange> CJKu: oh, that's surprising\nor no, it's not actually that surprising\nCJKu: so with APZ we use \"paint skipping\" to avoid painting at all if all we did was scroll\nCJKu: http://searchfox.org/mozilla-central/source/layout/generic/nsGfxScrollFrame.cpp#2827\nCJKu: and position:fixed inside masks is something that APZ can't handle, so paint skipping is technically wrong for this case\nCJKu: we have a very similar problem with filters, let me find the bug about that\nmstange> CJKu: https://bugzilla.mozilla.org/show_bug.cgi?id=1300864", "id": 12352065, "creation_time": "2017-05-26T18:15:28Z", "author": "u459114@disabled.tld"}, {"count": 19, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nReview request updated; see interdiff: https://reviewboard.mozilla.org/r/139076/diff/7-8/", "id": 12352105, "creation_time": "2017-05-26T18:26:44Z", "author": "u459114@disabled.tld"}, {"count": 20, "text": "Pushed by cku@mozilla.com:\nhttps://hg.mozilla.org/integration/autoland/rev/b761b30ea910\nRepaint mask layer when the offset between mask region and mask layer changed. r=mstange", "id": 12352122, "creation_time": "2017-05-26T18:30:11Z", "author": "pulsebot@bots.tld"}, {"count": 21, "text": "https://hg.mozilla.org/mozilla-central/rev/b761b30ea910", "id": 12353110, "creation_time": "2017-05-27T08:05:52Z", "author": "aryx.bugmail@gmx-topmail.de"}, {"count": 22, "text": "Is there any chance of this fix being uplifted to 54? It seems to fix an issue on at least one site using CSS clip-paths to achieve a fancy scrolling effect, as can be seen in the webcompat issue: https://webcompat.com/issues/7009\n\nThat is, on my Macbook with Intel Iris Pro, there are black/invalidated regions while/after scrolling, in builds before the mozregression range including this bug: https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=bce03a8eac301bcd9408b22333b1a67c3eaed057&tochange=1c1bf54915bbf8cda82dbf7985e87b1c0ff30e4c\n\nMozregression also tells me that the issue started with the fix in bug 1325550.\n\nAlso note that this fix doesn't seem to help completely on the affected page. There are still black/invalid regions while the page is scrolling until it stops, at which point they finally vanish.", "id": 12380069, "creation_time": "2017-06-07T18:18:06Z", "author": "wisniewskit@gmail.com"}, {"count": 23, "text": "(In reply to Thomas Wisniewski from comment #22)\n> Is there any chance of this fix being uplifted to 54? It seems to fix an\n> issue on at least one site using CSS clip-paths to achieve a fancy scrolling\n> effect, as can be seen in the webcompat issue:\n> https://webcompat.com/issues/7009\n> \n> That is, on my Macbook with Intel Iris Pro, there are black/invalidated\n> regions while/after scrolling, in builds before the mozregression range\n> including this bug:\n> https://hg.mozilla.org/mozilla-central/\n> pushloghtml?fromchange=bce03a8eac301bcd9408b22333b1a67c3eaed057&tochange=1c1b\n> f54915bbf8cda82dbf7985e87b1c0ff30e4c\n> \n> Mozregression also tells me that the issue started with the fix in bug\n> 1325550.\n> \n> Also note that this fix doesn't seem to help completely on the affected\n> page. There are still black/invalid regions while the page is scrolling\n> until it stops, at which point they finally vanish.\n\nIt's a little bit late for ride it on 54... but since this fix is simple. Let's ask for uplift and see what Sheriff think", "id": 12382429, "creation_time": "2017-06-08T12:45:12Z", "author": "u459114@disabled.tld"}, {"count": 24, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nApproval Request Comment\n[Feature/Bug causing the regression]: bug 1325550\n[User impact if declined]: mask content can be wrong with out-of-flow masked content.\n[Is this code covered by automated tests?]: no\n[Has the fix been verified in Nightly?]: yes\n[Needs manual test from QE? If yes, steps to reproduce]: no\n[List of other uplifts needed for the feature/fix]: NA\n[Is the change risky?]: no\n[Why is the change risky/not risky?]: very simple change and landed on central for two weeks.\n[String changes made/needed]: N/A\n\nI know this is a little bit late for uplift it to 54, but since this patch is simple and can fix a webcompact issue, I do suggest we should do it.", "id": 12382456, "creation_time": "2017-06-08T12:55:00Z", "author": "u459114@disabled.tld"}, {"count": 25, "text": "Comment on attachment 8867523\nBug 1350663 - Repaint mask layer when the offset between mask region and mask layer changed.\n\nIt's too late for 54. Beta54-.", "id": 12382554, "creation_time": "2017-06-08T13:30:42Z", "author": "gchang@mozilla.com"}], "attachments": [{"content_type": "image/png", "creator_detail": {"email": "percyley@qq.com", "real_name": "yisibl", "name": "percyley@qq.com", "nick": "percyley", "id": 543470}, "creator": "percyley@qq.com", "flags": [], "is_patch": 0, "creation_time": "2017-03-27T09:09:07Z", "id": 8851514, "is_obsolete": 0}, {"content_type": "image/png", "creator_detail": {"email": "percyley@qq.com", "real_name": "yisibl", "name": "percyley@qq.com", "nick": "percyley", "id": 543470}, "creator": "percyley@qq.com", "flags": [], "is_patch": 0, "creation_time": "2017-03-27T09:09:26Z", "id": 8851515, "is_obsolete": 0}, {"content_type": "text/x-review-board-request", "creator_detail": {"email": "u459114@disabled.tld", "real_name": "", "name": "u459114@disabled.tld", "nick": "u459114", "id": 459114}, "creator": "u459114@disabled.tld", "flags": [{"modification_date": "2017-05-26T17:27:08Z", "creation_date": "2017-05-15T15:24:23Z", "type_id": 937, "status": "+", "name": "review", "id": 1581178, "setter": "mstange@themasta.com"}, {"modification_date": "2017-06-08T13:30:42Z", "creation_date": "2017-06-08T12:55:00Z", "type_id": 721, "status": "-", "name": "approval-mozilla-beta", "id": 1594389, "setter": "gchang@mozilla.com"}], "is_patch": 0, "creation_time": "2017-05-14T11:32:19Z", "id": 8867523, "is_obsolete": 0}, {"content_type": "text/html", "creator_detail": {"email": "u459114@disabled.tld", "real_name": "", "name": "u459114@disabled.tld", "nick": "u459114", "id": 459114}, "creator": "u459114@disabled.tld", "flags": [], "is_patch": 0, "creation_time": "2017-05-26T13:25:50Z", "id": 8871705, "is_obsolete": 0}]}
diff --git a/tests/test_uplift.py b/tests/test_uplift.py
new file mode 100644
--- /dev/null
+++ b/tests/test_uplift.py
@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from bugbug.models.uplift import UpliftModel
+
+
+def test_get_uplift_labels():
+    model = UpliftModel()
+    classes, _ = model.get_labels()
+    assert classes[1364870] == 1
+    assert classes[1350663] != 1