Student Application

Based on project description and my preliminary investigations, as well as my discussion with the mentor, I have three concrete ideas.

1.1 Crash Signature

Apport is able to parse core dumps into crash files (with the .crash extension), which provide us rich information regarding each crash, including stack trace, process map, disassembly, and so on. Apport generates crash reports on the basis of crash files and uploads them to the server. However, both crash files and crash reports are not comparable. That means we cannot know the similarity between two reports, resulting in possible duplicate.

To address this, we can generate a signature from the crash file for each program crash. Here the signature should not contain any machine-dependent information, e.g., addresses in stacktrace. Such signatures are comparable, which enables us to determine how similar two reports are by comparing their signatures. One naive approach is to calculate the Levenshtein distance between two signatures. The smaller the distance is, the more related these two reports are.

We attach the signature to each crash report. When a crash happens, before we display all related reports to the user, we can first prioritize them and show the user most relevant ones. One of the the project goals is to integrate Apport with Debian bug reporting system (BST). To prevent crash report flooding we can leverage the crash signature to ensure that bugs/crashes that have been reported will not be reported again.

1.2 Offline Support

For Debian boxes that are completely isolated from network, we could use similar strategies to apt-offline. However, our goal is different from that of apt-offline.

apt-offline aims to copy data (the archive containing packages) to a machine that has no Internet access, while apport wants to send data (crash reports) out. We could let the user save bug reports to a removable medium. Once the removable media is connected to a box that has can access the Internet, reports will be uploaded.

For boxes behind a firewall, but in the same network there exist other machines that can access the Internet, we could let the user configure an “apport proxy”, through which crash related reports could be pulled in and new reports could be sent out. Potential security issues need to be considered because such proxy might be abused.

1.3 GUI Improvements

If desktop environment is available, Debian Apport interacts with users through a graphical user interface (GUI) to handle newly generated bug report. However, at this stage the GUI’s functionality is very limited.

To address these limitations and improve Apport GUI’s usability, we should add more features.