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
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.