Mozilla has a world-class system for collecting, analyzing, and fixing crashes and other stability issues such as hangs. Firefox OS partners need to work with Mozilla to correctly enable crash reporting and upload symbols.
For general information about crash reporting, how it works, and how data is used, see the Crash reporting article.
Enable Firefox OS Crash Reporting
It is essential that any device with Firefox branding have crash reporting enabled. This must be enabled by including the following line in the `mozconfig` file used to build the release build:
Crash reports contain key/value metadata and a minidump file. This file contains only the stack memory and memory mapping information, and does not contain any proprietary information such as symbols. Non-private data from crash reports are processed and displayed on crash-stats.mozilla.org. Because the actual minidump files may contain personal data if it is stored on the binary stack, these files remain private and are available only to Mozilla employees and certain partners who have a non-disclosure and privacy agreement for user data.
Upload Symbols to Mozilla
Symbol files allow Mozilla to process crash report minidumps. The symbol files are text files which are extracted from the binary debug information. For more information about the format of symbols files, see the breakpad documentation.
The symbols files for open-source code including all of gecko files must be available for crash processing. Partners should request an SSH account to upload symbols. See the symbol upload instructions for specific details. Symbols from multiple builds will not overwrite eachother on the server, because each symbol file is keyed against a unique debug identifier.
Firefox OS partners may also have binaries such as drivers which are not open-source. For Firefox OS partners as well as other partners such as plugin and extension vendors, Mozilla has a tool for encrypting symbol files so that they can still be used to produce backtraces and correlate crashes, without revealing the function or file names. In a normal Firefox OS build, the affected binaries are built in the vendor/qcom/proprietary subtree of the build. Partners should take care that binaries produced from within this subtree, as well as other proprietary binaries, are encrypted before being uploaded.