From a3c942162e4d685433febf30ab4caa08f92d386e Mon Sep 17 00:00:00 2001
From: <>
Date: Thu, 3 Oct 2024 00:03:20 +0000
Subject: [PATCH] Updates
---
addon_related_signatures.html | 24 -
addon_related_signatures.js | 124 -----
all_missing_uplifts.html | 28 --
all_missing_uplifts.js | 426 -----------------
beta-stability-pushlog.html | 27 --
beta-stability-pushlog.js | 382 ---------------
beta-startup.json | 1 -
beta.json | 1 -
buildid_changeset.html | 23 -
buildid_changeset.js | 235 ----------
buildid_changeset_page.js | 26 -
channels_diff.html | 43 --
channels_diff.js | 224 ---------
common_landings.html | 47 --
common_landings.js | 216 ---------
compare-betas.html | 33 --
compare-betas.js | 384 ---------------
correlations.html | 42 --
correlations.js | 705 ----------------------------
correlations_page.js | 139 ------
exclamation_mark.svg | 1 -
graphics_critical_errors.html | 17 -
graphics_critical_errors.js | 36 --
graphics_critical_errors.json | 1 -
images/addon_related_signatures.png | Bin 65227 -> 0 bytes
images/beta-stability-pushlog.png | Bin 57154 -> 0 bytes
images/buildid_changeset.png | Bin 22985 -> 0 bytes
images/channels_diff.png | Bin 20424 -> 0 bytes
images/common_landings.png | Bin 44934 -> 0 bytes
images/compare-betas.png | Bin 239430 -> 0 bytes
images/correlations.png | Bin 53178 -> 0 bytes
images/dashboard.png | Bin 95508 -> 0 bytes
images/graphics_critical_errors.png | Bin 48480 -> 0 bytes
images/missing_uplifts.png | Bin 45511 -> 0 bytes
images/supergraph.png | Bin 138138 -> 0 bytes
index.html | 145 ------
missing_uplifts.html | 32 --
missing_uplifts.js | 284 -----------
nightly-startup.json | 1 -
nightly.json | 1 -
question_mark.svg | 1 -
release-startup.json | 1 -
release.json | 1 -
rerank.html | 38 --
rerank.js | 167 -------
rocket_fly.png | Bin 531 -> 0 bytes
scomp.css | 132 ------
scomp.html | 64 ---
scomp.js | 395 ----------------
spin.svg | 1 -
style.css | 66 ---
supergraph.html | 25 -
supergraph.js | 171 -------
53 files changed, 4710 deletions(-)
delete mode 100644 addon_related_signatures.html
delete mode 100644 addon_related_signatures.js
delete mode 100644 all_missing_uplifts.html
delete mode 100644 all_missing_uplifts.js
delete mode 100644 beta-stability-pushlog.html
delete mode 100644 beta-stability-pushlog.js
delete mode 100644 beta-startup.json
delete mode 100644 beta.json
delete mode 100644 buildid_changeset.html
delete mode 100644 buildid_changeset.js
delete mode 100644 buildid_changeset_page.js
delete mode 100644 channels_diff.html
delete mode 100644 channels_diff.js
delete mode 100644 common_landings.html
delete mode 100644 common_landings.js
delete mode 100644 compare-betas.html
delete mode 100644 compare-betas.js
delete mode 100644 correlations.html
delete mode 100644 correlations.js
delete mode 100644 correlations_page.js
delete mode 100644 exclamation_mark.svg
delete mode 100644 graphics_critical_errors.html
delete mode 100644 graphics_critical_errors.js
delete mode 100644 graphics_critical_errors.json
delete mode 100644 images/addon_related_signatures.png
delete mode 100644 images/beta-stability-pushlog.png
delete mode 100644 images/buildid_changeset.png
delete mode 100644 images/channels_diff.png
delete mode 100644 images/common_landings.png
delete mode 100644 images/compare-betas.png
delete mode 100644 images/correlations.png
delete mode 100644 images/dashboard.png
delete mode 100644 images/graphics_critical_errors.png
delete mode 100644 images/missing_uplifts.png
delete mode 100644 images/supergraph.png
delete mode 100644 index.html
delete mode 100644 missing_uplifts.html
delete mode 100644 missing_uplifts.js
delete mode 100644 nightly-startup.json
delete mode 100644 nightly.json
delete mode 100644 question_mark.svg
delete mode 100644 release-startup.json
delete mode 100644 release.json
delete mode 100644 rerank.html
delete mode 100644 rerank.js
delete mode 100644 rocket_fly.png
delete mode 100644 scomp.css
delete mode 100644 scomp.html
delete mode 100644 scomp.js
delete mode 100644 spin.svg
delete mode 100644 style.css
delete mode 100644 supergraph.html
delete mode 100644 supergraph.js
diff --git a/addon_related_signatures.html b/addon_related_signatures.html
deleted file mode 100644
index 7369d885..00000000
--- a/addon_related_signatures.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- Addon-related signatures
-
-
-
-
-
-
-
-
- Signature |
- Addons |
-
-
-
-
diff --git a/addon_related_signatures.js b/addon_related_signatures.js
deleted file mode 100644
index 22acdbf7..00000000
--- a/addon_related_signatures.js
+++ /dev/null
@@ -1,124 +0,0 @@
-let options = {
- channel: {
- value: null,
- type: "option",
- },
-};
-
-function getOption(name) {
- return options[name].value;
-}
-
-function getOptionType(name) {
- return options[name].type;
-}
-
-function setOption(name, value) {
- return (options[name].value = value);
-}
-
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function getAddons(obj) {
- return obj["addons"]
- .reduce((prev, cur) => {
- return prev.concat(
- Object.getOwnPropertyNames(cur["item"])
- .filter((elem) => elem.startsWith("Addon"))
- .map((elem) => {
- return {
- name: elem.substring(
- elem.indexOf('"') + 1,
- elem.lastIndexOf('"')
- ),
- support: cur["count_group"] / obj["total"],
- };
- })
- );
- }, [])
- .filter((addon, i, addons) => addons.indexOf(addon) === i);
-}
-
-function addRow(obj) {
- let table = document.getElementById("table");
-
- let row = table.insertRow(table.rows.length);
-
- let signature_column = row.insertCell(0);
- let signature_link = document.createElement("a");
- signature_link.textContent = obj["signature"];
- signature_link.href =
- "https://crash-stats.mozilla.org/signature/?signature=" +
- obj["signature"] +
- "&release_channel=" +
- getOption("channel") +
- "#correlations";
- signature_column.appendChild(signature_link);
-
- let addons_column = row.insertCell(1);
- let addons_pre = document.createElement("pre");
-
- addons_pre.textContent = getAddons(obj)
- .map(
- (elem) => elem["name"] + " (" + (elem["support"] * 100).toFixed(2) + "%)"
- )
- .join(", ");
-
- addons_column.appendChild(addons_pre);
-}
-
-function buildTable() {
- fetch(
- "https://analysis-output.telemetry.mozilla.org/top-signatures-correlations/data/addon_related_signatures.json.gz"
- )
- .then((response) => response.json())
- .then((addon_related_signatures) => {
- addon_related_signatures[getOption("channel")]
- .sort(
- (obj1, obj2) =>
- Math.max(...getAddons(obj2).map((elem) => elem["support"])) -
- Math.max(...getAddons(obj1).map((elem) => elem["support"]))
- )
- .forEach((obj) => addRow(obj));
- })
- .catch(function (err) {
- console.error(err);
- });
-}
-
-function rebuildTable() {
- let table = document.getElementById("table");
-
- while (table.rows.length > 1) {
- table.deleteRow(table.rows.length - 1);
- }
-
- buildTable();
-}
-
-onLoad
- .then(function () {
- Object.keys(options).forEach(function (optionName) {
- let optionType = getOptionType(optionName);
- let elem = document.getElementById(optionName);
-
- if (optionType === "option") {
- setOption(optionName, elem.options[elem.selectedIndex].value);
-
- elem.onchange = function () {
- setOption(optionName, elem.options[elem.selectedIndex].value);
- rebuildTable();
- };
- } else {
- throw new Error("Unexpected option type.");
- }
- });
- })
- .then(function () {
- buildTable();
- })
- .catch(function (err) {
- console.error(err);
- });
diff --git a/all_missing_uplifts.html b/all_missing_uplifts.html
deleted file mode 100644
index 446cb0e8..00000000
--- a/all_missing_uplifts.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- Missing uplifts
-
-
-
-
-
-
-
-
-
-
-
- Bug |
- Signature(s) |
- Number of crashes |
-
-
-
-
diff --git a/all_missing_uplifts.js b/all_missing_uplifts.js
deleted file mode 100644
index f48d6279..00000000
--- a/all_missing_uplifts.js
+++ /dev/null
@@ -1,426 +0,0 @@
-let crashesFile, crashes;
-let options = {
- channel: {
- value: null,
- type: "option",
- },
- wontfix: {
- value: null,
- type: "select",
- },
-};
-
-function getOption(name) {
- return options[name].value;
-}
-
-function getOptionType(name) {
- return options[name].type;
-}
-
-function setOption(name, value) {
- return (options[name].value = value);
-}
-
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function agoString(val, str) {
- return val + " " + (val == 1 ? str : str + "s") + " ago";
-}
-
-function prettyDate(date) {
- date = new Date(date);
- let today = new Date();
-
- let hoursDiff = Math.round((today.getTime() - date.getTime()) / 3600000);
- if (hoursDiff < 24) {
- return agoString(hoursDiff, "hour");
- }
-
- let daysDiff = Math.round((today.getTime() - date.getTime()) / 86400000);
- if (daysDiff < 10) {
- return agoString(daysDiff, "day");
- }
-
- let weeksDiff = Math.round(
- (today.getTime() - date.getTime()) / (7 * 86400000)
- );
- if (weeksDiff < 3) {
- return agoString(weeksDiff, "week");
- }
-
- let monthsDiff =
- today.getMonth() +
- 12 * today.getFullYear() -
- (date.getMonth() + 12 * date.getFullYear());
- if (monthsDiff < 12) {
- return agoString(monthsDiff, "month");
- }
-
- return agoString(today.getFullYear() - date.getFullYear(), "year");
-}
-
-function fetchWithRetry(url, trials = 0) {
- return fetch(url)
- .then((response) => {
- if (!response.ok) {
- throw new Error("Error while getting " + url);
- } else {
- return response;
- }
- })
- .catch((error) => {
- let timeout = Math.pow(2, trials) * 1000;
-
- if (timeout > 32000) {
- timeout = 32000;
- }
-
- if (trials > 64) {
- throw error;
- }
-
- return new Promise(function (resolve, reject) {
- setTimeout(() => {
- fetchWithRetry(url, trials + 1).then(resolve, reject);
- }, timeout);
- });
- });
-}
-
-async function getVersion(channel) {
- let response = await fetchWithRetry(
- "https://product-details.mozilla.org/1.0/firefox_versions.json"
- );
- let data = await response.json();
-
- if (channel == "beta") {
- return data["LATEST_FIREFOX_DEVEL_VERSION"];
- } else if (channel == "release") {
- return data["LATEST_FIREFOX_VERSION"];
- }
-
- throw new Error("Unknown channel!");
-}
-
-function getMajor(version) {
- return Number(version.substring(0, version.indexOf(".")));
-}
-
-function getFixedIn(bug, version) {
- let statuses = ["", "---", "?", "fix-optional", "affected"];
- if (getOption("wontfix")) {
- statuses.push("wontfix");
- }
-
- if (!statuses.includes(bug["cf_status_firefox" + version])) {
- return [];
- }
-
- let versionEnd = version;
- if (getOption("channel") == "beta") {
- versionEnd += 2;
- } else if (getOption("channel") == "release") {
- versionEnd += 3;
- }
-
- let fixedIn = [];
- for (version += 1; version <= versionEnd; version++) {
- if (
- bug["cf_status_firefox" + version] === "fixed" ||
- bug["cf_status_firefox" + version] === "verified"
- ) {
- fixedIn.push(version);
- }
- }
-
- return fixedIn;
-}
-
-function addRow(bug, version) {
- let table = document.getElementById("table");
-
- let row = table.insertRow(table.rows.length);
-
- let today = new Date();
- let three_days_ago = new Date().setDate(today.getDate() - 3);
- let ten_days_ago = new Date().setDate(today.getDate() - 10);
- let bug_elem = row.insertCell(0);
-
- let fixedIn = getFixedIn(bug, version);
-
- let bugLink = document.createElement("a");
- bugLink.appendChild(
- document.createTextNode(
- bug.id +
- " - " +
- "Fixed in " +
- fixedIn.join(", ") +
- ", '" +
- bug["cf_status_firefox" + version] +
- "' in " +
- version +
- "."
- )
- );
- bugLink.title =
- (bug.resolution ? bug.resolution + " - " : "") +
- "Last activity: " +
- prettyDate(bug.last_change_time);
- bugLink.href = "https://bugzilla.mozilla.org/show_bug.cgi?id=" + bug.id;
-
- let bugDate = new Date(bug.last_change_time);
- if (bugDate > three_days_ago) {
- bugLink.style.color = "green";
- } else if (bugDate > ten_days_ago) {
- bugLink.style.color = "orange";
- } else {
- bugLink.style.color = "red";
- }
-
- bug_elem.appendChild(bugLink);
-
- let signatures_elem = row.insertCell(1);
- bug["signatures"].forEach((signature) => {
- let signature_link = document.createElement("a");
- signature_link.appendChild(document.createTextNode(signature));
- signature_link.href =
- "https://crash-stats.mozilla.org/signature/?signature=" +
- encodeURIComponent(signature);
- signatures_elem.appendChild(signature_link);
- signatures_elem.appendChild(document.createElement("br"));
- });
-
- let crashes_count = row.insertCell(2);
- crashes_count.appendChild(document.createTextNode(bug["crashes_count"]));
-}
-
-function buildTable() {
- return getVersion(getOption("channel")).then((full_version) => {
- let version = getMajor(full_version);
- let versionEnd = version;
- if (getOption("channel") == "beta") {
- versionEnd += 1;
- } else if (getOption("channel") == "release") {
- versionEnd += 2;
- }
-
- let query =
- "https://bugzilla.mozilla.org/rest/bug?f1=cf_crash_signature&o1=isnotempty&";
- let fieldNum = 2;
-
- query += "j" + fieldNum + "=AND&f" + fieldNum + "=OP&";
- fieldNum++;
-
- query +=
- "f" +
- fieldNum +
- "=cf_status_firefox" +
- version +
- "&o" +
- fieldNum +
- "=notequals&v" +
- fieldNum +
- "=fixed&";
- fieldNum++;
- query +=
- "f" +
- fieldNum +
- "=cf_status_firefox" +
- version +
- "&o" +
- fieldNum +
- "=notequals&v" +
- fieldNum +
- "=verified&";
- fieldNum++;
- query +=
- "f" +
- fieldNum +
- "=cf_status_firefox" +
- version +
- "&o" +
- fieldNum +
- "=notequals&v" +
- fieldNum +
- "=unaffected&";
- fieldNum++;
- if (!getOption("wontfix")) {
- query +=
- "f" +
- fieldNum +
- "=cf_status_firefox" +
- version +
- "&o" +
- fieldNum +
- "=notequals&v" +
- fieldNum +
- "=wontfix&";
- fieldNum++;
- }
-
- query += "f" + fieldNum + "=CP&";
- fieldNum++;
-
- query += "j" + fieldNum + "=OR&f" + fieldNum + "=OP&";
- fieldNum++;
-
- for (v = version + 1; v <= versionEnd; v++) {
- query += "j" + fieldNum + "=OR&f" + fieldNum + "=OP&";
- fieldNum++;
- query +=
- "f" +
- fieldNum +
- "=cf_status_firefox" +
- v +
- "&o" +
- fieldNum +
- "=equals&v" +
- fieldNum +
- "=verified&";
- fieldNum++;
- query +=
- "f" +
- fieldNum +
- "=cf_status_firefox" +
- v +
- "&o" +
- fieldNum +
- "=equals&v" +
- fieldNum +
- "=fixed&";
- fieldNum++;
- query += "f" + fieldNum + "=CP&";
- fieldNum++;
- }
- query += "f" + fieldNum + "=CP&";
- fieldNum++;
-
- query += "include_fields=id,last_change_time,cf_crash_signature";
- for (v = version; v <= versionEnd; v++) {
- query += ",cf_status_firefox" + v;
- }
-
- return fetchWithRetry(query)
- .then((response) => response.json())
- .then((data) => data["bugs"])
- .then((bugs) =>
- Promise.all(
- bugs.map((bug) => {
- let signatures = bug["cf_crash_signature"]
- .split(/\s*]\s*/)
- .map((signature) => signature.substring(2).trim());
- signatures = signatures.filter((signature) => signature != "");
-
- let count = 0;
-
- return Promise.all(
- signatures.map((signature) =>
- fetchWithRetry(
- "https://crash-stats.mozilla.org/api/SuperSearch/?version=" +
- full_version +
- "&signature=%3D" +
- encodeURIComponent(signature) +
- "&product=Firefox&_results_number=0&_facets_size=0"
- )
- .then((response) => response.json())
- .then((result) => {
- count += result["total"];
- })
- )
- ).then(() => {
- bug["signatures"] = signatures;
- bug["crashes_count"] = count;
- return bug;
- });
- })
- )
- )
- .then((bugs) => bugs.filter((bug) => bug["crashes_count"] > 0))
- .then((bugs) =>
- bugs.sort((a, b) => b["crashes_count"] - a["crashes_count"])
- )
- .then((bugs) => bugs.forEach((bug) => addRow(bug, version)));
- });
-}
-
-function startSpinner() {
- document.getElementById("spin").style.display = "";
- document.getElementById("table").style.display = "none";
-}
-
-function stopSpinner() {
- document.getElementById("spin").style.display = "none";
- document.getElementById("table").style.display = "";
-}
-
-function reloadPage() {
- let url = new URL(location.href);
- url.search = "?channel=" + getOption("channel");
- window.location = url;
-}
-
-onLoad
- .then(() => startSpinner())
- .then(() => {
- let queryVars = new URL(location.href).search.substring(1).split("&");
-
- Object.keys(options).forEach(function (optionName) {
- let optionType = getOptionType(optionName);
- let elem = document.getElementById(optionName);
-
- for (let queryVar of queryVars) {
- if (queryVar.startsWith(optionName + "=")) {
- let option = queryVar.substring((optionName + "=").length).trim();
- setOption(optionName, option);
- }
- }
-
- if (optionType === "select") {
- if (getOption(optionName)) {
- elem.checked = getOption(optionName);
- }
-
- setOption(optionName, elem.checked);
-
- elem.onchange = function () {
- setOption(optionName, elem.checked);
- reloadPage();
- };
- } else if (optionType === "option") {
- if (getOption(optionName)) {
- for (let i = 0; i < elem.options.length; i++) {
- if (elem.options[i].value === getOption(optionName)) {
- elem.selectedIndex = i;
- break;
- }
- }
- }
-
- setOption(optionName, elem.options[elem.selectedIndex].value);
-
- elem.onchange = function () {
- setOption(optionName, elem.options[elem.selectedIndex].value);
- reloadPage();
- };
- } else if (optionType === "button") {
- if (getOption(optionName)) {
- elem.value = getOption(optionName);
- }
-
- setOption(optionName, elem.value);
-
- document.getElementById(optionName + "Button").onclick = function () {
- setOption(optionName, elem.value);
- reloadPage();
- };
- } else {
- throw new Error("Unexpected option type.");
- }
- });
- })
- .then(() => buildTable())
- .then(() => stopSpinner())
- .catch((err) => console.error(err));
diff --git a/beta-stability-pushlog.html b/beta-stability-pushlog.html
deleted file mode 100644
index c556c3fe..00000000
--- a/beta-stability-pushlog.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- Compare Betas
-
-
-
-
-
-
-
-
-
-
-
-
- Bug |
- Signatures |
- Evolution |
-
-
-
-
diff --git a/beta-stability-pushlog.js b/beta-stability-pushlog.js
deleted file mode 100644
index 8638e24b..00000000
--- a/beta-stability-pushlog.js
+++ /dev/null
@@ -1,382 +0,0 @@
-let options = {
- beta1: {
- value: null,
- type: "option",
- },
- beta2: {
- value: null,
- type: "option",
- },
- product: {
- value: null,
- type: "option",
- },
-};
-
-function getOption(name) {
- return options[name].value;
-}
-
-function getOptionType(name) {
- return options[name].type;
-}
-
-function setOption(name, value) {
- return (options[name].value = value);
-}
-
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function dateToStr(date) {
- let month = "" + (date.getMonth() + 1);
- let day = "" + date.getDate();
- let year = date.getFullYear();
-
- if (month.length < 2) {
- month = "0" + month;
- }
-
- if (day.length < 2) {
- day = "0" + day;
- }
-
- return year + "-" + month + "-" + day;
-}
-
-function addDays(date, days) {
- let result = new Date(date);
- result.setDate(result.getDate() + days);
- let today = new Date();
- if (result > today) {
- return today;
- } else {
- return result;
- }
-}
-
-function getBaseVersion(version) {
- return version.substring(0, version.indexOf(".0b"));
-}
-
-function getReleaseDate(version, release_history) {
- if (version.endsWith("b99") && !(version in release_history)) {
- // XXX: Assume release date is really close to latest beta build. Remove this
- // hack when https://bugzilla.mozilla.org/show_bug.cgi?id=1192197 is fixed.
- let maxDate = new Date(0);
- for (let release of Object.entries(release_history).filter((r) =>
- r[0].startsWith(getBaseVersion(version))
- )) {
- let date = new Date(release[1]);
- if (date > maxDate) {
- maxDate = date;
- }
- }
-
- return maxDate;
- }
-
- return new Date(release_history[version]);
-}
-
-function getTag(version) {
- if (version.endsWith("b99")) {
- return "FIREFOX_RELEASE_" + getBaseVersion(version) + "_BASE";
- }
-
- return "FIREFOX_" + version.replace(".", "_") + "_RELEASE";
-}
-
-function getComparison() {
- if (!getOption("beta1") || !getOption("beta2")) {
- return;
- }
-
- while (table.rows.length > 1) {
- table.deleteRow(table.rows.length - 1);
- }
-
- let url = new URL(location.href);
- url.search =
- "?product=" +
- getOption("product") +
- "&beta1=" +
- getOption("beta1") +
- "&beta2=" +
- getOption("beta2");
- history.replaceState({}, document.title, url.href);
-
- fetch(
- "https://product-details.mozilla.org/1.0/firefox_history_development_releases.json"
- )
- .then((response) => response.json())
- .then((release_history) => {
- let date1 = getReleaseDate(getOption("beta1"), release_history);
- let date2 = getReleaseDate(getOption("beta2"), release_history);
- let endDate1 = addDays(date1, 7);
- let endDate2 = addDays(date2, 7);
-
- document.getElementById("dates").innerHTML =
- getOption("beta1") +
- " released on " +
- dateToStr(date1) +
- " (crashes from " +
- dateToStr(date1) +
- " to " +
- dateToStr(endDate1) +
- ")
" +
- getOption("beta2") +
- " released on " +
- dateToStr(date2) +
- " (crashes from " +
- dateToStr(date2) +
- " to " +
- dateToStr(endDate2) +
- ")";
-
- let fromchange = getTag(getOption("beta1"));
- let tochange = getTag(getOption("beta2"));
-
- fetch(
- "https://hg.mozilla.org/releases/mozilla-beta/pushloghtml?fromchange=" +
- fromchange +
- "&tochange=" +
- tochange
- )
- .then((response) => response.text())
- .then((data) => {
- let bugs = new Set();
- let regex = /Bug ([0-9]+)/gi;
- let res;
- while ((res = regex.exec(data)) !== null) {
- bugs.add(res[1]);
- }
-
- let table = document.getElementById("table");
-
- bugs.forEach((bug) =>
- fetch(
- "https://bugzilla.mozilla.org/rest/bug/" +
- bug +
- "?include_fields=product,component,cf_crash_signature"
- )
- .then((response) => response.json())
- .then((data) => {
- // Skip bugs with no signatures.
- if (
- "bugs" in data &&
- data["bugs"][0]["cf_crash_signature"] == ""
- ) {
- return;
- }
-
- // Skip bugs that are not related to the current product.
- if (
- "bugs" in data &&
- getOption("product") === "Firefox" &&
- (data["bugs"][0]["product"] === "Firefox for Android" ||
- data["bugs"][0]["component"] === "WebExtensions: Android")
- ) {
- return;
- }
-
- // Skip bugs where the cf_crash_signature field is not defined.
- if (
- "bugs" in data &&
- !("cf_crash_signature" in data["bugs"][0])
- ) {
- return;
- }
-
- let row = table.insertRow(table.rows.length);
- let bugElem = row.insertCell(0);
- let aElem = document.createElement("a");
- aElem.href =
- "https://bugzilla.mozilla.org/show_bug.cgi?id=" + bug;
- aElem.textContent = bug;
- bugElem.appendChild(aElem);
-
- let signaturesCell = row.insertCell(1);
-
- let evolution = row.insertCell(2);
-
- let result = document.createElement("span");
-
- if (!("bugs" in data)) {
- result.style.color = "maroon";
- result.textContent = "Not accessible.";
- } else {
- let signatures = data["bugs"][0]["cf_crash_signature"];
- signatures = signatures.replace(/\[@ /g, "[@");
- signatures = signatures.replace(/\[@/g, "");
- signatures = signatures.replace(/ ]\r\n/g, "\\");
- signatures = signatures.replace(/]\r\n/g, "\\");
- signatures = signatures.replace("]", "");
-
- signatures = signatures.split("\\");
-
- for (let signature of signatures) {
- let signatureElem = document.createElement("a");
- signatureElem.href =
- "https://crash-stats.mozilla.org/signature/?signature=" +
- signature;
- signatureElem.textContent = signature;
- signaturesCell.appendChild(signatureElem);
- signaturesCell.appendChild(document.createElement("br"));
- }
-
- let query1 = fetch(
- "https://crash-stats.mozilla.org/api/SuperSearch/?product=" +
- getOption("product") +
- "&_results_number=0&_facets_size=0&version=" +
- getOption("beta1") +
- "&date=>%3D" +
- dateToStr(date1) +
- "&date=<%3D" +
- dateToStr(endDate1) +
- "&signature=%3D" +
- signatures.join("&signature=%3D")
- ).then((response) => response.json());
- let query2 = fetch(
- "https://crash-stats.mozilla.org/api/SuperSearch/?product=" +
- getOption("product") +
- "&_results_number=0&_facets_size=0&version=" +
- getOption("beta2") +
- "&date=>%3D" +
- dateToStr(date2) +
- "&date=<%3D" +
- dateToStr(endDate2) +
- "&signature=%3D" +
- signatures.join("&signature=%3D")
- ).then((response) => response.json());
-
- Promise.all([query1, query2]).then((data) => {
- result.textContent =
- data[0]["total"] +
- " before; " +
- data[1]["total"] +
- " after.";
- });
- }
-
- evolution.appendChild(result);
- })
- );
- });
- });
-}
-
-let curBeta;
-
-onLoad
- .then(() =>
- fetch("https://product-details.mozilla.org/1.0/firefox_versions.json")
- )
- .then((response) => response.json())
- .then((result) => {
- let betaVersion = result["LATEST_FIREFOX_DEVEL_VERSION"];
- curBeta = betaVersion.substring(0, betaVersion.indexOf("."));
- })
- .then(() =>
- fetch(
- "https://product-details.mozilla.org/1.0/firefox_history_development_releases.json"
- )
- )
- .then((response) => response.json())
- .then((data) => {
- let betas1 = document.getElementById("beta1");
- let betas2 = document.getElementById("beta2");
-
- let versions = Object.keys(data).filter((version) =>
- version.startsWith(curBeta)
- );
-
- console.log(versions);
-
- if (versions.length <= 1) {
- let warning = "Need at least two beta builds in order to compare.";
- if (versions.length == 1) {
- warning += " Currently only " + version + " is available.";
- }
- document.getElementById("dates").innerHTML =
- '' + warning + "
";
- throw new Error("Need at least two beta builds in order to compare.");
- }
-
- for (let i = 0; i < versions.length; i++) {
- let version = versions[i];
-
- var opt = document.createElement("option");
- opt.value = version;
- opt.textContent = version;
-
- if (i != versions.length - 1) {
- betas1.appendChild(opt);
- }
-
- if (i != 0) {
- betas2.appendChild(opt.cloneNode(true));
- }
- }
-
- betas1.selectedIndex = betas1.options.length - 1;
- betas2.selectedIndex = betas2.options.length - 1;
- })
- .then(function () {
- let queryVars = new URL(location.href).search.substring(1).split("&");
-
- Object.keys(options).forEach(function (optionName) {
- let optionType = getOptionType(optionName);
- let elem = document.getElementById(optionName);
-
- for (let queryVar of queryVars) {
- if (queryVar.startsWith(optionName + "=")) {
- let option = queryVar.substring((optionName + "=").length).trim();
- setOption(optionName, option);
- }
- }
-
- if (optionType === "select") {
- if (getOption(optionName)) {
- elem.checked = getOption(optionName);
- }
-
- setOption(optionName, elem.checked);
- } else if (optionType === "option") {
- if (getOption(optionName)) {
- for (let i = 0; i < elem.options.length; i++) {
- if (elem.options[i].value === getOption(optionName)) {
- elem.selectedIndex = i;
- break;
- }
- }
- }
-
- setOption(optionName, elem.options[elem.selectedIndex].value);
-
- elem.onchange = function () {
- setOption(optionName, elem.options[elem.selectedIndex].value);
- };
- } else if (optionType === "button") {
- if (getOption(optionName)) {
- elem.value = getOption(optionName);
- }
-
- setOption(optionName, elem.value.trim());
- } else {
- throw new Error("Unexpected option type.");
- }
-
- document.getElementById("compareButton").onclick = function () {
- getComparison();
- };
- });
-
- if (queryVars.length >= 2) {
- getComparison();
- }
- })
- .catch(function (err) {
- console.error(err);
- });
diff --git a/beta-startup.json b/beta-startup.json
deleted file mode 100644
index 6bfce201..00000000
--- a/beta-startup.json
+++ /dev/null
@@ -1 +0,0 @@
-{"start_date": "2024-09-17", "end_date": "2024-09-27", "versions": ["131.0b1", "131.0b2", "131.0b3", "131.0b4", "131.0b5", "131.0b6", "131.0b7", "131.0b8", "131.0b9"], "signatures": {"XREMain::XRE_main": {"tc_rank": 1, "crash_count": 40, "estimated_user_count": 13, "startup_percent": 1.0, "bugs": [{"component": "General", "product": "Core", "resolution": "MOVED", "cf_status_firefox132": "---", "last_change_time": "2024-08-16T12:31:28Z", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 981681}, {"component": "XPCOM", "resolution": "", "product": "Core", "last_change_time": "2024-08-19T13:00:10Z", "cf_status_firefox132": "---", "id": 1909700, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---"}]}, "shutdownhang | mozilla::BounceTrackingProtectionStorage::WaitForInitialization | mozilla::BounceTrackingProtectionStorage::BlockShutdown": {"tc_rank": 2, "crash_count": 21, "estimated_user_count": 21, "startup_percent": 1.0, "bugs": []}, "firefox_on_glean::metrics::__glean_metric_maps::COUNTER_MAP::closure$0": {"tc_rank": 3, "crash_count": 19, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::dom::ServiceWorkerRegistrar::GetShutdownPhase": {"tc_rank": 4, "crash_count": 19, "estimated_user_count": 4, "startup_percent": 1.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2024-08-30T12:33:57Z", "id": 1471720, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "component": "XPCOM", "resolution": "FIXED", "product": "Core"}]}, "EMPTY: no frame data available; EmptyMinidump": {"tc_rank": 5, "crash_count": 10, "estimated_user_count": 4, "startup_percent": 1.0, "bugs": [{"cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 1245570, "last_change_time": "2024-09-16T13:45:38Z", "cf_status_firefox132": "---", "product": "Fenix", "resolution": "", "component": "Crash Reporting"}, {"resolution": "", "product": "Toolkit", "component": "Crash Reporting", "id": 1360392, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-08-09T15:44:14Z", "cf_status_firefox132": "---"}, {"cf_status_firefox132": "---", "last_change_time": "2024-01-12T02:38:31Z", "id": 1644486, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "component": "Crash Reporting", "resolution": "", "product": "Fenix"}, {"component": "Graphics: CanvasWebGL", "resolution": "WONTFIX", "product": "Core", "last_change_time": "2024-08-22T13:02:19Z", "cf_status_firefox132": "---", "id": 1866123, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---"}]}, "libnvidia-eglcore.so.550.107.02": {"tc_rank": 6, "crash_count": 10, "estimated_user_count": 2, "startup_percent": 1.0, "bugs": []}, "RedBlackTreeNode::Left": {"tc_rank": 7, "crash_count": 9, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::dom::Document::SetLastFocusTime": {"tc_rank": 8, "crash_count": 8, "estimated_user_count": 3, "startup_percent": 1.0, "bugs": [{"id": 1711442, "cf_status_firefox131": "---", "component": "DOM: UI Events & Focus Handling", "resolution": "FIXED", "last_change_time": "2021-07-28T18:50:06Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}]}, "encoding_rs::mem::is_ascii_impl": {"tc_rank": 9, "crash_count": 7, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "JS::Rooted::~Rooted": {"tc_rank": 10, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"resolution": "", "last_change_time": "2023-11-20T12:20:19Z", "cf_status_firefox132": "---", "id": 1837205, "cf_status_firefox131": "---", "component": "Crash Reporting", "cf_tracking_firefox131": "---", "product": "Toolkit"}]}, "nsLocalFile::GetDateImpl": {"tc_rank": 11, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "nsWindow::GetDefaultScaleInternal": {"tc_rank": 12, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "OOM | small": {"tc_rank": 13, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 1.0, "bugs": [{"cf_status_firefox132": "---", "component": "DOM: Workers", "cf_status_firefox131": "---", "id": 683271, "resolution": "WORKSFORME", "last_change_time": "2020-07-08T19:57:17Z", "cf_tracking_firefox131": "---", "product": "Core"}, {"component": "General", "resolution": "WORKSFORME", "last_change_time": "2016-11-14T22:46:38Z", "id": 1028720, "product": "Thunderbird"}, {"cf_status_firefox131": "---", "id": 1034254, "cf_status_firefox132": "---", "component": "General", "last_change_time": "2016-08-24T19:54:55Z", "cf_tracking_firefox131": "---", "product": "Firefox", "resolution": "WONTFIX"}, {"cf_status_firefox132": "---", "component": "Graphics", "id": 1053934, "cf_status_firefox131": "---", "resolution": "FIXED", "last_change_time": "2015-05-27T03:59:01Z", "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_status_firefox132": "---", "component": "Untriaged", "cf_status_firefox131": "---", "id": 1057869, "resolution": "INCOMPLETE", "last_change_time": "2015-04-13T14:49:28Z", "cf_tracking_firefox131": "---", "product": "Firefox"}, {"id": 1059563, "cf_status_firefox131": "---", "component": "Graphics", "cf_status_firefox132": "---", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2018-01-16T21:31:43Z", "resolution": "WORKSFORME"}, {"cf_status_firefox131": "---", "id": 1060268, "cf_status_firefox132": "---", "component": "Graphics", "last_change_time": "2020-09-11T13:34:57Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "WORKSFORME"}, {"component": "Graphics", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1081790, "resolution": "FIXED", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2014-12-19T19:24:38Z"}, {"last_change_time": "2021-03-08T20:53:51Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "WORKSFORME", "id": 1089682, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "JavaScript: GC"}, {"cf_status_firefox132": "---", "component": "JavaScript: GC", "id": 1115929, "cf_status_firefox131": "---", "resolution": "WORKSFORME", "last_change_time": "2016-07-19T16:18:49Z", "product": "Core", "cf_tracking_firefox131": "---"}, {"resolution": "FIXED", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2015-02-22T01:02:16Z", "component": "Audio/Video", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1127554}, {"component": "Plug-ins", "resolution": "WORKSFORME", "last_change_time": "2022-05-16T19:51:10Z", "product": "Core Graveyard", "id": 1153515}, {"last_change_time": "2016-07-31T16:41:38Z", "id": 1174324, "product": "Thunderbird", "component": "General", "resolution": "WORKSFORME"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2022-03-02T15:48:14Z", "resolution": "WORKSFORME", "id": 1205110, "cf_status_firefox131": "---", "component": "General", "cf_status_firefox132": "---"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2015-12-31T15:22:18Z", "resolution": "WORKSFORME", "id": 1205771, "cf_status_firefox131": "---", "component": "Graphics", "cf_status_firefox132": "---"}, {"cf_status_firefox131": "---", "id": 1209673, "component": "Graphics", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2016-05-27T22:45:49Z", "resolution": "WORKSFORME"}, {"cf_status_firefox132": "---", "component": "General", "cf_status_firefox131": "---", "id": 1215181, "resolution": "WORKSFORME", "last_change_time": "2016-02-13T20:28:02Z", "cf_tracking_firefox131": "---", "product": "Firefox"}, {"id": 1234842, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Audio/Video: Playback", "last_change_time": "2021-10-12T11:13:25Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "INACTIVE"}, {"component": "Graphics: Layers", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1310134, "resolution": "WORKSFORME", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2021-02-02T20:43:52Z"}, {"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-02-21T21:36:16Z", "resolution": "", "cf_status_firefox131": "---", "id": 1318272, "component": "XML", "cf_status_firefox132": "---"}, {"cf_status_firefox132": "---", "component": "DOM: Service Workers", "cf_status_firefox131": "---", "id": 1333070, "resolution": "FIXED", "last_change_time": "2017-09-20T08:40:37Z", "cf_tracking_firefox131": "---", "product": "Core"}, {"last_change_time": "2017-02-23T11:25:59Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "WORKSFORME", "cf_status_firefox131": "---", "id": 1341573, "cf_status_firefox132": "---", "component": "General"}, {"cf_status_firefox132": "---", "component": "General", "id": 1341744, "cf_status_firefox131": "---", "resolution": "INCOMPLETE", "last_change_time": "2017-10-11T19:59:55Z", "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_status_firefox131": "---", "id": 1342017, "cf_status_firefox132": "---", "component": "Graphics: Layers", "last_change_time": "2021-09-02T08:13:55Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "WORKSFORME"}, {"cf_status_firefox132": "---", "component": "DOM: Security", "cf_status_firefox131": "---", "id": 1353762, "resolution": "FIXED", "last_change_time": "2017-09-01T08:55:36Z", "cf_tracking_firefox131": "---", "product": "Core"}, {"resolution": "FIXED", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2021-08-13T16:05:22Z", "component": "Graphics: Layers", "cf_status_firefox132": "---", "id": 1357359, "cf_status_firefox131": "---"}, {"resolution": "INVALID", "component": "General", "product": "Firefox for Android Graveyard", "id": 1361354, "last_change_time": "2020-12-21T18:38:46Z"}, {"component": "Audio/Video: Playback", "cf_status_firefox132": "---", "id": 1384026, "cf_status_firefox131": "---", "resolution": "FIXED", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2017-07-27T01:06:00Z"}, {"last_change_time": "2024-09-21T09:43:36Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "", "id": 1421345, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Web Painting"}, {"cf_status_firefox131": "---", "id": 1428612, "cf_status_firefox132": "---", "component": "Telemetry", "last_change_time": "2018-01-31T23:26:11Z", "cf_tracking_firefox131": "---", "product": "Toolkit", "resolution": "FIXED"}, {"last_change_time": "2019-06-07T15:29:16Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "FIXED", "id": 1433816, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "General"}, {"cf_status_firefox132": "---", "component": "CSS Parsing and Computation", "id": 1442965, "cf_status_firefox131": "---", "resolution": "WORKSFORME", "last_change_time": "2018-05-07T19:35:40Z", "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-02-13T14:30:27Z", "resolution": "INCOMPLETE", "cf_status_firefox131": "---", "id": 1458221, "component": "General", "cf_status_firefox132": "---"}, {"resolution": "WORKSFORME", "component": "Message Compose Window", "last_change_time": "2019-09-29T00:12:42Z", "id": 1477582, "product": "Thunderbird"}, {"last_change_time": "2018-12-27T00:56:14Z", "product": "External Software Affecting Firefox", "cf_tracking_firefox131": "---", "resolution": "FIXED", "id": 1505094, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Other"}, {"cf_status_firefox132": "---", "component": "Other", "cf_status_firefox131": "---", "id": 1519123, "resolution": "INVALID", "last_change_time": "2022-06-07T15:46:47Z", "cf_tracking_firefox131": "---", "product": "External Software Affecting Firefox"}, {"component": "General", "cf_status_firefox132": "---", "id": 1519129, "cf_status_firefox131": "---", "resolution": "INCOMPLETE", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2019-07-03T13:53:47Z"}, {"last_change_time": "2024-09-21T09:43:13Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "", "id": 1541092, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Web Painting"}, {"resolution": "FIXED", "last_change_time": "2019-04-30T21:53:32Z", "cf_tracking_firefox131": "---", "product": "Web Compatibility", "cf_status_firefox132": "---", "component": "Site Reports", "cf_status_firefox131": "---", "id": 1547102}, {"cf_status_firefox131": "---", "id": 1549181, "component": "Graphics", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2022-08-07T22:04:06Z", "resolution": "WORKSFORME"}, {"component": "General", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1565970, "resolution": "WORKSFORME", "cf_tracking_firefox131": "---", "product": "Firefox", "last_change_time": "2019-09-11T20:05:49Z"}, {"resolution": "WONTFIX", "product": "Firefox", "cf_tracking_firefox131": "---", "last_change_time": "2022-07-17T12:59:47Z", "component": "General", "cf_status_firefox132": "---", "id": 1575950, "cf_status_firefox131": "---"}, {"resolution": "WONTFIX", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2020-10-13T14:07:25Z", "component": "Storage: localStorage & sessionStorage", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1578224}, {"cf_status_firefox132": "---", "component": "Networking", "cf_status_firefox131": "---", "id": 1595460, "resolution": "WORKSFORME", "last_change_time": "2020-09-15T12:32:54Z", "cf_tracking_firefox131": "---", "product": "Core"}, {"id": 1616720, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "General", "last_change_time": "2021-07-20T12:16:19Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "INCOMPLETE"}, {"last_change_time": "2024-09-21T09:42:52Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "", "cf_status_firefox131": "---", "id": 1647269, "cf_status_firefox132": "---", "component": "Graphics: ImageLib"}, {"resolution": "", "component": "General", "id": 1660696, "product": "Thunderbird", "last_change_time": "2024-01-16T04:06:03Z"}, {"component": "General", "resolution": "", "last_change_time": "2023-03-28T01:38:32Z", "id": 1660710, "product": "Thunderbird"}, {"resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-09-21T09:42:14Z", "component": "XPCOM", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1673778}, {"resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-09-21T09:42:01Z", "component": "IPC", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1699340}, {"id": 1721164, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics: CanvasWebGL", "last_change_time": "2021-12-13T20:25:18Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "WORKSFORME"}, {"resolution": "", "last_change_time": "2024-09-21T09:41:47Z", "product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics: WebRender", "id": 1749192, "cf_status_firefox131": "---"}, {"last_change_time": "2024-03-25T10:08:26Z", "product": "Thunderbird", "id": 1779669, "resolution": "WORKSFORME", "component": "General"}, {"resolution": "INCOMPLETE", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-03-02T14:51:10Z", "component": "General", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1784233}, {"cf_status_firefox132": "---", "component": "Memory Allocator", "cf_status_firefox131": "---", "id": 1806202, "resolution": "", "last_change_time": "2024-09-21T09:41:32Z", "cf_tracking_firefox131": "---", "product": "Core"}, {"component": "Message Compose Window", "resolution": "", "product": "Thunderbird", "id": 1851428, "last_change_time": "2024-09-21T09:41:17Z"}, {"resolution": "", "component": "Address Book", "product": "Thunderbird", "id": 1896086, "last_change_time": "2024-09-06T15:45:32Z"}, {"component": "General", "resolution": "FIXED", "id": 1728744, "product": "Thunderbird", "last_change_time": "2021-12-12T04:02:12Z"}]}, "bad hardware | AudioDeviceInfo::GetMinLatency": {"tc_rank": 14, "crash_count": 4, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "JSContext::realm": {"tc_rank": 15, "crash_count": 3, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "JSJitInfo::type": {"tc_rank": 16, "crash_count": 3, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "js::irregexp::RegExpDepthCheck::VisitAssertion": {"tc_rank": 17, "crash_count": 3, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::URLPreloader::BackgroundReadFiles": {"tc_rank": 18, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 1.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2023-02-21T21:37:17Z", "id": 1404743, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "component": "XPConnect", "resolution": "", "product": "Core"}, {"component": "XPConnect", "resolution": "INCOMPLETE", "product": "Core", "cf_status_firefox132": "---", "last_change_time": "2018-05-07T20:42:52Z", "id": 1458782, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---"}]}, "nsUserIdleService::nsUserIdleService": {"tc_rank": 19, "crash_count": 3, "estimated_user_count": 2, "startup_percent": 1.0, "bugs": []}, "__delayLoadHelper2 | _tailMerge_imm32.dll | nsWindow::Create": {"tc_rank": 20, "crash_count": 2, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "bad hardware | PR_IntervalToSeconds | socket_io_wait": {"tc_rank": 21, "crash_count": 2, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mojo::core::ports::Node::OnObserveProxyAck": {"tc_rank": 22, "crash_count": 2, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::DataMutexBase::AutoLockBase::AutoLockBase": {"tc_rank": 23, "crash_count": 2, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::MozPromise::ThenValueBase::Dispatch": {"tc_rank": 24, "crash_count": 2, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"last_change_time": "2022-04-24T13:58:20Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "FIXED", "component": "IPC", "id": 1637890, "cf_status_firefox131": "---", "product": "Core"}, {"component": "Gecko Profiler", "id": 1643020, "cf_status_firefox131": "---", "last_change_time": "2020-06-04T09:38:36Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "", "product": "Core"}]}, "mozilla::PointerEventHandler::InitializeStatics": {"tc_rank": 25, "crash_count": 2, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "strncmp | nsPrefBranch::GetChildList": {"tc_rank": 26, "crash_count": 2, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "@0x0 | Windows::UI::ViewManagement::AccessibilitySettings::get_HighContrastScheme": {"tc_rank": 27, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "@0x0 | mozilla::gl::GLLibraryEGL::fQueryString": {"tc_rank": 28, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"product": "Core", "resolution": "", "last_change_time": "2024-07-11T01:12:09Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "id": 1897747, "cf_status_firefox131": "---", "component": "Graphics"}]}, "EMPTY: no frame data available; MissingThreadList": {"tc_rank": 29, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"id": 1245570, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2024-09-16T13:45:38Z", "resolution": "", "product": "Fenix", "component": "Crash Reporting"}, {"product": "Toolkit", "resolution": "", "component": "Crash Reporting", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 1360392, "last_change_time": "2024-08-09T15:44:14Z", "cf_status_firefox132": "---"}, {"last_change_time": "2023-12-20T12:08:13Z", "component": "General", "resolution": "WORKSFORME", "id": 1853506, "product": "Thunderbird"}]}, "InitializeNSSWithFallbacks": {"tc_rank": 30, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"product": "Core", "cf_status_firefox131": "---", "resolution": "", "last_change_time": "2024-01-28T17:29:46Z", "id": 1834770, "component": "Security: PSM", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---"}]}, "Microsoft::WRL::SimpleActivationFactory::ActivateInstance": {"tc_rank": 31, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "NdrCreateServerInterfaceFromStub": {"tc_rank": 32, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "OOM | unknown | NS_ABORT_OOM | XPCJSContext::Initialize": {"tc_rank": 33, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"product": "Core", "resolution": "WONTFIX", "cf_status_firefox132": "---", "last_change_time": "2020-02-28T19:00:14Z", "cf_tracking_firefox131": "---", "id": 1615310, "cf_status_firefox131": "---", "component": "JavaScript Engine"}]}, "RtlpFreeHeapInternal | RtlFreeHeap | CoTaskMemFreeDeleter::operator()": {"tc_rank": 34, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "SECMOD_LoadModule": {"tc_rank": 35, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "Windows::UI::ViewManagement::UISettings::SaveUISettingsToCache": {"tc_rank": 36, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "__delayLoadHelper2 | _tailMerge_setupapi.dll | HasBattery": {"tc_rank": 37, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "__pthread_mutex_lock_full": {"tc_rank": 38, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"cf_status_firefox132": "---", "component": "Crash Reporting", "cf_tracking_firefox131": "---", "id": 1912696, "last_change_time": "2024-09-23T13:18:48Z", "product": "Toolkit", "resolution": "", "cf_status_firefox131": "---"}]}, "_tailMerge_d3dcompiler_47.dll | Windows::UI::ViewManagement::UISettings::SaveUISettingsToCache": {"tc_rank": 39, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "_tailMerge_d3dcompiler_47.dll | mozglue_static::impl$2::dealloc": {"tc_rank": 40, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "bad hardware | FileSeek64": {"tc_rank": 41, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "bad hardware | btreeLockCarefully": {"tc_rank": 42, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "bad hardware | hb_language_item_t::operator=": {"tc_rank": 43, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "bad hardware | nsZipHandle::findDataStart": {"tc_rank": 44, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "core::result::unwrap_failed | rayon_core::latch::impl$6::set": {"tc_rank": 45, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "js::gcstats::Statistics::recordPhaseBegin": {"tc_rank": 46, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "component": "JavaScript: GC", "id": 1366217, "cf_status_firefox132": "---", "last_change_time": "2017-09-15T19:50:43Z", "resolution": "FIXED"}]}, "mozilla::AppWindow::CreateNewWindow": {"tc_rank": 47, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::AppWindow::IntrinsicallySizeShell": {"tc_rank": 48, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::TaskController::InitializeThreadPool": {"tc_rank": 49, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"product": "Core", "id": 1910208, "cf_status_firefox131": "wontfix", "component": "XPCOM", "resolution": "", "cf_status_firefox132": "affected", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-10T15:50:25Z"}]}, "mozilla::net::CacheFileIOManager::GetDoomedFile": {"tc_rank": 50, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "nsGlobalWindowInner::FreeInnerObjects": {"tc_rank": 51, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "nsINIParser_internal::SetString": {"tc_rank": 52, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "nsScriptSecurityManager::CheckLoadURIWithPrincipalFromJS": {"tc_rank": 53, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": [{"cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2021-02-12T22:21:42Z", "component": "Security", "cf_status_firefox131": "---", "id": 1690942, "product": "Core", "cf_tracking_firefox131": "---"}]}, "stackoverflow | CComCatalog::GetClassInfoInternal": {"tc_rank": 54, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "stackoverflow | webrender::frame_builder::FrameBuilder::build_layer_screen_rects_and_cull_layers": {"tc_rank": 55, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "xul.dll | nsQueryInterfaceISupportsWithError::operator()": {"tc_rank": 56, "crash_count": 1, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}}}
\ No newline at end of file
diff --git a/beta.json b/beta.json
deleted file mode 100644
index c522e639..00000000
--- a/beta.json
+++ /dev/null
@@ -1 +0,0 @@
-{"start_date": "2024-09-17", "end_date": "2024-09-27", "versions": ["131.0b1", "131.0b2", "131.0b3", "131.0b4", "131.0b5", "131.0b6", "131.0b7", "131.0b8", "131.0b9"], "signatures": {"OOM | small": {"tc_rank": 1, "crash_count": 1059, "estimated_user_count": 701, "startup_percent": 0.003777148253068933, "bugs": [{"last_change_time": "2020-07-08T19:57:17Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "WORKSFORME", "id": 683271, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "DOM: Workers"}, {"last_change_time": "2016-11-14T22:46:38Z", "product": "Thunderbird", "id": 1028720, "component": "General", "resolution": "WORKSFORME"}, {"cf_status_firefox131": "---", "id": 1034254, "component": "General", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Firefox", "last_change_time": "2016-08-24T19:54:55Z", "resolution": "WONTFIX"}, {"last_change_time": "2015-05-27T03:59:01Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "FIXED", "id": 1053934, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics"}, {"product": "Firefox", "cf_tracking_firefox131": "---", "last_change_time": "2015-04-13T14:49:28Z", "resolution": "INCOMPLETE", "id": 1057869, "cf_status_firefox131": "---", "component": "Untriaged", "cf_status_firefox132": "---"}, {"cf_status_firefox131": "---", "id": 1059563, "cf_status_firefox132": "---", "component": "Graphics", "last_change_time": "2018-01-16T21:31:43Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "WORKSFORME"}, {"resolution": "WORKSFORME", "last_change_time": "2020-09-11T13:34:57Z", "product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics", "id": 1060268, "cf_status_firefox131": "---"}, {"resolution": "FIXED", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2014-12-19T19:24:38Z", "component": "Graphics", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1081790}, {"cf_status_firefox131": "---", "id": 1089682, "cf_status_firefox132": "---", "component": "JavaScript: GC", "last_change_time": "2021-03-08T20:53:51Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "WORKSFORME"}, {"id": 1115929, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "JavaScript: GC", "last_change_time": "2016-07-19T16:18:49Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "WORKSFORME"}, {"last_change_time": "2015-02-22T01:02:16Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "FIXED", "id": 1127554, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Audio/Video"}, {"product": "Core Graveyard", "id": 1153515, "last_change_time": "2022-05-16T19:51:10Z", "resolution": "WORKSFORME", "component": "Plug-ins"}, {"id": 1174324, "product": "Thunderbird", "last_change_time": "2016-07-31T16:41:38Z", "component": "General", "resolution": "WORKSFORME"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2022-03-02T15:48:14Z", "resolution": "WORKSFORME", "id": 1205110, "cf_status_firefox131": "---", "component": "General", "cf_status_firefox132": "---"}, {"last_change_time": "2015-12-31T15:22:18Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "WORKSFORME", "cf_status_firefox131": "---", "id": 1205771, "cf_status_firefox132": "---", "component": "Graphics"}, {"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2016-05-27T22:45:49Z", "resolution": "WORKSFORME", "cf_status_firefox131": "---", "id": 1209673, "component": "Graphics", "cf_status_firefox132": "---"}, {"resolution": "WORKSFORME", "last_change_time": "2016-02-13T20:28:02Z", "product": "Firefox", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "General", "id": 1215181, "cf_status_firefox131": "---"}, {"last_change_time": "2021-10-12T11:13:25Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "INACTIVE", "id": 1234842, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Audio/Video: Playback"}, {"resolution": "WORKSFORME", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2021-02-02T20:43:52Z", "component": "Graphics: Layers", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1310134}, {"component": "XML", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1318272, "resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-02-21T21:36:16Z"}, {"last_change_time": "2017-09-20T08:40:37Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "FIXED", "cf_status_firefox131": "---", "id": 1333070, "cf_status_firefox132": "---", "component": "DOM: Service Workers"}, {"resolution": "WORKSFORME", "last_change_time": "2017-02-23T11:25:59Z", "product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "General", "id": 1341573, "cf_status_firefox131": "---"}, {"cf_status_firefox131": "---", "id": 1341744, "cf_status_firefox132": "---", "component": "General", "last_change_time": "2017-10-11T19:59:55Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "INCOMPLETE"}, {"cf_status_firefox131": "---", "id": 1342017, "cf_status_firefox132": "---", "component": "Graphics: Layers", "last_change_time": "2021-09-02T08:13:55Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "WORKSFORME"}, {"resolution": "FIXED", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2017-09-01T08:55:36Z", "component": "DOM: Security", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1353762}, {"last_change_time": "2021-08-13T16:05:22Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "FIXED", "id": 1357359, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics: Layers"}, {"component": "General", "resolution": "INVALID", "product": "Firefox for Android Graveyard", "id": 1361354, "last_change_time": "2020-12-21T18:38:46Z"}, {"component": "Audio/Video: Playback", "cf_status_firefox132": "---", "id": 1384026, "cf_status_firefox131": "---", "resolution": "FIXED", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2017-07-27T01:06:00Z"}, {"cf_status_firefox132": "---", "component": "Web Painting", "cf_status_firefox131": "---", "id": 1421345, "resolution": "", "last_change_time": "2024-09-21T09:43:36Z", "cf_tracking_firefox131": "---", "product": "Core"}, {"cf_status_firefox132": "---", "component": "Telemetry", "id": 1428612, "cf_status_firefox131": "---", "resolution": "FIXED", "last_change_time": "2018-01-31T23:26:11Z", "product": "Toolkit", "cf_tracking_firefox131": "---"}, {"id": 1433816, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "General", "last_change_time": "2019-06-07T15:29:16Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "FIXED"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2018-05-07T19:35:40Z", "resolution": "WORKSFORME", "id": 1442965, "cf_status_firefox131": "---", "component": "CSS Parsing and Computation", "cf_status_firefox132": "---"}, {"cf_status_firefox131": "---", "id": 1458221, "component": "General", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-02-13T14:30:27Z", "resolution": "INCOMPLETE"}, {"product": "Thunderbird", "id": 1477582, "last_change_time": "2019-09-29T00:12:42Z", "component": "Message Compose Window", "resolution": "WORKSFORME"}, {"cf_status_firefox132": "---", "component": "Other", "id": 1505094, "cf_status_firefox131": "---", "resolution": "FIXED", "last_change_time": "2018-12-27T00:56:14Z", "product": "External Software Affecting Firefox", "cf_tracking_firefox131": "---"}, {"resolution": "INVALID", "product": "External Software Affecting Firefox", "cf_tracking_firefox131": "---", "last_change_time": "2022-06-07T15:46:47Z", "component": "Other", "cf_status_firefox132": "---", "id": 1519123, "cf_status_firefox131": "---"}, {"cf_status_firefox131": "---", "id": 1519129, "component": "General", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2019-07-03T13:53:47Z", "resolution": "INCOMPLETE"}, {"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-09-21T09:43:13Z", "resolution": "", "cf_status_firefox131": "---", "id": 1541092, "component": "Web Painting", "cf_status_firefox132": "---"}, {"id": 1547102, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Site Reports", "last_change_time": "2019-04-30T21:53:32Z", "product": "Web Compatibility", "cf_tracking_firefox131": "---", "resolution": "FIXED"}, {"resolution": "WORKSFORME", "last_change_time": "2022-08-07T22:04:06Z", "cf_tracking_firefox131": "---", "product": "Core", "cf_status_firefox132": "---", "component": "Graphics", "cf_status_firefox131": "---", "id": 1549181}, {"resolution": "WORKSFORME", "last_change_time": "2019-09-11T20:05:49Z", "product": "Firefox", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "General", "id": 1565970, "cf_status_firefox131": "---"}, {"component": "General", "cf_status_firefox132": "---", "id": 1575950, "cf_status_firefox131": "---", "resolution": "WONTFIX", "product": "Firefox", "cf_tracking_firefox131": "---", "last_change_time": "2022-07-17T12:59:47Z"}, {"component": "Storage: localStorage & sessionStorage", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1578224, "resolution": "WONTFIX", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2020-10-13T14:07:25Z"}, {"id": 1595460, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Networking", "last_change_time": "2020-09-15T12:32:54Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "WORKSFORME"}, {"cf_status_firefox131": "---", "id": 1616720, "component": "General", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2021-07-20T12:16:19Z", "resolution": "INCOMPLETE"}, {"id": 1647269, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics: ImageLib", "last_change_time": "2024-09-21T09:42:52Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": ""}, {"component": "General", "resolution": "", "last_change_time": "2024-01-16T04:06:03Z", "id": 1660696, "product": "Thunderbird"}, {"component": "General", "resolution": "", "last_change_time": "2023-03-28T01:38:32Z", "id": 1660710, "product": "Thunderbird"}, {"resolution": "", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-21T09:42:14Z", "component": "XPCOM", "cf_status_firefox132": "---", "id": 1673778, "cf_status_firefox131": "---"}, {"resolution": "", "last_change_time": "2024-09-21T09:42:01Z", "product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "IPC", "id": 1699340, "cf_status_firefox131": "---"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2021-12-13T20:25:18Z", "resolution": "WORKSFORME", "id": 1721164, "cf_status_firefox131": "---", "component": "Graphics: CanvasWebGL", "cf_status_firefox132": "---"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-21T09:41:47Z", "resolution": "", "id": 1749192, "cf_status_firefox131": "---", "component": "Graphics: WebRender", "cf_status_firefox132": "---"}, {"resolution": "WORKSFORME", "component": "General", "last_change_time": "2024-03-25T10:08:26Z", "product": "Thunderbird", "id": 1779669}, {"resolution": "INCOMPLETE", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-03-02T14:51:10Z", "component": "General", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1784233}, {"component": "Memory Allocator", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1806202, "resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-09-21T09:41:32Z"}, {"product": "Thunderbird", "id": 1851428, "last_change_time": "2024-09-21T09:41:17Z", "component": "Message Compose Window", "resolution": ""}, {"resolution": "", "component": "Address Book", "id": 1896086, "product": "Thunderbird", "last_change_time": "2024-09-06T15:45:32Z"}, {"resolution": "FIXED", "component": "General", "id": 1728744, "product": "Thunderbird", "last_change_time": "2021-12-12T04:02:12Z"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::gc::AllocateTenuredCellInGC": {"tc_rank": 2, "crash_count": 256, "estimated_user_count": 176, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-08-16T16:17:43Z", "cf_status_firefox132": "---", "id": 1472062, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "component": "JavaScript: GC", "resolution": "", "product": "Core"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::gc::TraceEdgeInternal": {"tc_rank": 3, "crash_count": 185, "estimated_user_count": 114, "startup_percent": 0.0, "bugs": [{"resolution": "", "product": "Core", "component": "JavaScript: GC", "id": 1472062, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "last_change_time": "2024-08-16T16:17:43Z", "cf_status_firefox132": "---"}]}, "mozilla::dom::quota::QuotaManager::Shutdown::::operator()": {"tc_rank": 4, "crash_count": 118, "estimated_user_count": 106, "startup_percent": 0.0, "bugs": [{"component": "Storage: Quota Manager", "id": 1588498, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-06-27T12:54:02Z", "resolution": "", "product": "Core"}, {"cf_status_firefox132": "---", "last_change_time": "2024-05-07T13:35:55Z", "cf_tracking_firefox131": "---", "resolution": "WONTFIX", "component": "Storage: Quota Manager", "id": 1872960, "cf_status_firefox131": "---", "product": "Core"}]}, "js::gc::detail::CellHasStoreBuffer": {"tc_rank": 5, "crash_count": 101, "estimated_user_count": 77, "startup_percent": 0.0, "bugs": [{"cf_status_firefox131": "---", "id": 719114, "component": "JavaScript: GC", "resolution": "", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-24T16:22:48Z", "product": "Core"}, {"resolution": "", "cf_tracking_firefox131": "---", "last_change_time": "2024-07-16T04:03:19Z", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1541905, "component": "JavaScript: GC", "product": "Core"}]}, "OOM | large | mozilla::JSHolderMap::Put": {"tc_rank": 6, "crash_count": 96, "estimated_user_count": 73, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-03-02T00:07:19Z", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 1333035, "component": "Cycle Collector", "product": "Core", "resolution": ""}, {"last_change_time": "2024-05-17T09:59:40Z", "component": "General", "resolution": "", "id": 1882757, "product": "Thunderbird"}, {"resolution": "", "product": "Core", "component": "DOM: Core & HTML", "id": 1892171, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-05-30T18:26:48Z", "cf_status_firefox132": "---"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | CCGraphBuilder::AddNode": {"tc_rank": 7, "crash_count": 91, "estimated_user_count": 61, "startup_percent": 0.0, "bugs": [{"resolution": "", "product": "Core", "component": "JavaScript: GC", "id": 1472062, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2024-08-16T16:17:43Z"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::gc::GetGCKindSlots": {"tc_rank": 8, "crash_count": 83, "estimated_user_count": 58, "startup_percent": 0.0, "bugs": [{"component": "JavaScript: GC", "cf_status_firefox131": "---", "id": 1472062, "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-08-16T16:17:43Z", "resolution": "", "product": "Core"}]}, "AsyncShutdownTimeout | IOUtils: waiting for sendTelemetry IO to complete | TelemetryController: shutting down": {"tc_rank": 9, "crash_count": 72, "estimated_user_count": 68, "startup_percent": 0.0, "bugs": [{"cf_status_firefox131": "---", "component": "Telemetry", "id": 1315306, "cf_status_firefox132": "---", "last_change_time": "2023-09-19T15:13:19Z", "resolution": "", "product": "Toolkit", "cf_tracking_firefox131": "---"}, {"resolution": "", "last_change_time": "2023-12-17T13:14:45Z", "component": "General", "product": "Thunderbird", "id": 1813973}]}, "AsyncShutdownTimeout | IOUtils: waiting for profileBeforeChange IO to complete | JSON store: writing data for 'targeting.snapshot'": {"tc_rank": 10, "crash_count": 70, "estimated_user_count": 67, "startup_percent": 0.0, "bugs": [{"id": 1799823, "resolution": "FIXED", "product": "Toolkit Graveyard", "component": "OS.File", "last_change_time": "2023-05-17T14:14:46Z"}, {"product": "Toolkit", "resolution": "FIXED", "component": "Background Tasks", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1804757, "last_change_time": "2024-01-29T09:01:54Z", "cf_status_firefox132": "---"}, {"last_change_time": "2024-02-29T18:59:37Z", "cf_status_firefox132": "---", "id": 1830551, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "component": "Background Tasks", "resolution": "", "product": "Toolkit"}, {"product": "Toolkit", "resolution": "", "component": "Background Tasks", "cf_status_firefox131": "affected", "cf_tracking_firefox131": "---", "id": 1877111, "last_change_time": "2024-08-21T14:24:34Z", "cf_status_firefox132": "---"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | js::Nursery::maybeMoveRawBufferOnPromotion": {"tc_rank": 11, "crash_count": 68, "estimated_user_count": 52, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2024-08-16T16:17:43Z", "resolution": "", "cf_status_firefox131": "---", "component": "JavaScript: GC", "id": 1472062, "product": "Core", "cf_tracking_firefox131": "---"}]}, "js::gc::HeaderWord::get": {"tc_rank": 12, "crash_count": 62, "estimated_user_count": 52, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-09-23T11:44:56Z", "component": "JavaScript: GC", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "id": 1799300, "product": "Core", "cf_status_firefox131": "---", "resolution": ""}, {"product": "Core", "cf_status_firefox131": "---", "resolution": "FIXED", "last_change_time": "2024-09-19T02:36:31Z", "component": "JavaScript Engine", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "id": 1889049}, {"product": "Thunderbird", "last_change_time": "2024-06-04T03:35:38Z", "id": 1895101, "resolution": "", "component": "General"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | js::gc::AllocateTenuredCellInGC": {"tc_rank": 13, "crash_count": 61, "estimated_user_count": 57, "startup_percent": 0.0, "bugs": [{"id": 1472062, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2024-08-16T16:17:43Z", "resolution": "", "product": "Core", "component": "JavaScript: GC"}]}, "OOM | large | alloc::raw_vec::handle_error": {"tc_rank": 14, "crash_count": 55, "estimated_user_count": 50, "startup_percent": 0.0, "bugs": [{"product": "Core", "id": 1906769, "cf_status_firefox131": "---", "component": "Graphics: WebRender", "resolution": "", "last_change_time": "2024-07-16T11:44:43Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---"}]}, "IPC::MessageReader::FatalError | IPC::MessageBufferReader::MessageBufferReader | IPC::ParamTraits::Read | IPC::ParamTraits::Read | IPC::ParamTraits::Read | IPC::ParamTraits::Read | IPC::ParamTraits::Read ...": {"tc_rank": 18, "crash_count": 50, "estimated_user_count": 40, "startup_percent": 0.0, "bugs": []}, "AsyncShutdownTimeout | AddonManager: Waiting to start provider shutdown. | AddonRepository Background Updater": {"tc_rank": 19, "crash_count": 47, "estimated_user_count": 47, "startup_percent": 0.0, "bugs": [{"product": "Toolkit", "cf_status_firefox131": "---", "resolution": "", "last_change_time": "2024-09-09T12:20:34Z", "cf_status_firefox132": "---", "component": "Add-ons Manager", "cf_tracking_firefox131": "---", "id": 1841444}]}, "EnterJit": {"tc_rank": 20, "crash_count": 43, "estimated_user_count": 32, "startup_percent": 0.0, "bugs": [{"product": "Core", "component": "JavaScript Engine", "cf_status_firefox131": "---", "id": 858032, "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-22T12:18:48Z", "resolution": ""}, {"cf_status_firefox131": "---", "id": 1034706, "component": "JavaScript Engine: JIT", "resolution": "INCOMPLETE", "last_change_time": "2022-02-24T19:55:36Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "product": "Core"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2020-01-09T22:52:38Z", "cf_status_firefox132": "---", "resolution": "INCOMPLETE", "component": "JavaScript Engine: JIT", "cf_status_firefox131": "---", "id": 1453671}, {"product": "Core", "component": "JavaScript Engine: JIT", "id": 1848391, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2023-09-04T12:52:29Z", "cf_tracking_firefox131": "---", "resolution": "FIXED"}]}, "js::gc::MarkBitmap::markIfUnmarkedAtomic": {"tc_rank": 21, "crash_count": 43, "estimated_user_count": 37, "startup_percent": 0.0, "bugs": [{"component": "JavaScript: GC", "cf_status_firefox131": "---", "id": 719114, "cf_status_firefox132": "---", "last_change_time": "2024-09-24T16:22:48Z", "resolution": "", "product": "Core", "cf_tracking_firefox131": "---"}]}, "XREMain::XRE_main": {"tc_rank": 22, "crash_count": 41, "estimated_user_count": 14, "startup_percent": 0.975609756097561, "bugs": [{"id": 981681, "cf_tracking_firefox131": "---", "component": "General", "cf_status_firefox132": "---", "last_change_time": "2024-08-16T12:31:28Z", "product": "Core", "resolution": "MOVED", "cf_status_firefox131": "---"}, {"product": "Core", "resolution": "", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "component": "XPCOM", "cf_status_firefox132": "---", "id": 1909700, "last_change_time": "2024-08-19T13:00:10Z"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | js::gc::StoreBuffer::MonoTypeBuffer::sinkStore": {"tc_rank": 23, "crash_count": 39, "estimated_user_count": 34, "startup_percent": 0.0, "bugs": []}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::Nursery::maybeMoveRawBufferOnPromotion": {"tc_rank": 24, "crash_count": 39, "estimated_user_count": 30, "startup_percent": 0.0, "bugs": [{"product": "Core", "last_change_time": "2024-08-16T16:17:43Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "", "component": "JavaScript: GC", "id": 1472062, "cf_status_firefox131": "---"}]}, "mozilla::LinkedListElement::setPreviousUnsafe": {"tc_rank": 25, "crash_count": 29, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"id": 1816848, "cf_status_firefox131": "---", "component": "Application Update", "resolution": "", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-13T16:27:30Z", "cf_status_firefox132": "---", "product": "Toolkit"}, {"cf_status_firefox131": "---", "id": 1822907, "component": "DOM: Animation", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2023-03-23T17:08:08Z", "product": "Core"}]}, "EMPTY: no frame data available; EmptyMinidump": {"tc_rank": 26, "crash_count": 28, "estimated_user_count": 21, "startup_percent": 0.35714285714285715, "bugs": [{"last_change_time": "2024-09-16T13:45:38Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "Crash Reporting", "id": 1245570, "cf_status_firefox131": "---", "resolution": "", "product": "Fenix"}, {"cf_status_firefox131": "---", "resolution": "", "product": "Toolkit", "last_change_time": "2024-08-09T15:44:14Z", "component": "Crash Reporting", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "id": 1360392}, {"product": "Fenix", "cf_status_firefox131": "---", "resolution": "", "last_change_time": "2024-01-12T02:38:31Z", "id": 1644486, "component": "Crash Reporting", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---"}, {"last_change_time": "2024-08-22T13:02:19Z", "id": 1866123, "cf_tracking_firefox131": "---", "component": "Graphics: CanvasWebGL", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "resolution": "WONTFIX", "product": "Core"}]}, "TppRaiseInvalidParameter": {"tc_rank": 27, "crash_count": 28, "estimated_user_count": 12, "startup_percent": 0.0, "bugs": [{"last_change_time": "2016-05-23T18:13:14Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "component": "Audio/Video: Playback", "id": 1274127, "cf_status_firefox131": "---", "resolution": "FIXED", "product": "Core"}, {"product": "Core", "resolution": "FIXED", "cf_status_firefox131": "---", "component": "Audio/Video: Playback", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "id": 1274132, "last_change_time": "2016-05-25T21:58:26Z"}, {"product": "External Software Affecting Firefox", "resolution": "", "cf_status_firefox131": "---", "id": 1905107, "cf_tracking_firefox131": "---", "component": "Other", "cf_status_firefox132": "---", "last_change_time": "2024-09-10T12:18:25Z"}]}, "mozilla::MFCDMChild::MFCDMChild": {"tc_rank": 28, "crash_count": 25, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"id": 1819492, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "last_change_time": "2023-10-18T03:43:49Z", "cf_status_firefox132": "---", "resolution": "FIXED", "product": "Core", "component": "Audio/Video"}]}, "shutdownhang | mozilla::SpinEventLoopUntil | nsThreadPool::ShutdownWithTimeout": {"tc_rank": 29, "crash_count": 25, "estimated_user_count": 24, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "resolution": "", "last_change_time": "2024-09-04T07:51:23Z", "cf_status_firefox131": "---", "component": "XPCOM", "id": 1866944, "product": "Core", "cf_tracking_firefox131": "---"}, {"resolution": "FIXED", "last_change_time": "2024-08-29T13:01:40Z", "cf_status_firefox132": "---", "id": 1895110, "component": "Address Bar", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "product": "Firefox"}]}, "shutdownhang | mozilla::SpinEventLoopUntil | mozilla::net::nsHttpConnectionMgr::Shutdown": {"tc_rank": 30, "crash_count": 23, "estimated_user_count": 21, "startup_percent": 0.0, "bugs": [{"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-05-24T13:38:02Z", "resolution": "", "cf_status_firefox132": "---", "id": 1633342, "component": "Networking", "cf_status_firefox131": "---"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js_memcpy": {"tc_rank": 31, "crash_count": 21, "estimated_user_count": 17, "startup_percent": 0.0, "bugs": [{"product": "Core", "resolution": "", "cf_status_firefox131": "---", "id": 1472062, "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "component": "JavaScript: GC", "last_change_time": "2024-08-16T16:17:43Z"}]}, "shutdownhang | mozilla::BounceTrackingProtectionStorage::WaitForInitialization | mozilla::BounceTrackingProtectionStorage::BlockShutdown": {"tc_rank": 32, "crash_count": 21, "estimated_user_count": 21, "startup_percent": 1.0, "bugs": []}, "mozilla::interceptor::ReadOnlyTargetBytes::IsValidAtOffset": {"tc_rank": 33, "crash_count": 20, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"product": "Toolkit", "component": "Application Update", "cf_status_firefox131": "---", "id": 1816848, "last_change_time": "2024-09-13T16:27:30Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": ""}]}, "firefox_on_glean::metrics::__glean_metric_maps::COUNTER_MAP::closure$0": {"tc_rank": 34, "crash_count": 19, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::StaticPrefs::InitStaticPrefsFromShared": {"tc_rank": 35, "crash_count": 19, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"component": "Preferences: Backend", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1573731, "resolution": "FIXED", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2019-09-06T18:24:27Z"}, {"id": 1578430, "cf_status_firefox131": "---", "component": "Preferences: Backend", "cf_status_firefox132": "---", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2022-12-09T16:58:08Z", "resolution": ""}]}, "mozilla::dom::ServiceWorkerRegistrar::GetShutdownPhase": {"tc_rank": 36, "crash_count": 19, "estimated_user_count": 4, "startup_percent": 1.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2024-08-30T12:33:57Z", "resolution": "FIXED", "component": "XPCOM", "cf_status_firefox131": "---", "id": 1471720, "product": "Core", "cf_tracking_firefox131": "---"}]}, "shutdownhang | ZwAlpcSendWaitReceivePort": {"tc_rank": 37, "crash_count": 19, "estimated_user_count": 19, "startup_percent": 0.0, "bugs": []}, "__pthread_mutex_lock_full": {"tc_rank": 38, "crash_count": 18, "estimated_user_count": 7, "startup_percent": 0.05555555555555555, "bugs": [{"component": "Crash Reporting", "product": "Toolkit", "resolution": "", "cf_status_firefox132": "---", "last_change_time": "2024-09-23T13:18:48Z", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1912696}]}, "js::frontend::RewritingParseNodeVisitor::visit": {"tc_rank": 39, "crash_count": 18, "estimated_user_count": 11, "startup_percent": 0.0, "bugs": [{"resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2023-12-03T05:23:26Z", "id": 1547561, "cf_status_firefox131": "---", "component": "JavaScript Engine", "product": "Core"}, {"product": "Core", "last_change_time": "2024-08-27T12:15:00Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "", "component": "JavaScript Engine", "cf_status_firefox131": "---", "id": 1868775}]}, "shutdownhang | mozilla::SpinEventLoopUntil | nsThreadManager::ShutdownNonMainThreads": {"tc_rank": 40, "crash_count": 18, "estimated_user_count": 14, "startup_percent": 0.0, "bugs": [{"product": "Core", "resolution": "", "component": "XPCOM", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1505660, "cf_status_firefox132": "---", "last_change_time": "2024-07-17T12:20:58Z"}]}, "js::gc::Arena::zone": {"tc_rank": 41, "crash_count": 17, "estimated_user_count": 14, "startup_percent": 0.0, "bugs": []}, "shutdownhang | mozilla::SpinEventLoopUntil | mozilla::PreferencesWriter::Flush": {"tc_rank": 42, "crash_count": 17, "estimated_user_count": 13, "startup_percent": 0.0, "bugs": [{"cf_status_firefox131": "---", "id": 1710018, "component": "Preferences: Backend", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-08-19T12:43:26Z", "resolution": ""}]}, "mozilla::widget::NativeKey::GetFollowingCharMessage": {"tc_rank": 43, "crash_count": 16, "estimated_user_count": 8, "startup_percent": 0.0, "bugs": [{"id": 962140, "component": "Widget: WinRT", "product": "Core Graveyard", "resolution": "FIXED", "last_change_time": "2019-03-26T17:53:39Z"}, {"resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2017-02-02T14:41:52Z", "id": 992751, "cf_status_firefox131": "---", "component": "Widget: Win32", "product": "Core"}, {"product": "Core", "component": "Widget: Win32", "id": 1302956, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "last_change_time": "2017-01-30T02:24:39Z", "cf_status_firefox132": "---", "resolution": "FIXED"}, {"product": "Core", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2017-02-07T06:27:12Z", "resolution": "FIXED", "component": "Widget: Win32", "cf_status_firefox131": "---", "id": 1334947}, {"last_change_time": "2017-02-07T06:27:56Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "FIXED", "component": "Widget: Win32", "cf_status_firefox131": "---", "id": 1335670, "product": "Core"}, {"product": "Core", "component": "Widget: Win32", "id": 1336028, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2017-02-07T06:28:20Z", "cf_tracking_firefox131": "---", "resolution": "FIXED"}, {"product": "Core", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2017-02-07T06:30:08Z", "id": 1336080, "cf_status_firefox131": "---", "component": "Widget: Win32"}, {"product": "Core", "cf_status_firefox131": "---", "id": 1336322, "component": "Widget: Win32", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2017-02-07T06:30:19Z"}, {"component": "Widget: Win32", "id": 1336331, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2017-02-07T06:30:32Z", "cf_tracking_firefox131": "---", "resolution": "FIXED", "product": "Core"}, {"component": "Widget: Win32", "cf_status_firefox131": "---", "id": 1343446, "last_change_time": "2017-03-14T22:10:37Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "FIXED", "product": "Core"}, {"last_change_time": "2024-09-27T12:06:12Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "fixed", "resolution": "FIXED", "component": "DOM: UI Events & Focus Handling", "id": 1919824, "cf_status_firefox131": "affected", "product": "Core"}]}, "AsyncShutdownTimeout | profile-before-change | Places Connection shutdown": {"tc_rank": 44, "crash_count": 15, "estimated_user_count": 14, "startup_percent": 0.0, "bugs": [{"cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "Places", "id": 1395542, "last_change_time": "2024-01-01T12:27:57Z", "resolution": "", "cf_status_firefox131": "---", "product": "Toolkit"}]}, "IPCError-browser | GPUProcessKill": {"tc_rank": 45, "crash_count": 15, "estimated_user_count": 12, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-05-29T22:26:56Z", "cf_status_firefox132": "---", "id": 1897636, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "component": "Graphics", "resolution": "FIXED", "product": "Core"}, {"cf_status_firefox132": "affected", "last_change_time": "2024-09-26T20:51:39Z", "cf_status_firefox131": "affected", "cf_tracking_firefox131": "---", "id": 1908798, "component": "Graphics: WebRender", "product": "Core", "resolution": ""}]}, "js::NativeObject::getDenseInitializedLength": {"tc_rank": 46, "crash_count": 15, "estimated_user_count": 12, "startup_percent": 0.0, "bugs": [{"component": "JavaScript: GC", "resolution": "", "product": "Core", "last_change_time": "2024-05-14T16:41:23Z", "cf_status_firefox132": "---", "id": 1639157, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---"}]}, "mozilla::Maybe::operator-> | mozilla::gfx::DeviceManagerDx::CreateContentDevice": {"tc_rank": 47, "crash_count": 15, "estimated_user_count": 8, "startup_percent": 0.0, "bugs": [{"resolution": "", "cf_status_firefox131": "---", "product": "Core", "id": 1894405, "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "Audio/Video", "last_change_time": "2024-07-30T13:38:45Z"}]}, "mozilla::detail::IntrinsicAddSub::add": {"tc_rank": 48, "crash_count": 15, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-08-20T21:18:09Z", "resolution": "FIXED", "component": "DOM: Workers", "cf_status_firefox131": "---", "id": 1907383, "product": "Core"}]}, "nsGlobalWindowInner::ClearDocumentDependentSlots": {"tc_rank": 49, "crash_count": 15, "estimated_user_count": 13, "startup_percent": 0.0, "bugs": [{"id": 1405521, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "DOM: Core & HTML", "last_change_time": "2024-05-05T14:25:18Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": ""}, {"resolution": "INCOMPLETE", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2022-03-22T17:04:34Z", "component": "DOM: Core & HTML", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1573464}, {"resolution": "INCOMPLETE", "last_change_time": "2023-01-11T15:58:54Z", "product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "General", "id": 1803675, "cf_status_firefox131": "---"}]}, "AsyncShutdownTimeout | profile-before-change | RemoteSettingsClient - finish IDB access.": {"tc_rank": 50, "crash_count": 14, "estimated_user_count": 14, "startup_percent": 0.0, "bugs": [{"component": "Remote Settings Client", "cf_status_firefox131": "---", "id": 1624878, "cf_status_firefox132": "---", "last_change_time": "2024-09-02T12:26:04Z", "resolution": "", "product": "Firefox", "cf_tracking_firefox131": "---"}, {"last_change_time": "2024-08-22T10:42:38Z", "resolution": "FIXED", "cf_status_firefox132": "---", "id": 1912893, "component": "Remote Settings Client", "cf_status_firefox131": "fixed", "cf_tracking_firefox131": "---", "product": "Firefox"}]}, "js::InternalBarrierMethods::isMarkable": {"tc_rank": 51, "crash_count": 14, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "js::frontend::ParseNode::getKind": {"tc_rank": 52, "crash_count": 14, "estimated_user_count": 12, "startup_percent": 0.0, "bugs": [{"product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2014-03-11T19:37:40Z", "cf_status_firefox131": "---", "component": "JavaScript Engine", "id": 972961}, {"cf_tracking_firefox131": "---", "product": "Core", "resolution": "FIXED", "last_change_time": "2023-12-06T15:55:46Z", "cf_status_firefox132": "---", "id": 1515051, "component": "JavaScript Engine", "cf_status_firefox131": "---"}, {"cf_tracking_firefox131": "---", "product": "Core", "resolution": "FIXED", "last_change_time": "2019-06-12T01:43:14Z", "cf_status_firefox132": "---", "id": 1550628, "component": "JavaScript Engine", "cf_status_firefox131": "---"}, {"product": "Core", "cf_tracking_firefox131": "---", "component": "JavaScript Engine", "cf_status_firefox131": "---", "id": 1801916, "cf_status_firefox132": "---", "last_change_time": "2024-06-12T12:21:58Z", "resolution": ""}, {"product": "DevTools", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2023-10-20T12:02:51Z", "resolution": "INCOMPLETE", "cf_status_firefox131": "---", "component": "Inspector: Rules", "id": 1853224}, {"last_change_time": "2016-07-02T17:34:31Z", "id": 1127012, "component": "JavaScript Engine", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "resolution": "FIXED", "product": "Core"}]}, "objc_msgSend | -[_NSTrackingAreaAKManager _updateActiveTrackingAreasForWindowLocation:modifierFlags:]": {"tc_rank": 53, "crash_count": 14, "estimated_user_count": 14, "startup_percent": 0.0, "bugs": []}, "OOM | large | mozilla::dom::CallbackObject::DeleteCycleCollectable": {"tc_rank": 54, "crash_count": 13, "estimated_user_count": 9, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-03-28T22:51:55Z", "cf_tracking_firefox131": "---", "component": "Cycle Collector", "cf_status_firefox132": "---", "id": 1861431, "product": "Core", "cf_status_firefox131": "---", "resolution": ""}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | js::gc::StoreBuffer::WholeCellBuffer::allocateCellSet": {"tc_rank": 55, "crash_count": 13, "estimated_user_count": 13, "startup_percent": 0.0, "bugs": []}, "hsw::gather": {"tc_rank": 56, "crash_count": 13, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "shutdownhang | google_breakpad::ExceptionHandler::WriteMinidumpOnHandlerThread": {"tc_rank": 57, "crash_count": 13, "estimated_user_count": 13, "startup_percent": 0.0, "bugs": [{"cf_tracking_firefox131": "---", "product": "Toolkit", "last_change_time": "2024-01-30T10:37:59Z", "resolution": "", "cf_status_firefox132": "---", "id": 1726517, "component": "Crash Reporting", "cf_status_firefox131": "---"}, {"product": "Toolkit", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2024-01-11T12:17:11Z", "resolution": "", "cf_status_firefox131": "---", "component": "Crash Reporting", "id": 1852842}]}, "(unloaded obs-virtualcam-module64.dll) | webrtc::videocapturemodule::VideoCaptureDS::~VideoCaptureDS": {"tc_rank": 58, "crash_count": 12, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"component": "WebRTC: Audio/Video", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1707060, "resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-08-02T08:53:38Z"}]}, "AllocInfo::GetInChunk": {"tc_rank": 59, "crash_count": 12, "estimated_user_count": 12, "startup_percent": 0.0, "bugs": [{"id": 1825837, "cf_status_firefox131": "---", "component": "Memory Allocator", "resolution": "INVALID", "cf_tracking_firefox131": "---", "last_change_time": "2024-01-05T22:15:41Z", "cf_status_firefox132": "---", "product": "Core"}]}, "JS::Rooted::~Rooted": {"tc_rank": 60, "crash_count": 12, "estimated_user_count": 6, "startup_percent": 0.5, "bugs": [{"id": 1837205, "cf_status_firefox131": "---", "component": "Crash Reporting", "resolution": "", "last_change_time": "2023-11-20T12:20:19Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "product": "Toolkit"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | v8::internal::Zone::New": {"tc_rank": 61, "crash_count": 12, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "js::gc::InCollectedNurseryRegion": {"tc_rank": 62, "crash_count": 12, "estimated_user_count": 11, "startup_percent": 0.0, "bugs": []}, "shutdownhang | mozilla::SpinEventLoopUntil | mozilla::dom::quota::QuotaManager::Observer::Observe": {"tc_rank": 63, "crash_count": 12, "estimated_user_count": 12, "startup_percent": 0.0, "bugs": [{"id": 1538619, "cf_status_firefox131": "---", "component": "Storage: IndexedDB", "resolution": "FIXED", "cf_tracking_firefox131": "---", "last_change_time": "2020-06-05T06:56:28Z", "cf_status_firefox132": "---", "product": "Core"}, {"product": "Core", "id": 1542541, "cf_status_firefox131": "---", "component": "Storage: IndexedDB", "resolution": "FIXED", "last_change_time": "2019-06-26T01:54:12Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---"}, {"resolution": "", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-06-27T12:54:02Z", "id": 1588498, "cf_status_firefox131": "---", "component": "Storage: Quota Manager", "product": "Core"}, {"cf_status_firefox132": "---", "component": "Storage: Quota Manager", "cf_tracking_firefox131": "---", "id": 1487194, "last_change_time": "2019-10-23T19:20:54Z", "resolution": "WONTFIX", "cf_status_firefox131": "---", "product": "Core"}]}, "OOM | large | IPC::ParamTraits::Read | mozilla::dom::PContentParent::OnMessageReceived": {"tc_rank": 64, "crash_count": 11, "estimated_user_count": 11, "startup_percent": 0.0, "bugs": []}, "OOM | large | NS_ABORT_OOM | nsTSubstring::AllocFailed | nsTSubstring::GetMutableData | IPC::ParamTraits >::Read::::operator() | IPC::ReadSequenceParam | IPC::ParamTraits >::Read | IPC::ParamTraits const&, (anonymous namespace)::ParentImpl::ShutdownBackgroundThread::&&, nsIThread*) | (anonymous namespace)::ParentImpl::ShutdownBackgroundThread": {"tc_rank": 67, "crash_count": 11, "estimated_user_count": 11, "startup_percent": 0.0, "bugs": [{"product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2024-01-20T07:22:34Z", "resolution": "INVALID", "component": "General", "cf_status_firefox131": "---", "id": 1875602}, {"product": "Toolkit", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "", "last_change_time": "2024-09-20T12:22:36Z", "cf_status_firefox131": "---", "component": "Crash Reporting", "id": 1885714}]}, "ICUReporter::Alloc": {"tc_rank": 68, "crash_count": 10, "estimated_user_count": 7, "startup_percent": 0.0, "bugs": []}, "OOM | large | EMPTY: no frame data available; EmptyMinidump": {"tc_rank": 69, "crash_count": 10, "estimated_user_count": 10, "startup_percent": 0.0, "bugs": [{"product": "Toolkit", "resolution": "", "cf_status_firefox131": "---", "id": 1360392, "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "component": "Crash Reporting", "last_change_time": "2024-08-09T15:44:14Z"}]}, "RedBlackTreeNode::Left": {"tc_rank": 70, "crash_count": 10, "estimated_user_count": 2, "startup_percent": 0.9, "bugs": []}, "libnvidia-eglcore.so.550.107.02": {"tc_rank": 71, "crash_count": 10, "estimated_user_count": 2, "startup_percent": 1.0, "bugs": []}, "mozilla::detail::VectorImpl::new_": {"tc_rank": 72, "crash_count": 10, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "mozilla::dom::RemoteObjectProxyBase::GetOrCreateProxyObject": {"tc_rank": 73, "crash_count": 10, "estimated_user_count": 9, "startup_percent": 0.0, "bugs": [{"component": "DOM: Content Processes", "resolution": "WORKSFORME", "product": "Core", "last_change_time": "2022-01-10T13:18:20Z", "cf_status_firefox132": "---", "id": 1568238, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---"}, {"component": "DOM: Window and Location", "product": "Core", "resolution": "", "cf_status_firefox132": "---", "last_change_time": "2024-04-30T23:42:25Z", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 1829760}, {"cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1891409, "cf_status_firefox132": "---", "last_change_time": "2024-05-09T21:03:47Z", "product": "Core", "resolution": "", "component": "DOM: Window and Location"}]}, "shutdownhang | NtAlpcSendWaitReceivePort": {"tc_rank": 74, "crash_count": 10, "estimated_user_count": 10, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "component": "Widget: Win32", "id": 1551856, "cf_status_firefox131": "---", "resolution": "", "last_change_time": "2024-05-22T21:13:24Z", "product": "Core", "cf_tracking_firefox131": "---"}]}, "FREEBL_GetVector": {"tc_rank": 75, "crash_count": 9, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "OOM | large | NS_ABORT_OOM | nsTSubstring::AllocFailed | AppendUTF16toUTF8 | NS_ConvertUTF16toUTF8::NS_ConvertUTF16toUTF8 | mozilla::css::Loader::LoadInlineStyle": {"tc_rank": 76, "crash_count": 9, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": []}, "OOM | large | NS_ABORT_OOM | nsTSubstring::AllocFailed | AppendUTF16toUTF8 | NS_ConvertUTF16toUTF8::NS_ConvertUTF16toUTF8 | mozilla::dom::serviceWorkerScriptCache::(anonymous namespace)::CompareManager::WriteToCache(JSContext*, mozilla::dom::cache::...": {"tc_rank": 77, "crash_count": 9, "estimated_user_count": 8, "startup_percent": 0.0, "bugs": []}, "OOM | large | mozilla::JSHolderMap::Extract": {"tc_rank": 78, "crash_count": 9, "estimated_user_count": 9, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-05-17T09:59:40Z", "resolution": "", "product": "Thunderbird", "component": "General", "id": 1882757}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | v8::internal::Zone::New(v8::internal::(anonymous namespace)::RegExpParserState*&, v8::internal::(anonymous namespace)::SubexpressionType&, v8::internal:...": {"tc_rank": 79, "crash_count": 9, "estimated_user_count": 9, "startup_percent": 0.0, "bugs": []}, "googleinputtools.ime": {"tc_rank": 80, "crash_count": 9, "estimated_user_count": 9, "startup_percent": 0.0, "bugs": []}, "mio::sys::windows::named_pipe::read_done": {"tc_rank": 81, "crash_count": 9, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-09-11T12:16:52Z", "component": "Audio/Video: Playback", "cf_status_firefox132": "affected", "cf_tracking_firefox131": "---", "id": 1916629, "product": "Core", "cf_status_firefox131": "affected", "resolution": ""}]}, "mozilla::dom::Selection::SelectFrames": {"tc_rank": 82, "crash_count": 9, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-09-22T19:18:36Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "", "id": 1885462, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "DOM: Selection"}, {"cf_status_firefox132": "---", "component": "DOM: Selection", "cf_status_firefox131": "---", "id": 1890888, "resolution": "FIXED", "last_change_time": "2024-04-12T08:23:05Z", "cf_tracking_firefox131": "---", "product": "Core"}, {"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-06-18T19:22:11Z", "resolution": "FIXED", "cf_status_firefox131": "---", "id": 1896229, "component": "DOM: Selection", "cf_status_firefox132": "---"}, {"cf_status_firefox132": "---", "component": "DOM: Selection", "cf_status_firefox131": "---", "id": 1907464, "resolution": "FIXED", "last_change_time": "2024-07-17T12:58:46Z", "cf_tracking_firefox131": "---", "product": "Core"}]}, "shutdownhang | mozilla::SpinEventLoopUntil | nsThreadManager::SpinEventLoopUntilInternal": {"tc_rank": 83, "crash_count": 9, "estimated_user_count": 9, "startup_percent": 0.0, "bugs": []}, "wr_shaders_delete": {"tc_rank": 84, "crash_count": 9, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "WORKSFORME", "last_change_time": "2023-03-10T00:30:24Z", "cf_status_firefox131": "---", "component": "Graphics: WebRender", "id": 1751607}]}, "AsyncShutdownTimeout | Places Clients shutdown | sanitize.js: Sanitize on shutdown": {"tc_rank": 85, "crash_count": 8, "estimated_user_count": 8, "startup_percent": 0.0, "bugs": [{"product": "Core", "component": "Storage: Quota Manager", "cf_status_firefox131": "---", "id": 1404105, "cf_tracking_firefox131": "---", "last_change_time": "2021-08-14T20:51:55Z", "cf_status_firefox132": "---", "resolution": "FIXED"}, {"product": "Firefox", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-07-22T12:23:56Z", "resolution": "", "component": "Session Restore", "cf_status_firefox131": "---", "id": 1426941}, {"cf_status_firefox131": "---", "id": 1507171, "component": "Data Sanitization", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2019-05-05T10:08:54Z", "product": "Toolkit"}, {"product": "Toolkit", "cf_tracking_firefox131": "---", "last_change_time": "2019-10-29T17:21:35Z", "cf_status_firefox132": "---", "resolution": "FIXED", "component": "Data Sanitization", "id": 1524200, "cf_status_firefox131": "---"}, {"id": 1578273, "cf_status_firefox131": "---", "component": "Data Sanitization", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2023-07-15T12:15:10Z", "product": "Toolkit"}]}, "AsyncShutdownTimeout | profile-before-change | AddonManager: shutting down.": {"tc_rank": 86, "crash_count": 8, "estimated_user_count": 8, "startup_percent": 0.0, "bugs": []}, "IPC::Channel::ChannelImpl::SetOtherPid | IPC::Channel::ChannelImpl::ProcessIncomingMessages | IPC::Channel::ChannelImpl::OnIOCompleted | base::MessagePumpForIO::WaitForIOCompletion | base::MessagePumpForIO::WaitForWork | base::MessagePumpForIO::DoRunLoop": {"tc_rank": 87, "crash_count": 8, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "OOM | large | IPC::ParamTraits::Read | mozilla::gfx::PGPUChild::OnMessageReceived": {"tc_rank": 88, "crash_count": 8, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": []}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | v8::internal::Zone::NewArray": {"tc_rank": 89, "crash_count": 8, "estimated_user_count": 7, "startup_percent": 0.0, "bugs": []}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::gc::StoreBuffer::MonoTypeBuffer::sinkStore": {"tc_rank": 90, "crash_count": 8, "estimated_user_count": 8, "startup_percent": 0.0, "bugs": []}, "TypedBaseAlloc::dealloc": {"tc_rank": 91, "crash_count": 8, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "mozilla::dom::Document::SetLastFocusTime": {"tc_rank": 92, "crash_count": 8, "estimated_user_count": 3, "startup_percent": 1.0, "bugs": [{"id": 1711442, "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "DOM: UI Events & Focus Handling", "last_change_time": "2021-07-28T18:50:06Z", "resolution": "FIXED", "cf_status_firefox131": "---", "product": "Core"}]}, "shutdownhang | mozilla::SyncRunnable::DispatchToThread": {"tc_rank": 93, "crash_count": 8, "estimated_user_count": 7, "startup_percent": 0.0, "bugs": [{"last_change_time": "2019-02-26T17:00:24Z", "id": 1453038, "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "component": "Safe Browsing", "cf_status_firefox131": "---", "resolution": "FIXED", "product": "Toolkit"}, {"id": 1504774, "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "component": "Safe Browsing", "last_change_time": "2019-01-08T17:20:49Z", "resolution": "FIXED", "cf_status_firefox131": "---", "product": "Toolkit"}]}, "AsyncShutdownTimeout | IOUtils: waiting for profileBeforeChange IO to complete | CrashMonitor: Writing notifications to file after receiving profile-before-change and awaiting all checkpoints written": {"tc_rank": 94, "crash_count": 7, "estimated_user_count": 7, "startup_percent": 0.0, "bugs": [{"product": "Firefox", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2022-04-20T15:20:46Z", "id": 1761652, "cf_status_firefox131": "---", "component": "Session Restore"}]}, "HandleGLibMessage": {"tc_rank": 95, "crash_count": 7, "estimated_user_count": 7, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-03-15T09:25:40Z", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 1743144, "component": "Widget: Gtk", "product": "Core", "resolution": "FIXED"}, {"product": "Core", "resolution": "", "component": "Widget: Gtk", "cf_tracking_firefox131": "---", "cf_status_firefox131": "affected", "id": 1890074, "cf_status_firefox132": "---", "last_change_time": "2024-09-27T13:22:32Z"}, {"product": "Core", "resolution": "", "component": "Widget: Gtk", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1917270, "cf_status_firefox132": "---", "last_change_time": "2024-09-27T13:38:48Z"}]}, "MsaaProxy::get_TextContainer": {"tc_rank": 96, "crash_count": 7, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-05-20T05:59:43Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1890155, "component": "Disability Access APIs", "product": "Core", "resolution": ""}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | js::gc::StoreBuffer::GenericBuffer::put": {"tc_rank": 97, "crash_count": 7, "estimated_user_count": 7, "startup_percent": 0.0, "bugs": []}, "_DllMainCRTStartup": {"tc_rank": 98, "crash_count": 7, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "encoding_rs::mem::is_ascii_impl": {"tc_rank": 99, "crash_count": 7, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "mozilla::dom::quota::QuotaManager::Shutdown::$::operator()": {"tc_rank": 100, "crash_count": 7, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-06-27T12:54:02Z", "resolution": "", "cf_status_firefox132": "---", "id": 1588498, "cf_status_firefox131": "---", "component": "Storage: Quota Manager", "cf_tracking_firefox131": "---", "product": "Core"}]}, "neqo_common::codec::Encoder::encode_uint": {"tc_rank": 101, "crash_count": 7, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"component": "Networking: DNS", "cf_status_firefox132": "affected", "id": 1919678, "cf_status_firefox131": "affected", "resolution": "", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-27T18:01:39Z"}]}, "nsThread::Dispatch": {"tc_rank": 102, "crash_count": 7, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"component": "Networking", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 716386, "resolution": "WONTFIX", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2016-02-11T16:34:42Z"}, {"resolution": "INCOMPLETE", "last_change_time": "2020-02-03T20:22:00Z", "product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "XPCOM", "id": 1182878, "cf_status_firefox131": "---"}, {"last_change_time": "2018-02-07T23:23:23Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "FIXED", "cf_status_firefox131": "---", "id": 1433855, "cf_status_firefox132": "---", "component": "Security: Process Sandboxing"}]}, "@0x0 | tokenmgr.dll | secmod_ModuleInit": {"tc_rank": 103, "crash_count": 6, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": []}, "AsyncShutdownTimeout | profile-before-change | Remote Settings profile-before-change": {"tc_rank": 104, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"id": 1605973, "cf_status_firefox131": "---", "component": "Remote Settings Client", "resolution": "", "last_change_time": "2024-09-23T17:45:03Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Firefox"}]}, "CallHookWithSEH": {"tc_rank": 105, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"id": 1400169, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2023-07-19T18:09:46Z", "resolution": "", "product": "External Software Affecting Firefox", "component": "Other"}, {"last_change_time": "2023-11-06T14:02:51Z", "component": "Mail Window Front End", "resolution": "INVALID", "id": 1771815, "product": "Thunderbird"}]}, "InitializeNSSWithFallbacks": {"tc_rank": 106, "crash_count": 6, "estimated_user_count": 3, "startup_percent": 0.16666666666666666, "bugs": [{"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-01-28T17:29:46Z", "resolution": "", "cf_status_firefox132": "---", "id": 1834770, "cf_status_firefox131": "---", "component": "Security: PSM"}]}, "NSToCoordRoundWithClamp": {"tc_rank": 107, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "OOM | large | nsTArray_Impl::AppendElementsInternal | nsTArray::AppendElement | CCGraphBuilder::NoteWeakMapping": {"tc_rank": 108, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": []}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | JS::CallbackTracer::onEdge": {"tc_rank": 109, "crash_count": 6, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"resolution": "", "product": "Core", "component": "JavaScript: GC", "id": 1472062, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-08-16T16:17:43Z", "cf_status_firefox132": "---"}, {"cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1891944, "cf_status_firefox132": "---", "last_change_time": "2024-04-18T12:43:08Z", "product": "Core", "resolution": "WONTFIX", "component": "JavaScript Engine"}]}, "PtrInfo::AnnotatedReleaseAssert": {"tc_rank": 110, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"resolution": "", "cf_status_firefox132": "---", "last_change_time": "2023-03-14T17:41:58Z", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1277280, "component": "Cycle Collector", "product": "Core"}, {"product": "Core", "resolution": "FIXED", "cf_status_firefox132": "---", "last_change_time": "2018-08-13T18:27:51Z", "cf_tracking_firefox131": "---", "id": 1448604, "cf_status_firefox131": "---", "component": "Security: CAPS"}, {"product": "Core", "last_change_time": "2023-01-30T23:54:53Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "", "component": "Cycle Collector", "id": 1612857, "cf_status_firefox131": "---"}]}, "RedBlackTree::TreeNode::SetColor": {"tc_rank": 111, "crash_count": 6, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2021-06-23T12:19:08Z", "resolution": "WORKSFORME", "cf_status_firefox132": "---", "id": 1466567, "cf_status_firefox131": "---", "component": "Memory Allocator"}, {"cf_tracking_firefox131": "---", "product": "Core", "resolution": "", "last_change_time": "2024-01-02T14:39:09Z", "cf_status_firefox132": "---", "id": 1872261, "component": "Memory Allocator", "cf_status_firefox131": "---"}]}, "RtlpUnwindPrologue | RtlpxVirtualUnwind | RtlpUnwindPrologue | RtlpxVirtualUnwind | RtlpUnwindPrologue | RtlpxVirtualUnwind | RtlpUnwindPrologue | RtlpxVirtualUnwind | RtlpUnwindPrologue | RtlpxVirtualUnwind | RtlpUnwindPrologue | RtlpxVirtualUnwind | ...": {"tc_rank": 112, "crash_count": 6, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": [{"product": "External Software Affecting Firefox", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-11T11:26:45Z", "cf_status_firefox132": "---", "resolution": "", "component": "Other", "cf_status_firefox131": "---", "id": 1913267}]}, "bad hardware | nsZipHandle::findDataStart": {"tc_rank": 113, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 0.16666666666666666, "bugs": []}, "js::ObjectSlots::isSharedEmptySlots": {"tc_rank": 114, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"component": "JavaScript: GC", "id": 787879, "cf_status_firefox131": "---", "last_change_time": "2023-10-03T12:14:51Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "", "product": "Core"}]}, "mozilla::EbmlComposer::WriteSimpleBlock": {"tc_rank": 115, "crash_count": 6, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"cf_status_firefox131": "---", "id": 1702483, "cf_status_firefox132": "---", "component": "Audio/Video: Recording", "last_change_time": "2023-04-27T14:42:50Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "FIXED"}, {"id": 1808680, "cf_status_firefox131": "---", "component": "Audio/Video: Recording", "cf_status_firefox132": "---", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2023-04-27T14:43:10Z", "resolution": "FIXED"}, {"cf_status_firefox132": "---", "component": "Audio/Video: Recording", "cf_status_firefox131": "---", "id": 1830323, "resolution": "", "last_change_time": "2023-08-29T13:40:38Z", "cf_tracking_firefox131": "---", "product": "Core"}]}, "mozilla::Maybe::ref | js::gc::GCRuntime::gcOptions": {"tc_rank": 116, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"id": 1911488, "cf_status_firefox131": "affected", "component": "JavaScript: GC", "resolution": "", "last_change_time": "2024-08-06T16:22:14Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}]}, "mozilla::MediaChangeMonitor::DecodeFirstSample::::operator()": {"tc_rank": 117, "crash_count": 6, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"resolution": "", "last_change_time": "2024-09-25T12:13:05Z", "cf_status_firefox132": "affected", "id": 1916625, "component": "Audio/Video: Playback", "cf_status_firefox131": "affected", "cf_tracking_firefox131": "---", "product": "Core"}]}, "mozilla::detail::nsTStringLengthStorage::nsTStringLengthStorage": {"tc_rank": 118, "crash_count": 6, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-01-02T18:55:36Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "", "id": 1869203, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "XPCOM"}]}, "mozilla::dom::TypedArray_base::ProcessFixedData": {"tc_rank": 119, "crash_count": 6, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": [{"component": "DOM: Bindings (WebIDL)", "resolution": "", "product": "Core", "cf_status_firefox132": "---", "last_change_time": "2024-08-06T09:58:08Z", "id": 1856672, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---"}]}, "mozilla::net::DocumentChannel::SetLoadFlags": {"tc_rank": 120, "crash_count": 6, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"cf_status_firefox131": "---", "id": 1634598, "cf_status_firefox132": "---", "component": "Networking", "last_change_time": "2020-08-03T20:15:43Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": "FIXED"}, {"last_change_time": "2024-05-27T20:38:10Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "FIXED", "id": 1656925, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Networking"}, {"cf_status_firefox131": "wontfix", "id": 1694904, "cf_status_firefox132": "affected", "component": "DOM: Navigation", "last_change_time": "2024-09-27T18:12:12Z", "cf_tracking_firefox131": "---", "product": "Core", "resolution": ""}]}, "nsLocalFile::GetDateImpl": {"tc_rank": 121, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "pthread_kill | abort | __report_load": {"tc_rank": 122, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2022-11-29T16:27:14Z", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 1670195, "component": "Other", "product": "External Software Affecting Firefox", "resolution": "INVALID"}]}, "shutdownhang | RtlpWaitOnAddressWithTimeout | RtlpWaitOnAddress | RtlWaitOnAddress | WaitOnAddress": {"tc_rank": 123, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"resolution": "FIXED", "product": "Data Platform and Tools", "component": "Glean: SDK", "id": 1828066, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "last_change_time": "2023-07-14T00:12:00Z", "cf_status_firefox132": "---"}]}, "shutdownhang | mozilla::LazyIdleThreadShutdown": {"tc_rank": 124, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": []}, "shutdownhang | mozilla::SpinEventLoopUntil | nsThread::Shutdown | mozilla::storage::Connection::shutdownAsyncThread": {"tc_rank": 125, "crash_count": 6, "estimated_user_count": 6, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-05-21T12:38:54Z", "resolution": "", "product": "Thunderbird", "component": "General", "id": 1861875}]}, "wdhints.dll | Microsoft::WRL::Details::RuntimeClassImpl::Release": {"tc_rank": 126, "crash_count": 6, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "(anonymous namespace)::get_output_buffer": {"tc_rank": 127, "crash_count": 5, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"product": "Core", "resolution": "", "cf_tracking_firefox131": "---", "last_change_time": "2024-06-24T16:56:43Z", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1843903, "component": "Audio/Video: cubeb"}]}, "CallQueryInterface": {"tc_rank": 128, "crash_count": 5, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": [{"id": 136185, "cf_status_firefox131": "---", "component": "Print Preview", "resolution": "FIXED", "last_change_time": "2002-05-03T17:24:45Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}, {"product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "component": "DOM: Core & HTML", "id": 205225, "cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2013-04-04T20:53:36Z"}, {"last_change_time": "2014-04-26T10:31:07Z", "resolution": "FIXED", "cf_status_firefox132": "---", "id": 265181, "cf_status_firefox131": "---", "component": "Layout: Tables", "cf_tracking_firefox131": "---", "product": "Core"}, {"id": 269501, "cf_status_firefox131": "---", "component": "Layout", "last_change_time": "2011-06-09T21:58:40Z", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}, {"component": "DOM: Events", "cf_status_firefox131": "---", "id": 364219, "cf_status_firefox132": "---", "last_change_time": "2007-01-24T00:11:30Z", "resolution": "FIXED", "product": "Core", "cf_tracking_firefox131": "---"}, {"product": "Thunderbird", "component": "General", "id": 1861670, "last_change_time": "2024-01-28T17:22:40Z", "resolution": ""}, {"id": 211146, "component": "Internationalization", "product": "MailNews Core", "resolution": "WORKSFORME", "last_change_time": "2011-06-09T21:58:37Z"}]}, "CanonicalizeXPCOMParticipant": {"tc_rank": 129, "crash_count": 5, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": [{"product": "Thunderbird", "id": 815141, "last_change_time": "2018-11-09T03:38:34Z", "resolution": "WORKSFORME", "component": "General"}, {"id": 935911, "cf_status_firefox131": "---", "component": "XPCOM", "cf_status_firefox132": "---", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2014-07-31T11:42:32Z", "resolution": "WORKSFORME"}, {"id": 1151352, "cf_status_firefox131": "---", "component": "XPCOM", "cf_status_firefox132": "---", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2015-06-03T21:16:56Z", "resolution": "INVALID"}, {"id": 1820427, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "XPCOM", "last_change_time": "2023-05-04T21:19:28Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": "INCOMPLETE"}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-23T06:50:37Z", "resolution": "", "id": 1903892, "cf_status_firefox131": "---", "component": "Cycle Collector", "cf_status_firefox132": "---"}]}, "IPC::MessageReader::FatalError | IPC::MessageBufferReader::MessageBufferReader | IPC::ReadSequenceParamImpl | IPC::ReadSequenceParam | IPC::ParamTraits >::Read | IPC::ParamTraits::Read | IPC::Param...": {"tc_rank": 130, "crash_count": 5, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": []}, "JSString::isRope": {"tc_rank": 131, "crash_count": 5, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": [{"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2015-05-30T06:25:07Z", "resolution": "FIXED", "id": 636487, "cf_status_firefox131": "---", "component": "JavaScript Engine", "cf_status_firefox132": "---"}, {"id": 643284, "cf_status_firefox131": "---", "component": "JavaScript Engine", "cf_status_firefox132": "---", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2011-08-05T07:54:17Z", "resolution": "FIXED"}, {"resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-04-11T16:42:12Z", "component": "JavaScript Engine", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1826607}, {"last_change_time": "2013-01-19T22:35:09Z", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 785576, "component": "JavaScript Engine", "product": "Core", "resolution": "FIXED"}]}, "LdrpCallInitRoutine": {"tc_rank": 132, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"resolution": "INVALID", "id": 1753868, "product": "Thunderbird", "component": "Message Compose Window", "last_change_time": "2022-02-22T14:54:56Z"}]}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | js::AutoEnterOOMUnsafeRegion::crash | v8::internal::Zone::New": {"tc_rank": 133, "crash_count": 5, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": []}, "RtlpReportHeapFailure | RtlpFreeHeapInternal | RtlFreeHeap | dnslib.dll": {"tc_rank": 134, "crash_count": 5, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "js::jit::CalleeToToken": {"tc_rank": 135, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "memcpy | mozilla::image::BlendAnimationFilter::WriteBaseFrameRow": {"tc_rank": 136, "crash_count": 5, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"resolution": "INCOMPLETE", "last_change_time": "2024-02-10T08:34:16Z", "cf_tracking_firefox131": "---", "product": "Core", "cf_status_firefox132": "---", "component": "Graphics: ImageLib", "cf_status_firefox131": "---", "id": 1753060}, {"component": "Graphics: ImageLib", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1826257, "resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-07-12T14:19:57Z"}]}, "mozilla::TaskController::InitializeThreadPool": {"tc_rank": 137, "crash_count": 5, "estimated_user_count": 4, "startup_percent": 0.2, "bugs": [{"resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-09-10T15:50:25Z", "component": "XPCOM", "cf_status_firefox132": "affected", "cf_status_firefox131": "wontfix", "id": 1910208}]}, "mozilla::detail::InvalidArrayIndex_CRASH | nsTArray_Impl::ElementAt | nsTArray_Impl::operator[] | ClusterIterator::ClusterIterator": {"tc_rank": 138, "crash_count": 5, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"resolution": "FIXED", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2024-09-26T12:01:59Z", "component": "Layout", "cf_status_firefox132": "fixed", "id": 1885702, "cf_status_firefox131": "affected"}]}, "mozilla::gmp::GMPLoader::Load": {"tc_rank": 139, "crash_count": 5, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "affected", "last_change_time": "2024-09-19T03:33:53Z", "resolution": "", "component": "Audio/Video: GMP", "cf_status_firefox131": "affected", "id": 1830431, "product": "Core", "cf_tracking_firefox131": "---"}, {"product": "Core", "cf_tracking_firefox131": "---", "component": "Audio/Video: GMP", "cf_status_firefox131": "---", "id": 1830950, "cf_status_firefox132": "---", "last_change_time": "2023-06-15T01:09:44Z", "resolution": "FIXED"}, {"id": 1912449, "component": "Security: Process Sandboxing", "cf_status_firefox131": "verified", "last_change_time": "2024-08-27T09:56:46Z", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}]}, "mozilla::layers::PCompositorBridgeChild::SendNotifyChildRecreated": {"tc_rank": 140, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "mozilla::net::ZstdWrapper::ZstdWrapper": {"tc_rank": 141, "crash_count": 5, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": []}, "nsCycleCollectionParticipant::TraverseNativeAndJS": {"tc_rank": 142, "crash_count": 5, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2023-01-30T23:54:45Z", "id": 1801132, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "component": "Cycle Collector", "resolution": "", "product": "Core"}]}, "nsTArray_Impl::~nsTArray_Impl | mozilla::CreateWRClipPathAndMasks": {"tc_rank": 143, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "nsWindow::GetDefaultScaleInternal": {"tc_rank": 144, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "shutdownhang | ZwCreateUserProcess": {"tc_rank": 145, "crash_count": 5, "estimated_user_count": 5, "startup_percent": 0.0, "bugs": [{"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2017-09-24T23:03:25Z", "resolution": "FIXED", "id": 1373958, "cf_status_firefox131": "---", "component": "XPCOM", "cf_status_firefox132": "---"}]}, "std::_Func_impl_no_alloc::_Func_impl_no_alloc | std::_Func_impl_no_alloc::_Copy | mozilla::DefaultDelete::operator()": {"tc_rank": 146, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "webrender::prim_store::text_run::impl$4::from": {"tc_rank": 147, "crash_count": 5, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "AsyncShutdownTimeout | AddonManager: Waiting to start provider shutdown. | EnvironmentAddonBuilder": {"tc_rank": 148, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"resolution": "FIXED", "cf_tracking_firefox131": "---", "product": "Toolkit", "last_change_time": "2019-12-12T21:41:34Z", "component": "Add-ons Manager", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1513855}, {"cf_status_firefox131": "---", "id": 1601678, "component": "Telemetry", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Toolkit", "last_change_time": "2020-11-17T13:49:35Z", "resolution": "FIXED"}]}, "AsyncShutdownTimeout | IOUtils: waiting for profileBeforeChange IO to complete | CrashMonitor: Writing notifications to file after receiving profile-before-change and awaiting all checkpoints written,SessionFile: Finish writing Session Restore data": {"tc_rank": 149, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "CrashChannel::OpenContentStream": {"tc_rank": 150, "crash_count": 4, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"component": "Networking", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1515987, "resolution": "INVALID", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2024-08-28T16:47:20Z"}, {"cf_status_firefox131": "---", "id": 1849669, "component": "Marionette", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Remote Protocol", "last_change_time": "2024-09-23T06:54:36Z", "resolution": ""}, {"product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2024-08-27T22:50:54Z", "resolution": "WONTFIX", "id": 1912061, "cf_status_firefox131": "---", "component": "Networking", "cf_status_firefox132": "---"}]}, "EdgePool::Iterator::operator*": {"tc_rank": 151, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"component": "Cycle Collector", "cf_status_firefox132": "---", "id": 500105, "cf_status_firefox131": "---", "resolution": "", "product": "Core", "cf_tracking_firefox131": "---", "last_change_time": "2023-12-13T15:58:37Z"}, {"id": 1869503, "cf_status_firefox131": "---", "cf_status_firefox132": "---", "component": "Cycle Collector", "last_change_time": "2024-07-31T10:01:53Z", "product": "Core", "cf_tracking_firefox131": "---", "resolution": ""}]}, "JSClass::hasTrace": {"tc_rank": 152, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"id": 1867165, "cf_status_firefox132": "---", "component": "JavaScript: GC", "cf_tracking_firefox131": "---", "last_change_time": "2023-12-05T17:56:10Z", "resolution": "", "cf_status_firefox131": "---", "product": "Core"}]}, "OOM | large | NS_ABORT_OOM | nsTSubstring::AllocFailed | CopyUTF8toUTF16 | nsGenericHTMLElement::GetURIAttr": {"tc_rank": 153, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"component": "General", "product": "Thunderbird", "id": 1869147, "resolution": "", "last_change_time": "2024-01-02T03:22:17Z"}]}, "OOM | large | hashbrown::raw::Fallibility::alloc_err | hashbrown::raw::RawTable::reserve": {"tc_rank": 154, "crash_count": 4, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"product": "Core", "resolution": "", "last_change_time": "2024-09-10T06:45:57Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "id": 1913804, "cf_status_firefox131": "?", "component": "CSS Parsing and Computation"}]}, "OOM | large | nsTArray_Impl::AppendElementInternal | nsTArray::AppendElement | mozilla::AnimationEventDispatcher::QueueEvent": {"tc_rank": 155, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "OOM | large | nsTArray_Impl::EmplaceBackInternal | nsTArray::EmplaceBack | nsFlexContainerFrame::GenerateFlexItemForChild": {"tc_rank": 156, "crash_count": 4, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "OOM | large | w2c_env_mozalloc_handle_oom": {"tc_rank": 157, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash_impl | mozilla::Variant::Variant | js::frontend::GenericAtom::GenericAtom": {"tc_rank": 158, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "RtlpReportHeapFailure | RtlpFreeHeap | RtlpFreeHeapInternal | RtlFreeHeap | dnslib.dll": {"tc_rank": 159, "crash_count": 4, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": []}, "XPCJSRuntime::UnprivilegedJunkScope": {"tc_rank": 160, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2021-06-11T11:07:48Z", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 1665862, "component": "DOM: Networking", "product": "Core", "resolution": "FIXED"}]}, "__CFStringHash": {"tc_rank": 161, "crash_count": 4, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "component": "Widget: Cocoa", "id": 1801419, "cf_status_firefox131": "---", "resolution": "", "last_change_time": "2024-07-13T16:53:07Z", "product": "Core", "cf_tracking_firefox131": "---"}]}, "__delayLoadHelper2 | ": {"tc_rank": 162, "crash_count": 4, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "last_change_time": "2024-08-13T07:27:51Z", "resolution": "", "component": "Security: Process Sandboxing", "cf_status_firefox131": "---", "id": 1884469, "product": "Core", "cf_tracking_firefox131": "---"}]}, "bad hardware | AudioDeviceInfo::GetMinLatency": {"tc_rank": 163, "crash_count": 4, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "core::ptr::swap_nonoverlapping_simple_untyped": {"tc_rank": 164, "crash_count": 4, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": []}, "igd10iumd32.dll | NDXGI::CDevice::CreateDriverInstance": {"tc_rank": 165, "crash_count": 4, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "je_free": {"tc_rank": 166, "crash_count": 4, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"resolution": "INCOMPLETE", "cf_status_firefox131": "---", "product": "Core", "id": 677552, "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics", "last_change_time": "2016-05-12T20:56:33Z"}, {"cf_status_firefox131": "---", "resolution": "INCOMPLETE", "product": "Firefox", "last_change_time": "2016-06-13T23:29:37Z", "cf_tracking_firefox131": "---", "component": "General", "cf_status_firefox132": "---", "id": 710880}, {"cf_status_firefox131": "---", "resolution": "INCOMPLETE", "product": "Core", "last_change_time": "2017-09-13T20:32:11Z", "id": 1374318, "cf_status_firefox132": "---", "component": "WebRTC", "cf_tracking_firefox131": "---"}, {"product": "Core", "cf_status_firefox131": "---", "resolution": "INCOMPLETE", "last_change_time": "2017-09-13T20:32:19Z", "id": 1374527, "cf_tracking_firefox131": "---", "component": "WebRTC", "cf_status_firefox132": "---"}, {"product": "Core", "cf_status_firefox131": "---", "resolution": "INCOMPLETE", "last_change_time": "2017-10-10T01:17:22Z", "cf_status_firefox132": "---", "component": "WebRTC", "cf_tracking_firefox131": "---", "id": 1382054}, {"product": "Core", "cf_status_firefox131": "---", "resolution": "", "last_change_time": "2023-07-10T06:19:48Z", "component": "mozglue", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "id": 1744421}]}, "js::PrivateScriptData::gcthings": {"tc_rank": 167, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"last_change_time": "2024-09-24T16:22:48Z", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 719114, "component": "JavaScript: GC", "product": "Core", "resolution": ""}]}, "js::gc::FreeSpan::allocate": {"tc_rank": 168, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "component": "JavaScript: GC", "id": 1864087, "cf_status_firefox131": "---", "resolution": "", "last_change_time": "2023-11-30T13:49:56Z", "product": "Core", "cf_tracking_firefox131": "---"}]}, "js::gc::StoreBuffer::CellPtrEdge::trace": {"tc_rank": 169, "crash_count": 4, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"component": "JavaScript: GC", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1865753, "resolution": "", "cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2023-12-13T16:07:57Z"}]}, "libgallium_dri.so": {"tc_rank": 170, "crash_count": 4, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "memset | MaybePoison": {"tc_rank": 171, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"component": "mozglue", "resolution": "", "product": "Core", "cf_status_firefox132": "---", "last_change_time": "2024-08-05T06:49:45Z", "id": 1844401, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---"}]}, "mozilla::detail::InvalidArrayIndex_CRASH | nsTArray_Impl::ElementAt | nsWifiMonitor::CallWifiListeners": {"tc_rank": 172, "crash_count": 4, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "affected", "component": "DOM: Geolocation", "id": 1917201, "cf_status_firefox131": "fix-optional", "resolution": "", "last_change_time": "2024-09-17T15:22:50Z", "product": "Core", "cf_tracking_firefox131": "---"}]}, "mozilla::dom::AbstractRange::UpdateCommonAncestorIfNecessary": {"tc_rank": 173, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"id": 1703040, "cf_status_firefox131": "---", "component": "DOM: Selection", "resolution": "", "last_change_time": "2024-08-20T02:25:19Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}]}, "mozilla::dom::ClientSource::SetController": {"tc_rank": 174, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"product": "Core", "cf_tracking_firefox131": "---", "component": "DOM: Service Workers", "cf_status_firefox131": "---", "id": 1462077, "cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2019-01-19T23:16:36Z"}, {"cf_status_firefox132": "---", "last_change_time": "2019-02-12T22:45:43Z", "resolution": "FIXED", "component": "DOM: Service Workers", "cf_status_firefox131": "---", "id": 1469873, "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_tracking_firefox131": "---", "product": "Core", "last_change_time": "2020-06-02T06:36:20Z", "resolution": "FIXED", "cf_status_firefox132": "---", "id": 1535699, "component": "DOM: Service Workers", "cf_status_firefox131": "---"}, {"component": "Privacy: Anti-Tracking", "cf_status_firefox131": "---", "id": 1743236, "cf_status_firefox132": "---", "last_change_time": "2021-11-30T17:15:48Z", "resolution": "FIXED", "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_status_firefox132": "---", "resolution": "", "last_change_time": "2024-07-29T20:20:17Z", "component": "DOM: Service Workers", "cf_status_firefox131": "---", "id": 1880012, "product": "Core", "cf_tracking_firefox131": "---"}]}, "mozilla::dom::Promise::CreateInfallible | mozilla::dom::streams_abstract::SetUpReadableByteStreamController": {"tc_rank": 175, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "mozilla::image::DecodePool::DecodePool": {"tc_rank": 176, "crash_count": 4, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"cf_status_firefox131": "---", "resolution": "FIXED", "product": "Core", "last_change_time": "2015-11-10T08:44:05Z", "id": 1219501, "cf_tracking_firefox131": "---", "component": "Graphics: ImageLib", "cf_status_firefox132": "---"}, {"cf_status_firefox131": "---", "resolution": "FIXED", "product": "Core", "last_change_time": "2018-02-20T15:28:03Z", "id": 1436247, "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "Graphics: ImageLib"}, {"resolution": "", "cf_status_firefox131": "---", "product": "Core", "component": "Graphics: ImageLib", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "id": 1840159, "last_change_time": "2023-07-04T02:54:05Z"}]}, "nsObserverService::EnsureValidCall | nsObserverService::RemoveObserver | LocalesChangedObserver::Unregister": {"tc_rank": 177, "crash_count": 4, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"id": 1824697, "cf_status_firefox131": "---", "component": "Widget: Win32", "resolution": "", "last_change_time": "2023-03-27T13:56:51Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}]}, "osclientcerts_static::backend_macos::Key::sign_internal": {"tc_rank": 178, "crash_count": 4, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "shutdownhang | __CFRunLoopServiceMachPort": {"tc_rank": 179, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": [{"id": 1610213, "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "General", "last_change_time": "2024-07-10T12:21:45Z", "resolution": "", "cf_status_firefox131": "---", "product": "Core"}]}, "shutdownhang | memcpy | FontFileReference::ReadIntoBuffer": {"tc_rank": 180, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "shutdownhang | mozilla::SpinEventLoopUntil | mozilla::net::CacheFileIOManager::Shutdown": {"tc_rank": 181, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "shutdownhang | mozilla::SpinEventLoopUntil(nsTSubstring const&, (anonymous namespace)::ParentImpl::ShutdownBackgroundThread()::$_0&&, nsIThread*) | (anonymous namespace)::ParentImpl::ShutdownBackgroundThread": {"tc_rank": 182, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "stackoverflow | BuildTextRunsScanner::ScanFrame": {"tc_rank": 183, "crash_count": 4, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "stackoverflow | OnThreadExit": {"tc_rank": 184, "crash_count": 4, "estimated_user_count": 4, "startup_percent": 0.0, "bugs": []}, "@0x0": {"tc_rank": 185, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"component": "Plug-ins", "last_change_time": "2022-05-16T19:51:10Z", "product": "Core Graveyard", "id": 436817, "resolution": "FIXED"}, {"component": "QuickTime (Apple)", "last_change_time": "2016-04-28T16:13:05Z", "id": 520650, "resolution": "INCOMPLETE", "product": "Plugins Graveyard"}, {"product": "External Software Affecting Firefox Graveyard", "id": 533520, "resolution": "FIXED", "component": "Flash (Adobe)", "last_change_time": "2022-09-09T17:12:14Z"}, {"resolution": "WORKSFORME", "id": 677400, "product": "Firefox for Android Graveyard", "last_change_time": "2011-09-07T15:01:27Z", "component": "General"}, {"resolution": "FIXED", "product": "Core", "component": "Audio/Video", "id": 846465, "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "cf_status_firefox132": "---", "last_change_time": "2013-03-29T05:38:16Z"}, {"product": "Core Graveyard", "id": 848659, "resolution": "WORKSFORME", "component": "Plug-ins", "last_change_time": "2022-05-16T19:51:10Z"}, {"cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "id": 977668, "last_change_time": "2014-06-19T22:30:22Z", "cf_status_firefox132": "---", "product": "Core", "resolution": "FIXED", "component": "Disability Access APIs"}, {"component": "JavaScript Engine", "resolution": "FIXED", "product": "Core", "last_change_time": "2015-03-09T12:23:12Z", "cf_status_firefox132": "---", "id": 1137050, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---"}, {"product": "Firefox for Android Graveyard", "resolution": "WONTFIX", "id": 1283068, "component": "General", "last_change_time": "2020-12-21T18:38:46Z"}, {"resolution": "INCOMPLETE", "product": "Core", "component": "DOM: Content Processes", "id": 1408752, "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "last_change_time": "2022-09-20T13:30:37Z", "cf_status_firefox132": "---"}]}, "AsyncShutdownTimeout | IOUtils: waiting for profileBeforeChange IO to complete | CrashMonitor: Writing notifications to file after receiving profile-before-change and awaiting all checkpoints written,SessionFile: Finish writing Session Restore data,Ses...": {"tc_rank": 186, "crash_count": 3, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"product": "Firefox", "resolution": "", "component": "Session Restore", "cf_tracking_firefox131": "---", "cf_status_firefox131": "---", "id": 1743674, "last_change_time": "2023-09-18T06:57:36Z", "cf_status_firefox132": "---"}]}, "AsyncShutdownTimeout | Places Clients shutdown | Interactions.sys.mjs:: store": {"tc_rank": 187, "crash_count": 3, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "CF_IS_OBJC": {"tc_rank": 188, "crash_count": 3, "estimated_user_count": 1, "startup_percent": 0.0, "bugs": [{"cf_status_firefox131": "---", "id": 1898774, "component": "DOM: Device Interfaces", "resolution": "", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2024-06-17T14:59:31Z", "product": "Core"}, {"resolution": "", "cf_tracking_firefox131": "---", "last_change_time": "2024-05-24T16:18:54Z", "cf_status_firefox132": "---", "cf_status_firefox131": "---", "id": 1898776, "component": "Widget: Cocoa", "product": "Core"}, {"component": "Widget: Cocoa", "cf_status_firefox131": "---", "id": 1902057, "last_change_time": "2024-07-01T02:13:17Z", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "FIXED", "product": "Core"}]}, "EnterBaseline": {"tc_rank": 189, "crash_count": 3, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": [{"resolution": "FIXED", "last_change_time": "2013-06-26T00:43:29Z", "cf_status_firefox132": "---", "id": 858022, "component": "JavaScript Engine", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "product": "Core"}, {"cf_status_firefox131": "---", "component": "JavaScript Engine", "id": 858032, "cf_status_firefox132": "---", "last_change_time": "2024-09-22T12:18:48Z", "resolution": "", "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_status_firefox131": "---", "component": "JavaScript Engine", "id": 858083, "cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2013-10-18T23:19:21Z", "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_tracking_firefox131": "---", "product": "Core", "id": 863685, "component": "JavaScript Engine", "cf_status_firefox131": "---", "resolution": "WORKSFORME", "last_change_time": "2014-01-09T14:53:19Z", "cf_status_firefox132": "---"}, {"cf_status_firefox131": "---", "component": "JavaScript Engine: JIT", "id": 935322, "cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2016-09-02T13:05:43Z", "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_status_firefox131": "---", "component": "JavaScript Engine", "id": 935491, "cf_status_firefox132": "---", "resolution": "WORKSFORME", "last_change_time": "2013-11-22T14:28:19Z", "product": "Core", "cf_tracking_firefox131": "---"}, {"product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2015-02-26T05:53:35Z", "component": "JavaScript Engine: JIT", "cf_status_firefox131": "---", "id": 947661}, {"resolution": "FIXED", "last_change_time": "2016-09-02T13:05:36Z", "cf_status_firefox132": "---", "id": 947703, "component": "JavaScript Engine: JIT", "cf_status_firefox131": "---", "cf_tracking_firefox131": "---", "product": "Core"}, {"id": 1053692, "cf_status_firefox131": "---", "component": "JavaScript Engine: JIT", "last_change_time": "2016-09-02T13:05:25Z", "resolution": "FIXED", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}, {"last_change_time": "2016-09-02T13:05:14Z", "resolution": "WORKSFORME", "cf_status_firefox132": "---", "id": 1111629, "cf_status_firefox131": "---", "component": "Untriaged", "cf_tracking_firefox131": "---", "product": "Firefox"}, {"product": "Core", "cf_tracking_firefox131": "---", "component": "JavaScript Engine", "cf_status_firefox131": "---", "id": 1192673, "cf_status_firefox132": "---", "resolution": "INCOMPLETE", "last_change_time": "2015-11-16T18:53:41Z"}, {"cf_status_firefox132": "---", "last_change_time": "2016-03-26T02:12:15Z", "resolution": "FIXED", "component": "JavaScript Engine: JIT", "cf_status_firefox131": "---", "id": 1247312, "product": "Core", "cf_tracking_firefox131": "---"}, {"component": "JavaScript Engine: JIT", "cf_status_firefox131": "---", "id": 1268025, "cf_status_firefox132": "---", "last_change_time": "2016-05-09T17:36:32Z", "resolution": "WORKSFORME", "product": "Core", "cf_tracking_firefox131": "---"}, {"product": "Firefox for Android Graveyard", "component": "General", "id": 1286522, "resolution": "WORKSFORME", "last_change_time": "2020-12-21T18:38:46Z"}, {"cf_status_firefox132": "---", "last_change_time": "2018-05-14T21:31:49Z", "resolution": "WORKSFORME", "cf_status_firefox131": "---", "component": "JavaScript Engine", "id": 1293188, "product": "Core", "cf_tracking_firefox131": "---"}, {"product": "Core", "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "resolution": "INCOMPLETE", "last_change_time": "2018-05-14T21:37:54Z", "component": "JavaScript Engine: JIT", "cf_status_firefox131": "---", "id": 1409978}, {"id": 1420487, "component": "JavaScript Engine: JIT", "cf_status_firefox131": "---", "resolution": "INVALID", "last_change_time": "2017-12-04T17:31:17Z", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "product": "Core"}, {"cf_status_firefox132": "---", "resolution": "FIXED", "last_change_time": "2023-06-27T12:47:38Z", "cf_status_firefox131": "---", "component": "JavaScript Engine", "id": 1839669, "product": "Core", "cf_tracking_firefox131": "---"}, {"cf_tracking_firefox131": "---", "product": "Core", "id": 1841777, "cf_status_firefox131": "---", "component": "JavaScript Engine", "last_change_time": "2023-07-05T19:39:42Z", "resolution": "INVALID", "cf_status_firefox132": "---"}, {"last_change_time": "2015-02-26T05:53:26Z", "id": 952321, "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "component": "JavaScript Engine", "product": "Core", "cf_status_firefox131": "---", "resolution": "FIXED"}]}, "JS::Value::isMagic": {"tc_rank": 190, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"id": 787667, "cf_tracking_firefox131": "---", "cf_status_firefox132": "---", "component": "JavaScript Engine", "last_change_time": "2013-01-11T05:58:53Z", "product": "Core", "resolution": "FIXED", "cf_status_firefox131": "---"}, {"resolution": "FIXED", "cf_status_firefox131": "---", "product": "Core", "id": 1572051, "cf_tracking_firefox131": "---", "component": "JavaScript Engine: JIT", "cf_status_firefox132": "---", "last_change_time": "2022-01-10T13:13:44Z"}]}, "JSContext::realm": {"tc_rank": 191, "crash_count": 3, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "JSJitInfo::type": {"tc_rank": 192, "crash_count": 3, "estimated_user_count": 1, "startup_percent": 1.0, "bugs": []}, "OOM | large | GlyphBufferAzure::AddCapacity": {"tc_rank": 193, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": []}, "OOM | large | NS_ABORT_OOM | nsTSubstring::AllocFailed | CopyASCIItoUTF16 | mozilla::dom::CharacterData::GetData": {"tc_rank": 194, "crash_count": 3, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "OOM | large | NS_ABORT_OOM | nsTSubstring::AllocFailed | nsTSubstring::GetMutableData | IPC::ParamTraits >::Read::::operator() | IPC::ReadSequenceParam | IPC::ParamTraits >::Read | mozilla::ipc::ReadIPDLParam": {"tc_rank": 195, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": []}, "OOM | large | nsTArray_Impl::AppendElementInternal | nsTArray::AppendElement | mozilla::dom::PerformanceMainThread::AddImagesPendingRendering": {"tc_rank": 196, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": []}, "OOM | large | nsTArray_Impl::AppendElementInternal | nsTArray::AppendElement | mozilla::MediaTrackDemuxer::SamplesHolder::AppendSample": {"tc_rank": 197, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"cf_status_firefox132": "---", "resolution": "", "last_change_time": "2024-07-31T18:53:44Z", "component": "Audio/Video: Playback", "cf_status_firefox131": "---", "id": 1851054, "product": "Core", "cf_tracking_firefox131": "---"}]}, "OOM | large | sk_malloc_flags": {"tc_rank": 198, "crash_count": 3, "estimated_user_count": 2, "startup_percent": 0.0, "bugs": []}, "OOM | unknown | NS_ABORT_OOM | XPCJSContext::Initialize": {"tc_rank": 199, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.3333333333333333, "bugs": [{"resolution": "WONTFIX", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2020-02-28T19:00:14Z", "id": 1615310, "cf_status_firefox131": "---", "component": "JavaScript Engine", "product": "Core"}]}, "PtrInfo::WasTraversed": {"tc_rank": 200, "crash_count": 3, "estimated_user_count": 3, "startup_percent": 0.0, "bugs": [{"product": "Core", "id": 500105, "cf_status_firefox131": "---", "component": "Cycle Collector", "resolution": "", "cf_status_firefox132": "---", "cf_tracking_firefox131": "---", "last_change_time": "2023-12-13T15:58:37Z"}]}}}
\ No newline at end of file
diff --git a/buildid_changeset.html b/buildid_changeset.html
deleted file mode 100644
index c103dc0e..00000000
--- a/buildid_changeset.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
- Build ID <-> Changeset
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/buildid_changeset.js b/buildid_changeset.js
deleted file mode 100644
index ff7b3ad2..00000000
--- a/buildid_changeset.js
+++ /dev/null
@@ -1,235 +0,0 @@
-function parseBuildID(buildID) {
- return {
- year: Number(buildID.substring(0, 4)),
- month: Number(buildID.substring(4, 6)),
- day: Number(buildID.substring(6, 8)),
- hour: Number(buildID.substring(8, 10)),
- minute: Number(buildID.substring(10, 12)),
- second: Number(buildID.substring(12, 14)),
- };
-}
-
-function compareBuildIDs(buildID1, buildID2) {
- let buildObj1 = parseBuildID(buildID1);
- let buildObj2 = parseBuildID(buildID2);
-
- if (buildObj1.year > buildObj2.year) {
- return 1;
- } else if (buildObj1.year < buildObj2.year) {
- return -1;
- }
-
- if (buildObj1.month > buildObj2.month) {
- return 1;
- } else if (buildObj1.month < buildObj2.month) {
- return -1;
- }
-
- if (buildObj1.day > buildObj2.day) {
- return 1;
- } else if (buildObj1.day < buildObj2.day) {
- return -1;
- }
-
- if (buildObj1.hour > buildObj2.hour) {
- return 1;
- } else if (buildObj1.hour < buildObj2.hour) {
- return -1;
- }
-
- if (buildObj1.minute > buildObj2.minute) {
- return 1;
- } else if (buildObj1.minute < buildObj2.minute) {
- return -1;
- }
-
- if (buildObj1.second > buildObj2.second) {
- return 1;
- } else if (buildObj1.second < buildObj2.second) {
- return -1;
- }
-
- return 0;
-}
-
-function toTwoDigits(num) {
- if (num < 10) {
- return "0" + num;
- }
-
- return num;
-}
-
-function fromBuildIDtoChangeset(buildID, channel = "nightly") {
- let buildObj = parseBuildID(buildID);
-
- let dirEnd;
- if (channel === "nightly") {
- dirEnd = "central";
- }
-
- let directory =
- "https://ftp.mozilla.org/pub/firefox/nightly/" +
- buildObj.year +
- "/" +
- toTwoDigits(buildObj.month) +
- "/" +
- buildObj.year +
- "-" +
- toTwoDigits(buildObj.month) +
- "-" +
- toTwoDigits(buildObj.day) +
- "-" +
- toTwoDigits(buildObj.hour) +
- "-" +
- toTwoDigits(buildObj.minute) +
- "-" +
- toTwoDigits(buildObj.second) +
- "-mozilla-" +
- dirEnd +
- "/";
-
- return fetch(directory)
- .then((response) => response.text())
- .then((data) => {
- let file = data.match(/firefox-\d+.0a[12].en-US.win32.txt/);
- if (!file) {
- file = data.match(/firefox-\d+.0a[12].en-US.linux-x86_64.txt/);
- }
- if (file && file.length == 1) {
- return file[0];
- } else {
- throw new Error(
- "Couldn't find *.win32.txt or *.linux-x86_64.txt file."
- );
- }
- })
- .then((file) => fetch(directory + file))
- .then((response) => response.text())
- .then((data) => {
- let lines = data.split("\n");
- lines = lines.map((line) => line.replace("\r", ""));
- let buildIDfromFile = lines[0];
- if (buildID != buildIDfromFile) {
- throw new Error("Unexpected error: wrong build ID in directory.");
- }
- return lines[1];
- });
-}
-
-function getRevFromChangeset(changeset, channel = "nightly") {
- let re;
- if (channel === "nightly") {
- re = /https:\/\/hg.mozilla.org\/mozilla-central\/rev\/([A-Za-z0-9]+)/;
- }
- let result = re.exec(changeset);
- return result[1];
-}
-
-function getChangesetDate(changeset, channel = "nightly") {
- let baseURL;
- if (channel === "nightly") {
- baseURL = "https://hg.mozilla.org/mozilla-central";
- }
-
- return fetch(baseURL + "/json-rev/" + changeset)
- .then((response) => response.json())
- .then((json_rev) => new Date(json_rev["pushdate"][0] * 1000));
-}
-
-function findFirstBuildIDInSet(buildIDs, date, i = 0) {
- return fromBuildIDtoChangeset(buildIDs[i])
- .then((buildChangeset) =>
- getChangesetDate(getRevFromChangeset(buildChangeset))
- )
- .then((buildDate) => {
- if (buildDate >= date) {
- return buildIDs[i];
- } else {
- return findFirstBuildIDInSet(buildIDs, date, i + 1);
- }
- });
-}
-
-function findFirstBuildID(date, year = null, month = null) {
- // Who knows where Firefox is built, so give the build ID some slack.
- let possibleDate = new Date(date.getTime());
- possibleDate.setUTCHours(possibleDate.getUTCHours() - 9);
- let possibleBuildID =
- "" +
- possibleDate.getUTCFullYear() +
- toTwoDigits(possibleDate.getUTCMonth() + 1) +
- toTwoDigits(possibleDate.getUTCDate()) +
- toTwoDigits(possibleDate.getUTCHours()) +
- toTwoDigits(possibleDate.getUTCMinutes()) +
- toTwoDigits(possibleDate.getUTCSeconds());
-
- if (year == null) {
- year = possibleDate.getUTCFullYear();
- month = possibleDate.getUTCMonth() + 1;
- }
-
- return fetch(
- "https://ftp.mozilla.org/pub/firefox/nightly/" +
- year +
- "/" +
- toTwoDigits(month) +
- "/"
- )
- .then((response) => response.text())
- .then((data) => {
- let re = />(\d+)-(\d\d)-(\d\d)-(\d\d)-(\d\d)-(\d\d)-mozilla-central\/ {
- if (buildIDs.length === 0) {
- return null;
- }
-
- return findFirstBuildIDInSet(buildIDs, date);
- })
- .then((rev) => {
- if (!rev) {
- let nextYear = month + 1 == 13 ? year + 1 : year;
- let nextMonth = month + 1;
- if (nextMonth == 13) {
- nextMonth = 1;
- }
-
- if (
- nextYear > new Date().getUTCFullYear() ||
- (nextYear == new Date().getUTCFullYear() &&
- nextMonth > new Date().getUTCMonth() + 1)
- ) {
- return null;
- }
-
- return findFirstBuildID(date, nextYear, nextMonth);
- }
-
- return rev;
- });
-}
-
-function getBuildID(changeset) {
- return getChangesetDate(changeset).then((date) => findFirstBuildID(date));
-}
diff --git a/buildid_changeset_page.js b/buildid_changeset_page.js
deleted file mode 100644
index f000b9cd..00000000
--- a/buildid_changeset_page.js
+++ /dev/null
@@ -1,26 +0,0 @@
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-onLoad.then(function () {
- document.getElementById("getChangeset").onclick = function () {
- // e.g. 20161001030430
- fromBuildIDtoChangeset(document.getElementById("buildID").value).then(
- (changeset) =>
- (document.getElementById("getChangesetResult").textContent = changeset)
- );
- };
-
- document.getElementById("getBuildID").onclick = function () {
- // e.g. 87cd291d2db6
- // 1: Find date of the changeset
- // 2: Find first build ID that is greater than the date of the changeset
- // 3: Get the changeset for the build ID found in (2), if it's older than changeset, go to the next build.
- getBuildID(document.getElementById("changeset").value).then(
- (buildID) =>
- (document.getElementById("getBuildIDResult").textContent = buildID
- ? buildID
- : "Not shipped yet.")
- );
- };
-});
diff --git a/channels_diff.html b/channels_diff.html
deleted file mode 100644
index 73c85c91..00000000
--- a/channels_diff.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
- Analyze distribution
-
-
-
-
-
-
-
-
-
-
-
-
-
- Percentage in nightly |
- Percentage in beta |
- Percentage in release |
-
-
-
-
-
diff --git a/channels_diff.js b/channels_diff.js
deleted file mode 100644
index fb36f2bb..00000000
--- a/channels_diff.js
+++ /dev/null
@@ -1,224 +0,0 @@
-let options = {
- property: {
- value: null,
- type: "option",
- },
- value: {
- value: null,
- type: "option",
- },
-};
-
-function getOption(name) {
- return options[name].value;
-}
-
-function getOptionType(name) {
- return options[name].type;
-}
-
-function setOption(name, value) {
- return (options[name].value = value);
-}
-
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function setURL() {
- let url = new URL(location.href);
-
- let property = getOption("property");
- let value = getOption("value");
- if (!property) {
- url.search = "";
- } else if (!value) {
- url.search = "?property=" + property;
- } else {
- url.search = "?property=" + property + "&value=" + value;
- }
-
- history.replaceState({}, document.title, url.href);
-}
-
-function populateTable() {
- let property = getOption("property");
- let value = getOption("value");
- if (!property || !value) {
- return;
- }
-
- let channels = ["nightly", "beta", "release"];
-
- let results = {};
-
- Promise.all(
- channels.map((channel, index) =>
- correlations
- .getChannelsPercentage("Firefox", channel, property, value)
- .then((result) => (results[channel] = result))
- )
- ).then(() => {
- let table = document.getElementById("table");
- while (table.rows.length > 1) {
- table.deleteRow(table.rows.length - 1);
- }
-
- let row = table.insertRow(table.rows.length);
-
- channels.forEach((channel, index) => {
- let cell = row.insertCell(index);
- cell.appendChild(
- document.createTextNode(
- correlations.toPercentage(
- (results[channel] && results[channel].p) || 0
- ) + " %"
- )
- );
- });
-
- let svgElem = document.getElementById("image");
-
- d3.select(svgElem).selectAll("*").remove();
-
- let margin = { top: 20, right: 300, bottom: 70, left: 300 };
- let width = svgElem.getAttribute("width") - margin.left - margin.right;
- let height = svgElem.getAttribute("height") - margin.top - margin.bottom;
-
- let x = d3.scale.ordinal().rangeRoundBands([0, width], 0.05);
- let y = d3.scale.linear().range([height, 0]);
-
- let color = d3.scale.ordinal().range(["black", "blue", "red", "orange"]);
-
- let xAxis = d3.svg.axis().scale(x).orient("bottom");
-
- let yAxis = d3.svg.axis().scale(y).orient("left").ticks(10);
-
- var svg = d3
- .select(svgElem)
- .attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom)
- .append("g")
- .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
-
- let data = channels.map((channel) => {
- return {
- channel: channel,
- value: ((results[channel] && results[channel].p) || 0) * 100,
- };
- });
-
- x.domain(channels);
- y.domain([
- 0,
- d3.max(data, function (d) {
- return d.value;
- }),
- ]);
-
- svg
- .append("g")
- .attr("class", "x axis")
- .attr("transform", "translate(27," + height + ")")
- .call(xAxis)
- .selectAll("text")
- .style("text-anchor", "end")
- .attr("dx", "-.8em")
- .attr("dy", "-.55em")
- .attr("transform", "rotate(-90)");
-
- svg
- .append("g")
- .attr("class", "y axis")
- .call(yAxis)
- .append("text")
- .attr("transform", "rotate(-90)")
- .attr("y", 3)
- .attr("dy", ".71em")
- .style("text-anchor", "end")
- .text("Percentage of users (%)");
-
- svg
- .selectAll("bar")
- .data(data)
- .enter()
- .append("rect")
- .style("fill", (d) => color(d.channel))
- .attr("x", function (d) {
- return 27 + x(d.channel);
- })
- .attr("width", x.rangeBand())
- .attr("y", function (d) {
- return y(d.value);
- })
- .attr("height", function (d) {
- return height - y(d.value);
- });
- });
-}
-
-function populateValueSelect() {
- let property = getOption("property");
- if (!property) {
- return;
- }
-
- correlations.getChannelsValues("Firefox", property).then((values) => {
- if ($("#value")[0].selectize) {
- $("#value")[0].selectize.destroy();
- }
-
- let $select = $("#value").selectize({
- valueField: "name",
- labelField: "name",
- searchField: "name",
- options: values.map((value) => {
- return { name: value };
- }),
- onChange: (value) => {
- setOption("value", value);
- setURL();
- populateTable();
- },
- });
-
- $select[0].selectize.setValue(getOption("value"));
- });
-}
-
-onLoad
- .then(() => correlations.getChannelsProperties("Firefox"))
- .then((props) => {
- let queryVars = new URL(location.href).search.substring(1).split("&");
-
- Object.keys(options).forEach(function (optionName) {
- for (let queryVar of queryVars) {
- if (queryVar.startsWith(optionName + "=")) {
- let option = queryVar.substring((optionName + "=").length).trim();
- setOption(optionName, decodeURIComponent(option));
- }
- }
- });
-
- let $select = $("#property").selectize({
- valueField: "name",
- labelField: "name",
- searchField: "name",
- options: props.map((prop) => {
- return { name: prop };
- }),
- onChange: (prop) => {
- if (prop != getOption("property")) {
- setOption("value", "");
- }
- setOption("property", prop);
- setURL();
- populateValueSelect();
- },
- });
-
- $select[0].selectize.setValue(getOption("property"));
- })
- .catch(function (err) {
- console.error(err);
- });
diff --git a/common_landings.html b/common_landings.html
deleted file mode 100644
index 01563c5f..00000000
--- a/common_landings.html
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
- Find common landings between channels
-
-
-
-
- Pushlog/regression range generator
-
- Nightly
-
-
-
-
-
- Beta
-
-
-
-
-
-
-
-
-
-
diff --git a/common_landings.js b/common_landings.js
deleted file mode 100644
index 258cedd6..00000000
--- a/common_landings.js
+++ /dev/null
@@ -1,216 +0,0 @@
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function dropdownDateToDaysDiff(val) {
- if (val === "one day") {
- return 1;
- } else if (val === "two days") {
- return 2;
- } else if (val === "three days") {
- return 3;
- } else if (val === "a week") {
- return 7;
- }
-
- throw new Exception("Unknown value " + val);
-}
-
-function dropdownBuildToVal(val) {
- if (val === "one build") {
- return 1;
- } else if (val === "two builds") {
- return 2;
- } else if (val === "three builds") {
- return 3;
- }
-
- throw new Exception("Unknown value " + val);
-}
-
-function betaBuildToTag(val) {
- return "FIREFOX_" + val.replace(".", "_") + "_RELEASE";
-}
-
-function subtractFromBetaBuild(version, val) {
- let major = version.substring(0, version.indexOf("b"));
- let betaBuild = version.substring(version.indexOf("b") + 1);
- return major + "b" + (Number(betaBuild) - val);
-}
-
-function checkIsBuildID(val) {
- let isBuildID = true;
-
- try {
- let res = parseBuildID(val);
- if (
- isNaN(res.year) ||
- isNaN(res.month) ||
- isNaN(res.day) ||
- isNaN(res.hour) ||
- isNaN(res.minute) ||
- isNaN(res.second) ||
- res.year < 2000 ||
- res.month < 0 ||
- res.month > 12 ||
- res.day < 0 ||
- res.day > 31 ||
- res.hour < 0 ||
- res.hour > 24
- ) {
- isBuildID = false;
- }
- } catch (ex) {
- isBuildID = false;
- }
-
- return isBuildID;
-}
-
-function getPushlogLink(channel) {
- let base;
- if (channel === "nightly") {
- base = "https://hg.mozilla.org/mozilla-central";
- }
-
- let firstAffected = document.getElementById(channel + "_first_affected")
- .value;
- if (firstAffected) {
- let isBuildID = checkIsBuildID(firstAffected);
-
- let startDateElem = document.getElementById(channel + "_days");
- let startDate = dropdownDateToDaysDiff(
- startDateElem.options[startDateElem.selectedIndex].value
- );
- let pushlogLinkElem = document.getElementById(channel + "_pushloglink");
-
- return new Promise(function (resolve, reject) {
- if (!isBuildID) {
- resolve(firstAffected);
- } else {
- fromBuildIDtoChangeset(firstAffected, channel).then((changesetURL) =>
- resolve(getRevFromChangeset(changesetURL, channel))
- );
- }
- }).then((changeset) =>
- getChangesetDate(changeset, channel).then((date) => {
- date.setDate(date.getDate() - startDate);
- let year = date.getFullYear();
- let month = toTwoDigits(date.getMonth() + 1);
- let day = toTwoDigits(date.getDate());
- let pushlogLink =
- base +
- "/pushloghtml?startdate=" +
- year +
- "-" +
- month +
- "-" +
- day +
- "&tochange=" +
- changeset;
- pushlogLinkElem.textContent = pushlogLinkElem.href = pushlogLink;
- return pushlogLink;
- })
- );
- }
-
- return null;
-}
-
-function getCommonLandings() {
- let pushlog_link_promises = [];
-
- // Nightly
- let nightlyPushlogLink = getPushlogLink("nightly");
- if (nightlyPushlogLink) {
- pushlog_link_promises.push(nightlyPushlogLink);
- }
-
- // Beta
- let betaFirstAffected = document.getElementById("beta_first_affected").value;
- if (betaFirstAffected) {
- let betaStartBuildElem = document.getElementById("beta_builds");
- let betaStartBuild = subtractFromBetaBuild(
- betaFirstAffected,
- dropdownBuildToVal(
- betaStartBuildElem.options[betaStartBuildElem.selectedIndex].value
- )
- );
- let betaPushlogLink =
- "https://hg.mozilla.org/releases/mozilla-beta/pushloghtml?fromchange=" +
- betaBuildToTag(betaStartBuild) +
- "&tochange=" +
- betaBuildToTag(betaFirstAffected);
-
- let betaPushlogLinkElem = document.getElementById("beta_pushloglink");
- betaPushlogLinkElem.textContent = betaPushlogLinkElem.href = betaPushlogLink;
- pushlog_link_promises.push(Promise.resolve(betaPushlogLink));
- }
-
- return Promise.all(
- pushlog_link_promises.map((link_promise) =>
- link_promise.then((link) =>
- fetch(link)
- .then((response) => response.text())
- .then((html) => {
- let bugs = [];
-
- let result;
- let re = /Bug ([0-9]+)/gi;
- while ((result = re.exec(html)) !== null) {
- bugs.push(result[1]);
- }
-
- return bugs;
- })
- )
- )
- )
- .then((arrays) => {
- if (arrays.length === 0) {
- return [];
- }
-
- return arrays[0].filter((elem) => {
- let is_everywhere = true;
-
- for (let array of arrays.slice(1)) {
- is_everywhere &= array.includes(elem);
- }
-
- return is_everywhere;
- });
- })
- .then((bugs) => new Set(bugs));
-}
-
-onLoad.then(function () {
- document.getElementById("getCommonLandings").onclick = function () {
- // Clean old results.
- let results = document.getElementById("results");
-
- while (results.firstChild) {
- results.removeChild(results.firstChild);
- }
-
- results.textContent = "";
-
- getCommonLandings().then((bugs) => {
- if (bugs.size === 0) {
- results.textContent = "None";
- return;
- }
-
- let a = document.createElement("a");
- a.textContent = "List of common landings on Bugzilla";
- a.href = "https://bugzilla.mozilla.org/buglist.cgi?bug_id=";
- a.id = "buglist";
- results.appendChild(a);
-
- for (let bug of bugs) {
- let a = document.getElementById("buglist");
- a.href += bug + ",";
- }
- });
- };
-});
diff --git a/compare-betas.html b/compare-betas.html
deleted file mode 100644
index 51033aed..00000000
--- a/compare-betas.html
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- Compare Betas
-
-
-
-
-
-
- Signatures:
-
-
-
-
-
-
diff --git a/compare-betas.js b/compare-betas.js
deleted file mode 100644
index 0702bebc..00000000
--- a/compare-betas.js
+++ /dev/null
@@ -1,384 +0,0 @@
-let options = {
- beta1: {
- value: null,
- type: "option",
- },
- beta2: {
- value: null,
- type: "option",
- },
- product: {
- value: null,
- type: "option",
- },
-};
-
-function getOption(name) {
- return options[name].value;
-}
-
-function getOptionType(name) {
- return options[name].type;
-}
-
-function setOption(name, value) {
- return (options[name].value = value);
-}
-
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function dateToStr(date) {
- let month = "" + (date.getMonth() + 1);
- let day = "" + date.getDate();
- let year = date.getFullYear();
-
- if (month.length < 2) {
- month = "0" + month;
- }
-
- if (day.length < 2) {
- day = "0" + day;
- }
-
- return year + "-" + month + "-" + day;
-}
-
-function addDays(date, days) {
- let result = new Date(date);
- result.setDate(result.getDate() + days);
- return result;
-}
-
-function getBaseVersion(version) {
- return version.substring(0, version.indexOf(".0b"));
-}
-
-function getReleaseDate(version, build_id, release_history) {
- if (build_id) {
- // XXX: Assume release date is the build ID. Remove this
- // hack when https://bugzilla.mozilla.org/show_bug.cgi?id=1192197 is fixed.
- return new Date(
- build_id.substring(0, 4) +
- "-" +
- build_id.substring(4, 6) +
- "-" +
- build_id.substring(6, 8)
- );
- }
-
- if (!(version in release_history)) {
- return new Date();
- }
-
- return new Date(release_history[version]);
-}
-
-function getComparison() {
- if (!getOption("beta1") || !getOption("beta2")) {
- return;
- }
-
- let version1 = getOption("beta1");
- let version2 = getOption("beta2");
- let build_id1 = "";
- let build_id2 = "";
- if (version1.includes(" - ")) {
- let vals = version1.split(" - ");
- version1 = vals[0];
- build_id1 = vals[1];
- }
- if (version2.includes(" - ")) {
- let vals = version2.split(" - ");
- version2 = vals[0];
- build_id2 = vals[1];
- }
-
- fetch(
- "https://product-details.mozilla.org/1.0/firefox_history_development_releases.json"
- )
- .then((response) => response.json())
- .then((release_history) => {
- let date1 = dateToStr(
- getReleaseDate(version1, build_id1, release_history)
- );
- let date2 = dateToStr(
- getReleaseDate(version2, build_id2, release_history)
- );
-
- let url = new URL(location.href);
- url.search =
- "?product=" +
- getOption("product") +
- "&beta1=" +
- getOption("beta1") +
- "&beta2=" +
- getOption("beta2");
- history.replaceState({}, document.title, url.href);
-
- let signatureNumberElem = document.getElementById("signatureNumber");
- let signatureNumber = Number(signatureNumberElem.value);
- if (!signatureNumber || isNaN(signatureNumber)) {
- signatureNumber = 20;
- }
-
- document.getElementById("frame").src =
- "scomp.html?limit=" +
- signatureNumber +
- "&common=product%3D" +
- getOption("product") +
- "&p1=version%3D" +
- version1 +
- (build_id1 ? "%26build_id=" + build_id1 : "") +
- "%26date%3D%3E" +
- date1 +
- "&p2=version%3D" +
- version2 +
- (build_id2 ? "%26build_id=" + build_id2 : "") +
- "%26date%3D%3E" +
- date2;
-
- let total1, total2;
- Promise.all([
- fetch(
- "https://crash-stats.mozilla.org/api/SuperSearch/?product=" +
- getOption("product") +
- "&version=" +
- version1 +
- (build_id1 ? "&build_id=" + build_id1 : "") +
- "&_results_number=0&_facets_size=0" +
- "&date=>%3D" +
- date1
- )
- .then((response) => response.json())
- .then((results) => (total1 = results["total"] || 0)),
- fetch(
- "https://crash-stats.mozilla.org/api/SuperSearch/?product=" +
- getOption("product") +
- "&version=" +
- version2 +
- (build_id2 ? "&build_id=" + build_id2 : "") +
- "&_results_number=0&_facets_size=0" +
- "&date=>%3D" +
- date2
- )
- .then((response) => response.json())
- .then((results) => (total2 = results["total"] || 0)),
- ]).then(() => {
- let warning = "";
- if (total1 < total2 * 0.2) {
- warning =
- "WARNING: Number of crash reports for " +
- getOption("beta1") +
- " (" +
- total1 +
- ") are way lower than for " +
- getOption("beta2") +
- " (" +
- total2 +
- "); the comparison might be skewed.";
- } else if (total2 < total1 * 0.2) {
- warning =
- "WARNING: Number of crash reports for " +
- getOption("beta2") +
- " (" +
- total2 +
- ") are way lower than for " +
- getOption("beta1") +
- " (" +
- total1 +
- "); the comparison might be skewed.";
- }
- document.getElementById("warning").textContent = warning;
- });
- });
-}
-
-function compareBuildIDs(build_id1, build_id2) {
- let year1 = Number(build_id1.substring(0, 4));
- let year2 = Number(build_id2.substring(0, 4));
- if (year1 > year2) {
- return 1;
- } else if (year1 < year2) {
- return -1;
- }
-
- let month1 = Number(build_id1.substring(4, 6));
- let month2 = Number(build_id2.substring(4, 6));
- if (month1 > month2) {
- return 1;
- } else if (month1 < month2) {
- return -1;
- }
-
- let day1 = Number(build_id1.substring(6, 8));
- let day2 = Number(build_id2.substring(6, 8));
- if (day1 > day2) {
- return 1;
- } else if (day1 < day2) {
- return -1;
- }
-
- return 0;
-}
-
-function compareVersions(versionA, versionB) {
- let majorA = Number(versionA.substring(0, versionA.indexOf(".")));
- let majorB = Number(versionB.substring(0, versionB.indexOf(".")));
-
- if (majorA > majorB) {
- return 1;
- } else if (majorA < majorB) {
- return -1;
- }
-
- let minorA;
- let minorB;
- if (!versionA.includes(" - ")) {
- minorA = Number(versionA.substring(versionA.indexOf("b") + 1));
- } else {
- minorA = Number(
- versionA.substring(versionA.indexOf("b") + 1, versionA.indexOf(" "))
- );
- }
- if (!versionB.includes(" - ")) {
- minorB = Number(versionB.substring(versionB.indexOf("b") + 1));
- } else {
- minorB = Number(
- versionB.substring(versionB.indexOf("b") + 1, versionB.indexOf(" "))
- );
- }
-
- if (minorA > minorB) {
- return 1;
- } else if (minorA < minorB) {
- return -1;
- }
-
- let buildIDA = versionA.substring(versionA.indexOf(" - ") + 3);
- let buildIDB = versionB.substring(versionB.indexOf(" - ") + 3);
-
- return compareBuildIDs(buildIDA, buildIDB);
-}
-
-onLoad
- .then(() =>
- fetch(
- "https://product-details.mozilla.org/1.0/firefox_history_development_releases.json"
- )
- )
- .then((response) => response.json())
- .then((data) => {
- let versions = Object.keys(data);
-
- let rc = versions.find((version) => version.endsWith("b99"));
- if (rc) {
- return fetch(
- "https://crash-stats.mozilla.org/api/SuperSearch/?version=" +
- rc +
- "&product=Firefox&_facets=build_id&_results_number=0"
- )
- .then((response) => response.json())
- .then((data) => {
- return data["facets"]["build_id"]
- .map((elem) => rc + " - " + elem["term"])
- .concat(versions.filter((version) => !version.endsWith("b99")));
- });
- } else {
- return versions;
- }
- })
- .then((versions) => {
- return versions.sort(compareVersions);
- })
- .then((versions) => {
- // Only consider the latest 10 builds.
- if (versions.length > 10) {
- versions = versions.slice(versions.length - 10);
- }
-
- return versions;
- })
- .then((versions) => {
- let betas1 = document.getElementById("beta1");
- let betas2 = document.getElementById("beta2");
-
- for (let i = 0; i < versions.length; i++) {
- let version = versions[i];
-
- var opt = document.createElement("option");
- opt.value = opt.textContent = version;
-
- if (i != versions.length - 1) {
- betas1.appendChild(opt);
- }
-
- if (i != 0) {
- betas2.appendChild(opt.cloneNode(true));
- }
- }
-
- betas1.selectedIndex = betas1.options.length - 1;
- betas2.selectedIndex = betas2.options.length - 1;
- })
- .then(function () {
- let queryVars = new URL(location.href).search.substring(1).split("&");
-
- Object.keys(options).forEach(function (optionName) {
- let optionType = getOptionType(optionName);
- let elem = document.getElementById(optionName);
-
- for (let queryVar of queryVars) {
- if (queryVar.startsWith(optionName + "=")) {
- let option = queryVar.substring((optionName + "=").length).trim();
- setOption(optionName, option);
- }
- }
-
- if (optionType === "select") {
- if (getOption(optionName)) {
- elem.checked = getOption(optionName);
- }
-
- setOption(optionName, elem.checked);
- } else if (optionType === "option") {
- if (getOption(optionName)) {
- for (let i = 0; i < elem.options.length; i++) {
- if (
- elem.options[i].value ===
- decodeURIComponent(getOption(optionName))
- ) {
- elem.selectedIndex = i;
- break;
- }
- }
- }
-
- setOption(optionName, elem.options[elem.selectedIndex].value);
-
- elem.onchange = function () {
- setOption(optionName, elem.options[elem.selectedIndex].value);
- };
- } else if (optionType === "button") {
- if (getOption(optionName)) {
- elem.value = getOption(optionName);
- }
-
- setOption(optionName, elem.value.trim());
- } else {
- throw new Error("Unexpected option type.");
- }
-
- document.getElementById("compareButton").onclick = function () {
- getComparison();
- };
- });
-
- if (queryVars.length >= 2) {
- getComparison();
- }
- })
- .catch(function (err) {
- console.error(err);
- });
diff --git a/correlations.html b/correlations.html
deleted file mode 100644
index a332d38a..00000000
--- a/correlations.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- Signature Correlations
-
-
-
-
-
-
-
-
-
-
-
-
- Correlation results are now directly on crash-stats.
-
-
-
-
-
diff --git a/correlations.js b/correlations.js
deleted file mode 100644
index 0e778c72..00000000
--- a/correlations.js
+++ /dev/null
@@ -1,705 +0,0 @@
-var correlations = (() => {
- let correlationData = {};
-
- function sha1(str) {
- return crypto.subtle
- .digest("SHA-1", new TextEncoder("utf-8").encode(str))
- .then((hash) => hex(hash));
- }
-
- function hex(buffer) {
- let hexCodes = [];
- let view = new DataView(buffer);
-
- for (let i = 0; i < view.byteLength; i += 4) {
- // Using getUint32 reduces the number of iterations needed (we process 4 bytes each time).
- let value = view.getUint32(i);
- // toString(16) will give the hex representation of the number without padding.
- let stringValue = value.toString(16);
- // We use concatenation and slice for padding.
- let padding = "00000000";
- let paddedValue = (padding + stringValue).slice(-padding.length);
- hexCodes.push(paddedValue);
- }
-
- // Join all the hex strings into one
- return hexCodes.join("");
- }
-
- function getDataURL(product) {
- if (product === "Firefox") {
- return "https://analysis-output.telemetry.mozilla.org/top-signatures-correlations/data/";
- } else if (product === "FennecAndroid") {
- return "https://analysis-output.telemetry.mozilla.org/top-fennec-signatures-correlations/data/";
- } else {
- throw new Error("Unknown product: " + product);
- }
- }
-
- function loadChannelsData(product) {
- if (correlationData[product]) {
- return Promise.resolve();
- }
-
- return fetch(getDataURL(product) + "all.json.gz")
- .then((response) => response.json())
- .then((totals) => {
- correlationData[product] = {
- date: totals["date"],
- };
-
- let channels = ["release", "beta", "nightly"];
- if (product === "Firefox") {
- channels.push("esr");
- }
-
- for (let ch of channels) {
- correlationData[product][ch] = {
- total: totals[ch],
- signatures: {},
- };
- }
- });
- }
-
- function loadCorrelationData(signature, channel, product) {
- return loadChannelsData(product)
- .then(() => {
- if (signature in correlationData[product][channel]["signatures"]) {
- return;
- }
-
- return sha1(signature)
- .then((sha1signature) =>
- fetch(
- getDataURL(product) + channel + "/" + sha1signature + ".json.gz"
- )
- )
- .then((response) => response.json())
- .then((data) => {
- correlationData[product][channel]["signatures"][signature] = data;
- });
- })
- .catch(() => {})
- .then(() => correlationData);
- }
-
- function getAnalysisDate(product) {
- return loadChannelsData(product)
- .then(() => correlationData[product]["date"])
- .catch(() => "");
- }
-
- function itemToLabel(item) {
- return Object.getOwnPropertyNames(item)
- .map((key) => key + " = " + item[key])
- .join(" ∧ ");
- }
-
- function toPercentage(num) {
- let result = (num * 100).toFixed(2);
-
- if (result == "100.00") {
- return "100.0";
- }
-
- if (result.substring(0, result.indexOf(".")).length == 1) {
- return "0" + result;
- }
-
- return result;
- }
-
- function confidenceInterval(count1, total1, count2, total2) {
- let prop1 = count1 / total1;
- let prop2 = count2 / total2;
- let diff = prop1 - prop2;
-
- // Wald 95% confidence interval for the difference between the proportions.
- let standard_error = Math.sqrt(
- (prop1 * (1 - prop1)) / total1 + (prop2 * (1 - prop2)) / total2
- );
- let ci = [diff - 1.96 * standard_error, diff + 1.96 * standard_error];
-
- // Yates continuity correction for the confidence interval.
- let correction = 0.5 * (1.0 / total1 + 1.0 / total2);
-
- return [ci[0] - correction, ci[1] + correction];
- }
-
- function sortCorrelationData(correlationData, total_reference, total_group) {
- return correlationData.sort((a, b) => {
- let rule_a_len = Object.keys(a.item).length;
- let rule_b_len = Object.keys(b.item).length;
-
- if (rule_a_len < rule_b_len) {
- return -1;
- }
-
- if (rule_a_len > rule_b_len) {
- return 1;
- }
-
- // Then, sort by percentage difference between signature and
- // overall (using the lower endpoint of the confidence interval
- // of the difference).
- let ciA = null;
- if (a.prior) {
- // If one of the two elements has a prior that alters a rule's
- // distribution significantly, sort by the percentage of the rule
- // given the prior.
- ciA = confidenceInterval(
- a.prior.count_group,
- a.prior.total_group,
- a.prior.count_reference,
- a.prior.total_reference
- );
- } else {
- ciA = confidenceInterval(
- a.count_group,
- total_group,
- a.count_reference,
- total_reference
- );
- }
-
- let ciB = null;
- if (b.prior) {
- ciB = confidenceInterval(
- b.prior.count_group,
- b.prior.total_group,
- b.prior.count_reference,
- b.prior.total_reference
- );
- } else {
- ciB = confidenceInterval(
- b.count_group,
- total_group,
- b.count_reference,
- total_reference
- );
- }
-
- return (
- Math.min(Math.abs(ciB[0]), Math.abs(ciB[1])) -
- Math.min(Math.abs(ciA[0]), Math.abs(ciA[1]))
- );
- });
- }
-
- function itemEqual(item1, item2) {
- let keys1 = Object.keys(item1);
- let keys2 = Object.keys(item2);
-
- if (keys1.length !== keys2.length) {
- return false;
- }
-
- for (let prop of keys1.concat(keys2)) {
- let val1 = item1[prop];
- let val2 = item2[prop];
-
- if (typeof val1 === "string") {
- val1 = val1.toLowerCase();
- }
-
- if (typeof val2 === "string") {
- val2 = val2.toLowerCase();
- }
-
- if (item1[prop] !== item2[prop]) {
- return false;
- }
- }
-
- return true;
- }
-
- let channelsData = {};
-
- function loadChannelsDifferencesData(product) {
- return fetch(
- "https://analysis-output.telemetry.mozilla.org/channels-differences/data/differences.json.gz"
- )
- .then((response) => response.json())
- .then((data) => (channelsData = data));
- }
-
- function socorroToTelemetry(socorroKey, socorroValue) {
- let valueMapping = {
- cpu_arch: {
- values: {
- amd64: "x86-64",
- },
- },
- os_arch: {
- values: {
- amd64: "x86-64",
- },
- },
- platform: {
- key: "os_name",
- values: {
- "Mac OS X": "Darwin",
- "Windows NT": "Windows_NT",
- },
- },
- platform_version: {
- key: "os_version",
- },
- platform_pretty_version: {
- key: "os_pretty_version",
- values: {
- "Windows 10": "10.0",
- "Windows 8.1": "6.3",
- "Windows 8": "6.2",
- "Windows 7": "6.1",
- "Windows Server 2003": "5.2",
- "Windows XP": "5.1",
- "Windows 2000": "5.0",
- "Windows NT": "4.0",
- },
- },
- e10s_enabled: {
- key: "e10s_enabled",
- values: {
- 1: true,
- },
- },
- dom_ipc_enabled: {
- key: "e10s_enabled",
- values: {
- 1: true,
- },
- },
- '"D2D1.1+" in app_notes': {
- key: "d2d_enabled",
- },
- '"D2D1.1-" in app_notes': {
- key: "d2d_enabled",
- values: (v) => !v,
- },
- '"DWrite+" in app_notes': {
- key: "d_write_enabled",
- },
- '"DWrite-" in app_notes': {
- key: "d_write_enabled",
- values: (v) => !v,
- },
- adapter_vendor_id: {
- values: {
- "NVIDIA Corporation": "0x10de",
- "Intel Corporation": "0x8086",
- },
- },
- "CPU Info": {
- key: "cpu_info",
- },
- };
-
- let key, value;
- if (socorroKey in valueMapping) {
- let mapping = valueMapping[socorroKey];
- key = mapping["key"] || socorroKey;
- if (mapping["values"]) {
- if (typeof mapping["values"] === "function") {
- value = mapping["values"](socorroValue);
- } else {
- value = mapping["values"][socorroValue];
- }
- }
- }
-
- if (typeof key === "undefined") {
- key = socorroKey;
- }
-
- if (typeof value === "undefined") {
- value = socorroValue;
- }
-
- return [key, value];
- }
-
- function getChannelPercentage(channel, socorroItem) {
- // console.log('socorro')
- // console.log(socorroItem)
-
- let translatedItem = {};
- for (let prop of Object.keys(socorroItem)) {
- let [telemetryProp, telemetryValue] = socorroToTelemetry(
- prop,
- socorroItem[prop]
- );
- //console.log(telemetryProp + ' - ' + telemetryValue)
- translatedItem[telemetryProp] = telemetryValue;
- }
-
- // console.log('translated')
- // console.log(translatedItem)
-
- let found = channelsData[channel].find((longitudinalElem) =>
- itemEqual(longitudinalElem.item, translatedItem)
- );
- if (!found) {
- return 0;
- }
-
- // console.log('telemetry ' + channel)
- // console.log(found)
-
- /*console.log('cpu_info');
- console.log(channelsData[channel].filter(longitudinalElem => Object.keys(longitudinalElem.item).indexOf('cpu_info') != -1));*/
-
- return found.p;
- }
-
- function rerank(textElem, signature, channel, channel_target, product) {
- textElem.textContent = "";
-
- return loadChannelsDifferencesData(product)
- .then(() => loadCorrelationData(signature, channel, product))
- .then((data) => {
- if (!(product in data)) {
- textElem.textContent =
- "No correlation data was generated for the '" +
- product +
- "' product.";
- return [];
- }
-
- if (
- !(signature in data[product][channel]["signatures"]) ||
- !data[product][channel]["signatures"][signature]["results"]
- ) {
- textElem.textContent =
- 'No correlation data was generated for the signature "' +
- signature +
- '" on the ' +
- channel +
- " channel, for the '" +
- product +
- "' product.";
- return [];
- }
-
- let correlationData =
- data[product][channel]["signatures"][signature]["results"];
-
- let total_reference = data[product][channel].total;
- let total_group = data[product][channel]["signatures"][signature].total;
-
- return correlationData
- .filter((socorroElem) => Object.keys(socorroElem.item).length == 1)
- .filter(
- (socorroElem) =>
- getChannelPercentage(channel, socorroElem.item) != 0
- )
- .sort((a, b) => {
- //return getChannelPercentage(channel_target, b.item) / getChannelPercentage(channel, b.item) - getChannelPercentage(channel_target, a.item) / getChannelPercentage(channel, a.item);
- return b.count_group / total_group - a.count_group / total_group;
- })
- .map((elem) => {
- return {
- property: itemToLabel(elem.item),
- in_signature: toPercentage(elem.count_group / total_group),
- in_channel_target: getChannelPercentage(
- channel_target,
- elem.item
- ),
- in_channel: getChannelPercentage(channel, elem.item),
- };
- });
- });
- }
-
- function getChannelsProperties(product) {
- return loadChannelsDifferencesData(product)
- .then(() =>
- ["release", "beta", "nightly"].map((channel) =>
- channelsData[channel].map(
- (longitudinalElem) => Object.keys(longitudinalElem.item)[0]
- )
- )
- )
- .then((all_props_per_channel) =>
- [].concat.apply([], all_props_per_channel)
- )
- .then((all_props) => new Set(all_props))
- .then((props) => Array.from(props));
- }
-
- function getChannelsValues(product, property) {
- return loadChannelsDifferencesData(product)
- .then(() =>
- ["release", "beta", "nightly"].map((channel) =>
- channelsData[channel]
- .filter(
- (longitudinalElem) =>
- Object.keys(longitudinalElem.item).indexOf(property) != -1
- )
- .map((longitudinalElem) => longitudinalElem.item[property])
- )
- )
- .then((all_values_per_channel) =>
- [].concat.apply([], all_values_per_channel)
- )
- .then((all_values) => new Set(all_values))
- .then((values) => Array.from(values));
- }
-
- function getChannelsPercentage(product, channel, property, value) {
- return loadChannelsDifferencesData(product).then(() =>
- channelsData[channel].find(
- (longitudinalElem) =>
- Object.keys(longitudinalElem.item).indexOf(property) != -1 &&
- longitudinalElem.item[property] == value
- )
- );
- }
-
- function text(textElem, signature, channel, product, show_ci = false) {
- loadCorrelationData(signature, channel, product).then((data) => {
- textElem.textContent = "";
-
- if (!(product in data)) {
- textElem.textContent =
- "No correlation data was generated for the '" +
- product +
- "' product.";
- return;
- }
-
- if (
- !(signature in data[product][channel]["signatures"]) ||
- !data[product][channel]["signatures"][signature]["results"]
- ) {
- textElem.textContent =
- 'No correlation data was generated for the signature "' +
- signature +
- '" on the ' +
- channel +
- " channel, for the '" +
- product +
- "' product.";
- return;
- }
-
- let correlationData =
- data[product][channel]["signatures"][signature]["results"];
-
- let total_reference = data[product][channel].total;
- let total_group = data[product][channel]["signatures"][signature].total;
-
- textElem.textContent = sortCorrelationData(
- correlationData,
- total_reference,
- total_group
- ).reduce((prev, cur) => {
- let support_group = toPercentage(cur.count_group / total_group);
- let support_reference = toPercentage(
- cur.count_reference / total_reference
- );
- let support_diff = toPercentage(
- Math.abs(
- cur.count_group / total_group -
- cur.count_reference / total_reference
- )
- );
-
- let ci = confidenceInterval(
- cur.count_group,
- total_group,
- cur.count_reference,
- total_reference
- );
-
- let support_diff_incertezza = toPercentage(
- Math.abs(
- Math.abs(ci[0]) -
- Math.abs(
- cur.count_group / total_group -
- cur.count_reference / total_reference
- )
- )
- );
-
- let res =
- prev +
- "(" +
- support_group +
- "% in signature vs " +
- support_reference +
- "% overall, difference " +
- support_diff +
- "±" +
- support_diff_incertezza +
- "%) " +
- itemToLabel(cur.item);
-
- if (cur.prior) {
- let support_group_given_prior = toPercentage(
- cur.prior.count_group / cur.prior.total_group
- );
- let support_reference_given_prior = toPercentage(
- cur.prior.count_reference / cur.prior.total_reference
- );
- res +=
- " [" +
- support_group_given_prior +
- "% vs " +
- support_reference_given_prior +
- "% if " +
- itemToLabel(cur.prior.item) +
- "]";
- }
-
- return res + "\n";
- }, "");
-
- textElem.textContent +=
- "\n\nTop Words: " +
- data[product][channel]["signatures"][signature]["top_words"].join(", ");
- });
- }
-
- function graph(svgElem, signature, channel, product) {
- loadCorrelationData(signature, channel, product).then((data) => {
- d3.select(svgElem).selectAll("*").remove();
-
- if (
- !(product in data) ||
- !(signature in data[product][channel]["signatures"]) ||
- !data[product][channel]["signatures"][signature]["results"]
- ) {
- return;
- }
-
- let total_reference = data[product][channel].total;
- let total_group = data[product][channel]["signatures"][signature].total;
-
- let correlationData = data[product][channel]["signatures"][signature][
- "results"
- ].filter((elem) => Object.keys(elem.item).length <= 1);
- correlationData = sortCorrelationData(
- correlationData,
- total_reference,
- total_group
- );
- correlationData.reverse();
-
- let margin = { top: 20, right: 300, bottom: 30, left: 300 };
- let width = svgElem.getAttribute("width") - margin.left - margin.right;
- let height = svgElem.getAttribute("height") - margin.top - margin.bottom;
-
- let y0 = d3.scale.ordinal().rangeRoundBands([height, 0], 0.2, 0.5);
-
- let y1 = d3.scale.ordinal();
-
- let x = d3.scale.linear().range([0, width]);
-
- let color = d3.scale.ordinal().range(["blue", "red"]);
-
- let xAxis = d3.svg.axis().scale(x).tickSize(-height).orient("bottom");
-
- let yAxis = d3.svg.axis().scale(y0).orient("left");
-
- let svg = d3
- .select(svgElem)
- .attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom)
- .append("g")
- .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
-
- let options = [signature, "Overall"];
-
- correlationData.forEach((d) => {
- d.values = [
- { name: "Overall", value: d.count_reference / total_reference },
- { name: signature, value: d.count_group / total_group },
- ];
- });
-
- y0.domain(correlationData.map((d) => itemToLabel(d.item)));
- y1.domain(options).rangeRoundBands([0, y0.rangeBand()]);
- x.domain([0, 100]);
-
- svg
- .append("g")
- .attr("class", "x axis")
- .attr("transform", "translate(0," + height + ")")
- .call(xAxis);
-
- svg.append("g").attr("class", "y axis").call(yAxis);
-
- let bar = svg
- .selectAll(".bar")
- .data(correlationData)
- .enter()
- .append("g")
- .attr("class", "rect")
- .attr(
- "transform",
- (d) => "translate( 0," + y0(itemToLabel(d.item)) + ")"
- );
-
- let bar_enter = bar
- .selectAll("rect")
- .data((d) => d.values)
- .enter();
-
- bar_enter
- .append("rect")
- .attr("height", y1.rangeBand())
- .attr("y", (d) => y1(d.name))
- .attr("x", (d) => 0)
- .attr("value", (d) => d.name)
- .attr("width", (d) => x((d.value * 100).toFixed(2)))
- .style("fill", (d) => color(d.name));
-
- bar_enter
- .append("text")
- .attr("x", (d) => x((d.value * 100).toFixed(2)) + 5)
- .attr("y", (d) => y1(d.name) + y1.rangeBand() / 2)
- .attr("dy", ".35em")
- .text((d) => (d.value * 100).toFixed(2));
-
- let legend = svg
- .selectAll(".legend")
- .data(options.slice())
- .enter()
- .append("g")
- .attr("class", "legend")
- .attr(
- "transform",
- (d, i) => "translate(" + margin.right + "," + i * 20 + ")"
- );
-
- legend
- .append("rect")
- .attr("x", width - 18)
- .attr("width", 18)
- .attr("height", 18)
- .style("fill", color);
-
- legend
- .append("text")
- .attr("x", width - 24)
- .attr("y", 9)
- .attr("dy", ".35em")
- .style("text-anchor", "end")
- .text((d) => d);
- });
- }
-
- return {
- getAnalysisDate: getAnalysisDate,
- text: text,
- rerank: rerank,
- getChannelsProperties: getChannelsProperties,
- getChannelsValues: getChannelsValues,
- getChannelsPercentage: getChannelsPercentage,
- toPercentage: toPercentage,
- graph: graph,
- };
-})();
diff --git a/correlations_page.js b/correlations_page.js
deleted file mode 100644
index 0a0d11f9..00000000
--- a/correlations_page.js
+++ /dev/null
@@ -1,139 +0,0 @@
-let options = {
- product: {
- value: null,
- type: "option",
- },
- channel: {
- value: null,
- type: "option",
- },
- signature: {
- value: null,
- type: "button",
- },
-};
-
-function getOption(name) {
- return options[name].value;
-}
-
-function getOptionType(name) {
- return options[name].type;
-}
-
-function setOption(name, value) {
- return (options[name].value = value);
-}
-
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function getCorrelations() {
- if (!getOption("channel") || !getOption("signature")) {
- return;
- }
-
- let url = new URL(location.href);
- url.search =
- "?product=" +
- getOption("product") +
- "&channel=" +
- getOption("channel") +
- "&signature=" +
- getOption("signature");
- history.replaceState({}, document.title, url.href);
-
- let signature = decodeURIComponent(getOption("signature"));
- let channel = getOption("channel");
- let product = getOption("product");
-
- let crashStatsLink = document.getElementById("crash_stats_link");
- crashStatsLink.href =
- "https://crash-stats.mozilla.org/signature/?signature=" +
- getOption("signature") +
- "&release_channel=" +
- getOption("channel") +
- "&product=" +
- getOption("product") +
- "#correlations";
-
- let preElem = document.getElementById("correlations_text");
- correlations.text(preElem, signature, channel, product);
-
- let svgElem = document.getElementById("correlations_image");
- correlations.graph(svgElem, signature, channel, product);
-}
-
-function updateAnalysisDate() {
- correlations
- .getAnalysisDate(getOption("product"))
- .then((date) => (document.getElementById("date").textContent = date));
-}
-
-onLoad
- .then(function () {
- let queryVars = new URL(location.href).search.substring(1).split("&");
-
- Object.keys(options).forEach(function (optionName) {
- let optionType = getOptionType(optionName);
- let elem = document.getElementById(optionName);
-
- for (let queryVar of queryVars) {
- if (queryVar.startsWith(optionName + "=")) {
- let option = queryVar.substring((optionName + "=").length).trim();
- setOption(optionName, option);
- }
- }
-
- if (optionType === "select") {
- if (getOption(optionName)) {
- elem.checked = getOption(optionName);
- }
-
- setOption(optionName, elem.checked);
-
- elem.onchange = function () {
- setOption(optionName, elem.checked);
- getCorrelations();
- };
- } else if (optionType === "option") {
- if (getOption(optionName)) {
- for (let i = 0; i < elem.options.length; i++) {
- if (elem.options[i].value === getOption(optionName)) {
- elem.selectedIndex = i;
- break;
- }
- }
- }
-
- setOption(optionName, elem.options[elem.selectedIndex].value);
-
- elem.onchange = function () {
- setOption(optionName, elem.options[elem.selectedIndex].value);
- updateAnalysisDate();
- getCorrelations();
- };
- } else if (optionType === "button") {
- if (getOption(optionName)) {
- elem.value = getOption(optionName);
- }
-
- setOption(optionName, elem.value.trim());
-
- document.getElementById(optionName + "Button").onclick = function () {
- setOption(optionName, elem.value.trim());
- getCorrelations();
- };
- } else {
- throw new Error("Unexpected option type.");
- }
- });
- })
- .then(function () {
- updateAnalysisDate();
- getCorrelations();
- })
- .catch(function (err) {
- console.error(err);
- });
diff --git a/exclamation_mark.svg b/exclamation_mark.svg
deleted file mode 100644
index 3ddb1d92..00000000
--- a/exclamation_mark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/graphics_critical_errors.html b/graphics_critical_errors.html
deleted file mode 100644
index 48564fc0..00000000
--- a/graphics_critical_errors.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- Graphics Critical Errors
-
-
-
-
-
-
- Error |
- Frequency |
-
-
-
-
diff --git a/graphics_critical_errors.js b/graphics_critical_errors.js
deleted file mode 100644
index 0f144c2e..00000000
--- a/graphics_critical_errors.js
+++ /dev/null
@@ -1,36 +0,0 @@
-let onLoad = new Promise(function (resolve, reject) {
- window.onload = resolve;
-});
-
-function addRow(error) {
- let table = document.getElementById("table");
-
- let row = table.insertRow(table.rows.length);
-
- let name = row.insertCell(0);
- name.appendChild(document.createTextNode(error[0]));
-
- let frequency = row.insertCell(1);
- frequency.appendChild(document.createTextNode(error[1]));
-}
-
-function buildTable() {
- fetch("graphics_critical_errors.json")
- .then((response) => response.json())
- .then((graphics_critical_errors) => {
- Object.entries(graphics_critical_errors)
- .sort((error1, error2) => error2[1] - error1[1])
- .forEach(addRow);
- })
- .catch(function (err) {
- console.error(err);
- });
-}
-
-onLoad
- .then(function () {
- buildTable();
- })
- .catch(function (err) {
- console.error(err);
- });
diff --git a/graphics_critical_errors.json b/graphics_critical_errors.json
deleted file mode 100644
index 589afc47..00000000
--- a/graphics_critical_errors.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Failed to get cairo surface for mask surface!": 0, "Failed to copy glyphs to geometry sink. Code: ": 0, "wglDXUnlockObjects called without mGL being current.": 0, "Failed to play canvas event type: ": 367, "TOpAddFontInstance failed": 0, "ClearRect with invalid argument ": 0, "ShmSegmentsWriter failed to allocate chunk #": 87, "GFX: D3D11 timeout on the D3D11 sync lock.": 0, "Bad symbol name : ": 0, "TOpUpdateImage failed": 0, "Failed to create a D2D1 content device: ": 173, "Failed to read swap chain description: ": 0, "Unknown chroma subsampling:": 0, "VendorIDMismatch V ": 12, "Failed to load ": 1242, "DoesRecreatingCreateRenderTargetViewFailed": 0, "Could not create content video decoder: ": 0, "Bad BytesPerPixel(": 0, "Failed to get D3D11VideoDevice: ": 3245, "Compositor window was not created": 0, "Unexpected error: ": 0, "RenderTargetViewNeedsRecreating": 10, "BorrowDrawTarget failure, original backend ": 0, "GFX: D3D11 skip EndFrame with device-removed.": 5, "Failed to create VideoProcessorEnumerator: ": 8, "Exception occurred reading font data for ": 12, "Exception occurred reading DWrite font file data": 0, "RemoteTexture ready timeout": 160, "Attempt to update texture client from a surface ": 0, "Failed to allocate Texture2D: ": 1537, "Attempt to create DrawTarget for invalid surface. ": 28, "window is null": 1, "Fallback WR to SW-WR + D3D11": 9550, "Detect DeviceReset ": 3459, "TOpAddFontDescriptor failed": 0, ": ": 82238, "GetBuffer Failed": 136, "[D2D1.1] Failed to obtain a device for ": 23, "Exception occurred measuring glyph bounds for ": 24, "Failed to CreateSurface for DCTile: ": 0, "Failed to create software bitmap: ": 67, "Managed to allocate after flush.": 1892, "Attempting to post to an invalid Compositor Thread": 2, "Error in eglMakeCurrent: ": 682, "Failed to map surface.": 0, "Failed to get D3D11VideoContext: ": 0, "RenderDXGITextureHost egl extensions are not suppored": 0, "Failed to initialize DCSurfaceHandle: ": 0, "Shared surface does not exist for extId:": 0, "Unsupported color space": 0, "GL context version (": 0, "Failed to get D3D11Texture2D": 103, "Could not create gpu-vr bridge: ": 0, "Failed to make render context current, can't draw.": 9, "Something to report and not assert": 0, "Failed to create WebRenderBridgeChild.": 1079, "DoesCreatingDirectDrawFailed ": 0, "CanvasTranslator::AddBuffer bad state ": 3, "PrintWindow failed": 0, "DoesD3D11TextureSharingWork_MapFailed": 4, "RenderDXGITextureHost AcquireSync timeout, hr=": 168, "CompositorBridgeChild was not deinitialized": 0, "D3D11 layers just crashed; D3D11 will be disabled.": 3, "Could not determine font type for sanitizing font ": 0, "Failed to load libandroid.so": 0, "No GPUs detected via PCI\\n": 0, "wglDXLockObjects called without mGL being current.": 0, "DoesCreatingDirectDrawFailed": 0, "Failed to map VSConstantBuffer. Result: ": 0, "Exception occurred initializing variation face": 0, "GFX: D3D11 lock mutex abandoned": 202, "SnapshotInto: srcByteCount:": 0, "Exception occurred reading faces for ": 9, "DrawSurface with bad surface ": 11, "Failed to get Programs for CompositorOGL for SWGL": 0, "Exception occurred reading face names for ": 0, "Failed to create a D3D11 content device: ": 21, "Failed to do glGetActiveUniform: ": 0, "DoesRecreatingCreateCPUTextureFailed": 5, "Failed to init Gtk, missing display? DISPLAY=": 0, "Handling webrender error ": 27803, "Invalid child item within 3D transform of type: ": 0, "DrawTargetCairo::Snapshot with bad surface ": 424, "Bad `elemType`: ": 0, "CanvasTranslator::CreateDrawTarget lock failed": 0, "Failed to map bitmap (M).": 9, "Could not initialize rendering with GPU process": 0, "Failed to create DCompositionVisual: ": 0, "Unsupported RenderTexture for overlay: ": 0, "SSP:Add ": 0, "Crash during D3D11 device creation for VR": 0, "Exception occurred during DWrite font fallback": 0, "Unexpected srcTarget: ": 0, "DataSourceSurface is null": 0, "[D2D1.1] Attempt to use unsupported surface size ": 0, "vaapitest: ManageChildProcess failed\\n": 0, "Failed to resize swap chain buffers: ": 35, "Failed copying Skia raster snapshot": 215, "Ignoring call to ": 26, "Unexpected GL error: ": 0, "DoesD3D11TextureSharingWork_GetSharedTextureFailure": 0, "Device reset with WR context unexpected status: ": 0, "Failed to GetDataSurface in UpdateFromSurface (BT).": 0, "Failed to initialize CompositorOGL for SWGL: ": 0, ": Failed to create mResolvedDefaultFB.": 23, "ID3D11VideoProcessorInputView creation failed: ": 51, "WrBridge mismatch happened": 0, "Failed to get image for mask surface!": 0, "SnapshotInto: invalid stride, width:": 0, "DoesRecreatingMapFailed ": 0, "Disable native compositor for async screenshot": 4, "RenderThread cannot find renderer for window ": 0, "OnResumeComposition called with null Surface": 0, "vaapitest: ": 595, "Failed to get the description ": 0, "RenderDXGIYCbCrTextureHost uses obsoleted device": 1, "NOTE_IF_FALSE: ": 3, "Failed to map surface for premultiplying alpha.": 0, "Couldn't sanitize GL_RENDERER \\": 0, "Failed to get EGLDisplay of D3D11Device": 0, "Failed to create StagingTexture: ": 890, "Wayland protocol error: ": 434, "GpuProcessTextureId is not valid": 111, "[D2D1.1] 2Failed to create a DeviceContext, code: ": 6, "[D3D11] failed to get immediate context": 0, "Unknown cairo content type ": 0, "SingletonGL does not exist for SWGL": 0, "Failed to create video SwapChain: ": 253, "Failed to initialize DCSurface: ": 0, "DCompositionSurface::BeginDraw failed: ": 11471, "v4l2test: ManageChildProcess failed\\n": 0, "MapTile failed aValidRect: ": 2655, "Texture deallocated too late during shutdown": 0, "Failed to read event type: ": 46, "YCbCr Surface is null": 0, "Misprediction: ": 0, "Failed to load ANGLE symbols!": 0, "Invalid surface for OGL update": 0, "NextSurfaceAsDrawTarget lock surface failed.": 0, "Failed to initialize DCSurfaceVideo: ": 0, "Failed to create Renderer thread: ": 27, "[D3D11] failed to get compositor device.": 1365, "Failed to create EGLConfig!": 0, "(nsWindow) Detected device reset: ": 80, "Failed to do glGetActiveAttrib: ": 0, "Failed to parse ANGLE renderer: ": 1, "Exception occurred reading names for ": 10, "Out of sync D3D11 devices in HandleError, ": 1, "RecordedSourceSurfaceCreation read invalid size ": 0, "Failed to initialize DCExternalSurfaceWrapper: ": 0, "CanvasTranslator::SetDataSurfaceBuffer bad state ": 2, "TexUnpackSurface missing structuredSrcSize.": 0, "Exception occurred creating unscaledFont for ": 0, "Failed GL context creation for WebRender: ": 48, "Fallback WR to SW-WR": 10718, "DataSourceSurface failed to map for Image for extId:": 0, "Failed to create draw target in device context sized ": 43, "glxtest: ": 2629, "Updating unknown shared surface: ": 0, "GFX: CanvasTranslator detected a device reset at ": 54, "Failed to create DCompSurfaceHandle": 0, "(gfxWindowsPlatform) scheduled device update.": 104, "SSP:Get ": 0, "DoesD3D11TextureSharingWork_CreateTextureFailure": 1, "Killing GPU process due to IPC reply timeout": 4680, "Failed serializing fonts for blob image": 0, "MakeCurrent called on a thread other than the": 0, "DrawSurfaceWithShadow with bad surface ": 0, "CreateShaderResourceView failed for format": 0, "Failed to create ID3D11Texture2D: ": 0, "RenderDXGIYCbCrTextureHost device is not available": 0, "Unhandled kCVPixelFormatType_*: ": 0, "Error in eglSetDamageRegion: ": 77, "[D3D11] TextureSourceD3D11:GetShaderResourceView ": 42, "Failed to create EGLSurface. ": 182, "GetBuffer returned invalid call! ": 0, "RGBX pixel at (": 0, "Failed to close PathSink. Code: ": 0, "Failed to get serializer as surface!": 0, "Failed to OpenSharedResource1 for SyncObjectD3D11: ": 1, "(gfxWindowsPlatform) Detected device reset: ": 101, "Unknown image content format ": 0, "Cannot evaluate keyed mutex feature status": 0, "A content-only TDR is detected.": 24, "Failed to create drawTarget for blob image": 0, "Failed to create EGLConfig for WebRender!": 2, "webgl::Deserialize failed for ": 4, "[D3D11] ": 3538, "BlitSdToFramebuffer failed for type ": 13, "Could not query device DXGI adapter info": 0, "Failed to initialize shared font list, ": 184, "Fallback SW-WR + D3D11 to SW-WR": 8464, "Invalid size in UpdateRenderTarget ": 0, "Failed to create Pbuffer of back buffer error: ": 1, "Readding known shared surface: ": 0, "Fallback to RGB SwapChain": 0, "Unknown cairo format ": 0, "BufferProvider::SetForwarder failed": 54, "Replay failure: ": 44, "Null DMABUFSurface for GLBlitHelper::BlitImage": 0, "Failed to map ID3D11Texture2D: ": 0, "DoesD3D11TextureSharingWork_TryCreateTextureFailure": 4, "EnsureVideoProcessor Failed": 28, "GLContext just crashed.": 0, "vaapitest: Failed to get VAAPI codecs\\n": 0, "Failed in CreateRenderTargetFromSource ": 0, "MozFramebuffer::CreateImpl(size:": 811, "Present1 failed: ": 462, "GetBuffer returned invalid call: ": 0, "ScheduleSharedSurfaceRelease destroyed non-empty": 0, "Could not create content compositor bridge: ": 0, "ManageChildProcess(": 66, "Attempt to dealloc a ShmemSections after shutdown.": 37, "Failed to get ID3D11VideoContext1": 0, "timeout": 4987, "RenderDXGIYCbCrTextureHost init stream failed": 2, "RenderDXGITextureHost device is not available": 18, "TexUnpackSurface failed to get TextureHost": 3, "Failed to get immediate context.": 0, "RenderDXGITextureHost uses obsoleted device": 3, "Failed to initialize DCTile: ": 0, "Error in eglDestroySurface: ": 698, "SnapshotInto: invalid srcByteCount, width:": 0, "Failed in CreateRenderTarget ": 0, "[GLBlitHelper::BlitSdToFramebuffer] ": 0, "GFX: D3D11 lock mutex timeout - device removed": 3, "Fallback WR to SW-WR + OpenGL": 0, "About to release with valid callback": 0, "TileSize is not positive aId: ": 0, "FireTestProcess failed: ": 0, "Buffer size is invalid": 0, "Parent winow does not match": 0, "Failed to create EGLContext!: ": 101, "DXInterop2Device::Open: DXOpenDevice failed.": 0, "TOpAddImage failed": 0, "Not enough Memory allocate a memory pool of size ": 0, "DoesD3D11TextureSharingWork_AcquireSyncTimeout": 0, "Failed accessing pixels for Skia raster image": 0, "DoesD3D11TextureSharingWork_GetResourceFailure": 0, "D3D11 swap chain preset failed ": 23, "Exception occurred initializing WARP D3D11 device!": 0, "Failed to load AHardwareBuffer": 0, "Device used not marked as multithread-safe.": 0, "CreateDIBSection failed": 0, "Invalid draw target type specified: ": 0, "(nsWindow) Finished device reset.": 81, "D3D11 layers disabled due to a prior crash.": 20, "Invalid reference count release": 1, "Failed to create DrawTarget (D3D11)": 0, "[D2D1.1] Failed to obtain a DXGI surface.": 0, "GFX: AL_D3D11 abandoned sync": 130, "Failed to get IDXGISwapChain3": 0, "Failed to re-create SwapChain": 0, "WebRenderTextureHost is not used": 0, "Couldn't get application directory.\\n": 0, "Failed to CreateVisual for DCTile: ": 0, "TOpAddBlobImage failed": 1, "SSP:Ads ": 0, "CreateCompatibleSurface failed: ": 0, "Exception occurred measuring glyph width for ": 3, "Failed to create VideoSwapChain": 158, "glxtest: ManageChildProcess failed\\n": 0, "ID3D11VideoProcessorOutputView creation failed: ": 0, "Failed to map YCbCr Surface": 0, "Failed serializing fonts for blob vector image": 0, "SSP:Acq ": 0, "Readback took too long: ": 0, "mBindFailureGuard failure: Generating error ": 3, "HandlePartialUpdate lock surface failed.": 0, "PlanarYCbCrData::From SurfaceDescriptorBuffer ": 0, "Couldn't find application file.\\n": 0, "GFX: D3D11 timeout with device-removed:": 0, "GFX: CanvasTranslator failed to get device": 9, "DMABuf surface import failed!": 30, "Unknown image format ": 0, "TexUnpackSurface failed to get ExternalImage": 0, "Platform does not support out-of-process compositing": 0, "Failed to map Surface": 0, "Failed to get EGLDeviceEXT of D3D11Device": 0, "Failed to map bitmap (EM).": 0, "RGBX corner pixel at (": 0, "Failed in UpdateRenderTarget ": 0, "CreateDataSourceSurfaceWithStride(surfFormat=": 0, "TexUnpackSurface failed to get VideoBridgeParent": 1, "GLContext remains enabled despite a previous crash.": 0, "Failed to connect WebRenderBridgeChild. isParent=": 3716, "ToSurfaceDescriptor failed in ": 1, "Deleting referenced object? ": 2, "RenderExternalTextureHost sync failed": 0, "Failed GL context creation for hardware WebRender: ": 14, "Unsupported RenderTexture for DCSurfaceHandle: ": 0, "Compositors might be mixed (": 0, " (iosurf format: ": 0, "Crash during D3D11 device creation for Canvas": 5, "Unhandled enum for FragOutputBaseType: ": 0, "Invalid PathBuilder type specified: ": 0, "Could not create content compositor manager: ": 0, "Exception occurred getting text intercepts": 2, "Failed to start v4l2test process\\n": 0, "Exception occurred while creating font entry for ": 8, "TextureHost creation failure type=": 30, "RecordedDrawGlyphs failed to allocate glyphs of size ": 0, "PCI candidate ": 12, "invalid offset ": 104, "PixelUnpackStateGl was not current. Was ": 19, "Failed to create drawTarget for blob mask image": 0, "Failed to realize a bitmap, device ": 0, "DoesRecreatingKeyedMutexFailed": 0, "Too big ANativeWindow size(": 0, "Unexpected pixel format: ": 0, "Failed to create CompositorBridgeChild": 0, "Failed to create EGLSurface!: ": 43, "Failed to SetContent for DCTile: ": 0, "TexUnpackImage missing structuredSrcSize.": 0, "Unhandled texTarget: ": 0, "TexUnpackSurface failed to create wrapping ": 0, "More than 1 GPU vendor detected via PCI, cannot ": 12, "Error code from OpenSharedResource1: ": 4, "Invalid target in gfxContext::CreateOrNull ": 0, "CompositorBridgeChild receives IPC close with ": 37929, "CreateCompatibleDC failed": 0, "Failed to create luminance effect. Code: ": 0, "Failed serializing fonts for blob mask image": 0, "Failed to create a valid ShmemTextureHost": 183, "More than 1 GPU from same vendor detected via ": 43, "Bad buffer host descriptor ": 0, "CanvasTranslator::PushRemoteTexture dst lock failed": 1, "Failed to create a surface for external image: ": 0, "ReadPixels: Bad ": 0, "Crash during D3D11 device creation": 22, "Failed to look up MacIOSurface": 1, "IPC Channel is already torn down unexpectedly\\n": 0, "Failed to obtain buffer": 0, "Null MacIOSurface for GLBlitHelper::BlitImage": 0, "CompositorBridgeParent destroyed without shutdown": 0, "DoesD3D11TextureSharingWork_SourceMutexTimeout": 4, "Exception occurred creating font face for ": 28, "Failed to create effect for FilterType: ": 0, "mSRV not destroyed on final release! RefCnt: ": 0, "GFX: D3D11 skip BeginFrame with device-removed.": 379, "Surface is null": 0, "[D3D11] 2 CreateTexture2D failure Size: ": 1435, "Unknown texture type ": 0, "Could not list /dev\\n": 0, "CanvasTranslator::CreateReferenceTexture lock failed": 0, "mRTView not destroyed on final release! RefCnt: ": 0, "Failed[3] to create EGL library display: ": 4, "ClientWebGLContext::GetFrontBufferSnapshot: ": 0, "Unhandled external image format: ": 1, "Failed as lost WebRenderBridgeChild.": 3454, "mBindFailureGuard failure: Early exit from ": 24, "Multithread safety interface not supported. ": 0, "DoesD3D11TextureSharingWork_ColorMismatch": 27, "Failed to obtain native window from Surface": 0, "TOpUpdateBlobImage failed": 0, "Compositor thread not started (": 3, "Fallback SW-WR + OpenGL to SW-WR": 0, "Failed to map tile: ": 532, "Unexpected error ": 115, "Failed to create Pbuffer surface error: ": 43, "Flushing glGetError still ": 0, "Failed to get KeyedMutex (3): ": 0, "Failed to create EGLSync from acquire fence fd": 0, "Failed to create global device context": 0, "D3D11 swap resize buffers failed ": 7, "Attempt to allocate a ShmemSection after shutdown.": 1, "Unhandled subdesc type: ": 0, "WebGLParent::RecvGetFrontBufferSnapshot: ": 0, "DoesRecreatingCreateTexture2DFail": 768, "Non-NV12 format for SurfaceDescriptorD3D10: ": 1, "Could not get a DXGI adapter": 37, "Could not borrow DrawTarget (D3D11) ": 8, "Failed to cast ": 0, "[D2D1.1] Failure creating solid color brush (I2).": 0, "VendorIDMismatch P ": 0, "Unexpected plane count: ": 0, "Failed[3] to load EGL library: ": 0, "Could not initialize mScreenReferenceDrawTarget": 0, "AndroidHardwareBuffer id mismatch happened": 0, "Couldn't sanitize ANGLE renderer \\": 0, "Unusual PlanarYCbCrData: ": 0, "Failed VerifyBufferSize in UpdateRenderTarget ": 8, "Failed SWGL context creation for WebRender": 0, "Unexpected error from driver: ": 2, "Unexpected BufferProvider over-production.": 184, "Failed to get KeyedMutex (2): ": 0, "Failed to map PSConstantBuffer. Result: ": 0, "Failed to create VideoProcessor: ": 62, "VideoProcessorBlt failed: ": 105, "GFX: D3D11 lock mutex timeout - no device returned": 0, "Failed to create EGLConfig for WebRender ANGLE!": 0, "[D2D1.1] 3CreateBitmap failure ": 28, "Unexpected GLSL version: ": 0, "Failed to load EGL library 6!": 0, " at ": 56, "Unexpected glGetGraphicsResetStatus: ": 0, "Failed sanitizing font ": 37, "Exception occurred initializing bold face": 0, "RenderDXGITextureHost init stream failed": 75, "TOpAddCompositorAnimations bad id": 0, "Unsupported surface format from source ": 0, "TextureHost does not exist for extId:": 0, "Failed to create EGLSync from fd": 0, "Failed to initialize CompositorD3D11 for SWGL: ": 2114, "Exception occurred reading cmaps for ": 0, "Shader compilation failure, cfg:": 0, "Failed to create DrawTarget, Type: ": 1451, "No read pointer from reader for sanitizing font ": 0, "Device reset with D3D11Device unexpected reason: ": 4, "FireGLXTestProcess failed to create pipe\\n": 0, "vaapitest: Failed to get VAAPI support\\n": 0, "Something to report and assert": 0, "Failed to initialize WARP D3D11 device! ": 4, "[D3D11] failed to get compositor device attachments": 163}
\ No newline at end of file
diff --git a/images/addon_related_signatures.png b/images/addon_related_signatures.png
deleted file mode 100644
index b5dfcd36ff5b6d7bdf61128e58238ddaa1e9633e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 65227
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