When Firefox crashes, it submits a minidump of the crash; it also submits some key/value metadata. The metadata includes basic information about the product/version/buildid, but it also includes a bunch of other information that we use to group, correlate, and diagnose crashes. Using data collected with jydoop, I created a graph of how frequently various metadata keys were submitted on various platforms:

The jydoop script to collect this data is simple:

import crashstatsutils import json import jydoop setupjob = crashstatsutils.dosetupjob([('meta_data', 'json'), ('processed_data', 'json')]) def map(k, meta_data, processed_data, context): if processed_data is None: return try: meta = json.loads(meta_data) processed = json.loads(processed_data) except: context.write('jsonerror', 1) return product = meta['ProductName'] os = processed.get('os_name', None) if os is None: return context.write((product, os, '$total'), 1) for key in meta: context.write((product, os, key), 1) combine = jydoop.sumreducer reduce = jydoop.sumreducer

View the raw data (CSV).

If you are interested in learning what each piece of metadata means and is used for, I’ve started to document them on the Mozilla docs site.

This graph was generated using the flot JS library and the code is available on github.