System software that identify and report crash details
A crash reporter is usually a system software whose function is to identify reportingcrash details and to alert when there are crashes, in production or on development / testing environments. Crash reports often include data such as stack traces, type of crash, trends and version of software. These reports help software developers- Web, SAAS, mobile apps and more, to diagnose and fix the underlying problem causing the crashes. Crash reports may contain sensitive information such as passwords, email addresses, and contact information, and so have become objects of interest for researchers in the field of computer security.[1]
Implementing crash reporting tools as part of the development cycle has become a standard, and crash reporting tools have become a commodity, many of them are offered for free, like Crashlytics.
Many giant industry players, that are part of the software development eco-system have entered the game. Companies such as Twitter, Google and others are putting a lot of efforts on encouraging software developers to use their APIs, knowing this will increase their revenues down the road (through advertisements and other mechanisms). As they realize that they must offer elegant solutions for as many as possible development issues, otherwise their competitors will take actions, they keep adding advanced features. Crash reporting tools make an important development functionality that giant companies include in their portfolio of solutions.
Many crash reporting tools are specialized in mobile app. Many of them are SDKs.
In macOS there is a standard crash reporter in /System/Library/CoreServices/Crash Reporter.app. Crash Reporter.app sends the Unix crash logs to Apple for their engineers to look at. The top text field of the window has the crash log, while the bottom field is for user comments. Users may also copy and paste the log in their email client to send to the application vendor for them to use. Crash Reporter.app has 3 main modes: display nothing on crash, display "Application has crashed" dialog box or display Crash Report window.
Microsoft Windows includes a crash reporting service called Windows Error Reporting that prompts users to send crash reports to Microsoft for online analysis.[2] The information goes to a central database run by Microsoft. It consists of diagnostic information that helps the company or development team responsible for the crash to debug and resolve the issue if they choose to do so. Crash reports for third party software are available to third party developers who have been granted access by Microsoft.
The system considers all parts of the debug and release process, such that targeted bug fixes can be applied through Windows Update. In other words, only people experiencing a particular type of crash can be offered the bug fix, thus limiting exposure to an issue.
Another error reporting library for Windows is CrashRpt. CrashRpt library is a light-weight open source error handling framework for applications created in Microsoft Visual C++ and running under Windows. The library is distributed under New BSD License.
CrashRpt intercepts unhandled exceptions, creates a crash minidump file, builds a crash descriptor in XML format, presents an interface to allow user to review the crash report, and finally it compresses and sends the crash report to the software support team.
CrashRpt also provides a server-side command line tool for crash report analysis named crprober. The tool is able to read all received crash reports from a directory and generate a summary file in text format for each crash report. It also groups similar crash reports making it easier to determine the most popular problems. The crprober tool does not provide any graphical interface, so it is rather cryptic and difficult to use.
There is also an open-source server software named CrashFix Server that can store, organize and analyze crash reports sent by CrashRpt library. It can group similar crash reports, has a built-in bug tracker and can generate statistical reports. CrashFix server provides a web-based user interface making it possible for several project members to collaborate (upload debugging symbols, browse crash reports and associate bugs with crash reports).
Linux
ABRT
ABRT (Automated Bug Reporting Tool) is an error reporting tool made for Fedora and Red Hat Enterprise Linux. The developers do not currently have plans for porting it to other Linux distributions.[4] ABRT intercepts core dumps or tracebacks from applications and (after user-confirmation) sends bug reports to various bug-tracking systems, such as Fedora Bugzilla [1].
Ubuntu Error tracker
Ubuntu hosts a public error tracker at errors.ubuntu.com which collects hundreds of thousands of error reports daily from millions of machines.[5] If a program crashes on Ubuntu, a crash handler (such as Apport)[6] will notify the user and offer to report the crash. If the user chooses to report the crash, the details (possibly including a core dump) will be uploaded to an Ubuntu server (daisy.ubuntu.com) for analysis.[7] A core dump is automatically processed to create a stack trace and crash signature. The crash signature is used to classify subsequent crash reports caused by the same error.
GNOME
Bug Buddy is the crash reporting tool used by the GNOME platform. When an application using the GNOME libraries crashes, Bug Buddy generates a stack trace using gdb and invites the user to submit the report to the GNOME bugzilla. The user can add comments and view the details of the crash report.
KDE
The crash reporting tool used by KDE is called Dr. Konqi. When an application using the KDE libraries crashes, Dr. Konqi generates a backtrace using gdb and invites the user to submit the report to the KDE bugzilla. The user can add comments and view the details of the crash report.
Mozilla
Talkback
Talkback (also known as the Quality Feedback Agent) was the crash reporter used by Mozilla software up to version 1.8.1 to report crashes of its products to a centralized server for aggregation or case-by-case analysis.[8] Talkback is proprietary software licensed to the Mozilla Corporation by SupportSoft. If a Mozilla product (e.g. Mozilla Firefox, Mozilla Thunderbird) were to crash with Talkback enabled, the Talkback agent would appear, prompting the user to provide optional information regarding the crash. Talkback does not replace the native OS crash reporter which, if enabled, will appear along with the Talkback agent.
Talkback has been replaced by Breakpad in Firefox since version 3.
Breakpad
Breakpad (previously called Airbag) is an open-source replacement for Talkback. Developed by Google and Mozilla, it is used in current Mozilla products such as Firefox and Thunderbird.[9][10] Its significance is being the first open source multi-platform crash reporting system.
Since 2007, Breakpad is included in Firefox on Windows and Mac OS X, and Linux.[11] Breakpad is typically paired with Socorro which receives and classifies crashes from users.
Breakpad itself is only part of a crash reporting system, as it includes no reporting mechanism.
Crashpad
Crashpad is an open-source crash reporter used by Google in Chromium. It was developed as a replacement for Breakpad due to an update in macOS 10.10 [12] which removed API's used by Breakpad. Crashpad currently consists of a crash-reporting client and some related tools for macOS and Windows, and is considered substantially complete for those platforms. Crashpad became the crash reporter client for Chromium on macOS as of March 2015, and on Windows as of November 2015.[13]
Mobile OSs
Android and iOS operating systems also have built in crash reporting functionality.[14][15]
References
^Satvat, Kiavash; Saxena, Nitesh (2018). "Crashing Privacy: An Autopsy of a Web Browser's Leaked Crash Reports". arXiv:1808.01718 [cs.CR].