Crash pings =========== crash report vs. crash ping --------------------------- We have two different methods of collecting crash data. **crash report** The crash reporter assembles a crash report with crash annotations and minidumps and some other things. It prompts the user for permission to submit the crash report. If the user says "yes", then the crash reporter submits it to the crash ingestion pipeline where it's collected, processed, and available in `Crash Stats `__. Crash report data is off by default. Crash report data contains protected data which includes sensitive data, PII, etc. Not all crashes result in a crash report sent to the crash ingestion pipeline for various technical reasons. Not all users say "yes" to submit the crash report. The crash ingestion pipeline throttles crash reports. For example, it only accepts 10% of incoming Firefox desktop release channel crash reports and rejects the rest. .. Seealso:: Collector throttle rules: https://github.com/mozilla-services/antenna/blob/main/antenna/throttler.py **crash ping** The crash reporter walks the stack and assembles a crash ping which a subset of crash annotation data. It sends this using Telemetry clients to the Telemetry data ingestion pipeline. It is available in the ``telemetry.crash`` BigQuery table. Crash ping data is on by default and shares opt-out mechanisms with Telemetry data submission. Crash ping data does not contain protected data. As of 2022-10-18, we only support crash ping data with Firefox. .. Seealso:: Crash ping documentation: https://docs.telemetry.mozilla.org/datasets/pings.html#crash-ping .. Seealso:: Older blog post on crash reports vs. crash pings (2019): https://bluesock.org/~willkg/blog/mozilla/crash_pings_crash_reports.html Updating crash ping schema -------------------------- After someone has added a new field to `CrashAnnotations.yaml `__ which has ``ping: true`` in it, we do the following: 1. From a mozilla-pipeline-schemas (https://github.com/mozilla-services/mozilla-pipeline-schemas/) checkout, run:: scripts/extract_crash_annotation_fields /path/to/mozilla-unified/toolkit/crashreporter/CrashAnnotations.yaml If any exist, you will get a list of crash annotations that are contained in the ping but are not yet in the schema. 2. Add the annotation to ``templates/telemetry/crash/crash.4.schema.json`` under the ``payload/metadata`` section. 3. Follow ``_ to build the schema files. 4. Create a pull request against the main branch in mozilla-pipeline-schemas referencing that bug. Example: https://github.com/mozilla-services/mozilla-pipeline-schemas/pull/711