Bug reporting guidelines
- 1 Introduction
- 2 Before Reporting
- 3 Opening a Bug
- 4 Following up on Bugs
- 5 Bug Hunting
- 6 External Links
Opening (and closing) bug reports on Arch's Bug Tracking System is one of the possible ways to help the community. However, if this is done badly it can turn out being a pain instead of being useful - when too many bugs are badly reported the community and the developers lose a lot of time asking for questions and closing invalid bug reports.
This document will guide anyone wanting to help the community efficiently by reporting or hunting bugs.
The work done before reporting is probably the most useful part of the job. Unfortunately few people take the time to do this work, they prefer others to do it for them...
However, preparing a good bug report is not difficult and can be achieved by anyone (beginner or developer). The following steps will help you in preparing your bug report or feature request. They should be followed in the order they come in.
- Upstream : Upstream is usually referred to as the community which developed a piece of software packaged by Arch Linux. It is the team which is responsible for creating, publishing and documenting that software. Arch Linux can be referred to as upstream for all the projects specific to Arch Linux : pacman, AUR, initscripts, etc ...
Looking for duplicates
If you encounter a problem or would like a new feature, there is a high probability that someone else already had this problem or idea. If so he/she might have already opened a bug report. In this case you do not have much to do and see the How to help section.
Here are a list of places to search for duplicates:
- Arch's forum: most of the time you will find your bug and the related solution here.
- Arch's Bug Tracking System: It sounds obvious, but the "Reject as duplicate" feature in a bug tracker would not exist if people looked for duplicates before reporting bugs ... Some bugs may have already been reported to the software developers, and even some bugs may have been already fixed recently. That is why it is important to look for recently closed bugs as well as new bugs.
- Google or your favorite search engine: Search using your software name, version and a relevant part of the error message that you got, if any.
- Upstream Forum, Mailing List and Bug Tracker: Look directly at the source of your problem! Some bugs may have already been reported to the software developers, and even some bugs may have been already fixed in the development version. That is why it is important to look for closed bugs as well as new bugs in upstream 's bug tracker.
- Other distro forums: The Free Software community is wide, and people other than archers may have a good idea too! You might have a look at Gentoo's forums, Fedora forums and Ubuntu forums. If you know some other sources of useful information feel free to add them here.
Bug or Feature?
Once you know nobody reported the bug either at Arch or Upstream, you have to ask yourself whether your problem is a bug or a feature :
- A bug is something that should work but does not work as intended by the developer.
- A feature is something a software does or would do if somebody coded it.
Upstream or Arch?
This is an important question. If Arch is not responsible for a bug, the problem will not get solved by reporting the bug to Arch.
By reporting bugs upstream not only you will help archers and Arch developers, but you will also help other people in the Free Software Community.
Once you have reported a bug upstream or have found other relevant information from upstream, it might be helpful to post them in Arch bug tracker so that both Arch developers and users get aware of it.
So what is Arch Linux responsible for?
- Arch Linux Projects : Pacman, AUR, Initscripts, Arch Websites. If you have a doubt about if the project belongs to Arch or not, display the package information (pacman -Qi foobar_package or using the website) and look at the URL.
- Packaging : Packaging basically consists of fetching the source code from upstream, compiling it with relevant options, making sure that the package will be installed correctly on an Arch system and the main functionality of a package works. Packaging at Arch does not consist of adding new functionality or patches for existing bugs. This is the job of the upstream developer.
If a bug/feature is not under Arch's responsibility report it upstream. See also Reasons for not being a bug.
Reasons for not being a bug
- Something you would like a piece of software to do, which is not implemented by the upstream developers. In short : a new feature.
- A bug already reported upstream.
- A bug already fixed upstream but not in Arch because the package is not up-to-date.
- A package which is not-up-to-date. Use the Flag Package Out-of-Date feature on Arch's packages website.
- A package which does not use Fedora, Ubuntu or some other community patch. Patches should be submitted upstream.
- A package where non essential function X or function Y is not activated. This is a feature request.
- A package which does not include a .desktop file or icons or other freedesktop stuff. This is not a bug if such files are not included in the source tarball, and this must be requested as a feature request upstream. If such files are provided by upstream but not used in the package then this is a bug.
Reasons for not being a feature
- When it is a bug ...
- When it is not under Arch responsibility to implement the feature, ie an upstream feature.
- A package is not up-to-date. Use the Flag Package Out-of-Date feature on Arch's packages website.
- A package which does not use Fedora, Ubuntu or some other community patch. Patches should be submitted upstream.
Gather useful information
Here is a list of useful information that should be mentioned in your bug report :
- Version of the package being used.
- Version of the main libraries used by the package (available in the depends variable in the PKGBUILD), when they are involved in the problem. If you do not know exactly what information to provide then wait for a bug hunter to ask you for it ...
- Version of the kernel used if you are having hardware related problems.
- Indicate whether or not the functionality worked at one time or not. If so indicate since when it stopped working.
- Indicate your hardware brand when you are having hardware related problems
- Add relevant log information when any is available. This can be obtained in the following places depending on the problem :
- /var/log/messages for kernel and hardware related issues.
- /var/log/Xorg.0.log or /var/log/Xorg.2.log or any Xorg like log files if video related problems (nvidia, ati, xorg ...)
- Run your program in a console and use verbose and/or debug mode if available (see your program documentation), and copy the output in a file. When running an application in a terminal make sure relevant information will be displayed in english so that many people can understand it. This can be done by using export LC_ALL="c". Example with a software named foobar from which you would like to have relevant information at runtime and provided that foobar has a --verbose option :
someone@somecomputer # export LC_ALL="C" someone@somecomputer # foobar --verbose
This will affect only the current terminal and will stop taking effect when the terminal is closed.
If you use a pastebin to paste any relevant information, it is preferable not to use rafb.net as pastes there last only for 24 hours.
- Indicate how to reproduce the bug. This is very important, it will help people test the bug and potential patches on their own computer.
- The stack trace. It is a list of calls made by program during its execution, and helps in finding part of program where the bug is located, especially if bug involves the program crashing. You can obtain a stack trace using gdb (The GNU Debugger) by running the program with "gdb name_of_program" and then typing "run" at the gdb prompt. When the program crashes, type "bt" at the gdb prompt to obtain the stack trace and then "quit" to exit gdb.
Opening a Bug
When you are sure it is a bug or a feature and you gathered all useful information, then you are ready to open a bug report or feature request.
Creating an account
You have to create an account on Arch's bug tracker system. This is as easy as creating an account on a wiki or a forum and there is nothing particular to mention here. Do not be afraid of giving the email address you currently use : it will be hidden and you will receive mails only for bugs you follow.
Projects and Categories
Once you have determined your feature or bug is related to Arch and not an upstream issue, you will need to file your problem in the correct place (watch the project name in the drop down list to the left of 'Switch' button in top left corner of bug report creation page.):
- Arch Linux - for packages in testing, core, or extra. It is also a place for documentation, websites (except AUR), and security issues.
- Arch User Repository (AUR) - for the AUR website code and server issues. This does not include third party apps used to access the AUR or packages in unsupported.
- Community Packages - for packages in community. It is not a place for packages in unsupported.
- Pacman - for pacman and the official scripts and tools associated with it. This includes things like makepkg and abs; it does not include community-developed packages such as yaourt.
- Release Engineering - intended for all release related issues (isos, installer, etc)
There is no place for reporting problems with packages in unsupported. AUR provides a way to add comments to a package in unsupported. You should use this to report bugs to the package maintainer.
Please write a concise and descriptive Summary.
Here is a list of recommendations:
- Do not name your report "pkgname is broken after the last update" - it is non-descriptive and "after last update" has no meaning in Arch.
- Start the Summary with package name enclosed in square brackets, e.g. "[pkgname] 3.0.5-1 breaks copy-paste feature". By naming reports this way you make it much easier for developers to sort reports by package names.
- Do not write too much text in the Summary. Excessive text will not be visible in reports list.
Choosing a critical severity will not help to solve the bug faster. It will only make truely critical problems less visible and probably make the developer assigned to your bug a bit less open to fixing it.
Here is a general usage of severities :
- Critical- System crash, severe boot failure that is likely to affect more than just you, or an exploitable security issue in either a core or outward-facing service package.
- High- The main functionality of the application does not work, less critical security issues, etc.
- Medium- A non-essential functionality does not work, UNIX standards not respected, etc.
- Low- An optional functionality (plugin or compilation activated) does not work.
- Very Low- Translation or documentation mistake. Something that really does not matter much but should be noticed for a future release.
Including Relevant Information
This is maybe one of the most difficult parts of bug reporting. You have to choose from the chapter Gather useful information which information you will add to your bug report. This will depend on which your problem is. If you do not know what the relevant pieces of information are, do not be shy : it is better to give more information than needed than not enough.
A good tutorial on reporting bugs can be found at 
However, developers or bug hunters will ask you for more information if needed. Fortunately after a few bug reports you will know what information should be given.
Short information can be inlined in your bug report, whereas long information (logs, screenshots ...) should be attached.
Following up on Bugs
Do not think the work is done once you have reported a bug!
Developers or other users will probably ask you for more details and give you some potential fixes to try. Without continued feedback, bugs cannot be closed and the end result is both angry users and developers.
Voting and Watching
You can vote for your favorite bugs. The number of votes indicates to the developers how many people are impacted by the bug. However, this is not a very effective way of getting the bug solved. Much more important would be posting any additional information you know about the bug if you were not the original reporter.
Watching a bug is important- you will receive an email when new comments are added or the bug status has changed. If you opened a bug verify that the "Notify me whenever this task changes" checkbox is activated in order to receive such emails.
Answering additional information requests
People will take the time to look at your bug report and will try to help you. You need to continue to help them resolve your bug. Not answering to their questions will keep your bug unresolved and likely hamper enthusiasm to fix it.
Please take the time to give people more information if requested and try the solutions proposed.
Developers or bug hunters will close your bug if you do not answer questions after a few weeks or a month.
Sometimes a bug is related to a given package version and is fixed in a new version. If this is the case then indicate it in the bug report comments and request a closure.
Closing when solved
Sometimes people report a bug but do not notify when they have solved it on their own, leaving people searching for a solution that has already been found. Please request a closure if you found a solution and give the solution in the bug report comments.
More about bug status
During its life a bug goes through several states :
- Unconfirmed : This is the default state. You have just reported it and nobody managed to reproduce the problem or confirmed that it is actually a bug.
- New : The bug is confirmed but it has not been assigned to the developer responsible for the related software. It is usually the case when more investigation is needed to determine which software is responsible for the bug.
- Assigned : The bug has been assigned to a developer responsible for the software involved in the bug. It does not mean that the developer will be the one who will fix the bug. It does not even mean that the developer will work on a solution. It just mean that the developer will take care of the life cycle of the bug, including reviewing patches if any, releasing a fix and closing the bug when required. There is no point at contacting a developer directly to have a bug fixed more quickly, he/she will certainly not like it ...
- Researching : Somebody is looking for a solution. This status is rarely used at Arch and it is better this way. The researching status could make people believe they do not need to get interested in the bug report. But usually we need more than one person to fix a bug : having several experienced people on a bug help a lot.
- Waiting on customer and Requires testing : The one who reported a bug is asked to provide more information or to try a proposed solution, but he/she did not give a feedback yet. Those status are rarely used at Arch and should be used more often. However this is important that you watch the bug (see the voting and watching section) as developers or bug hunters usually ask questions in the comments.
- A task closure has been requested : this is not exactly a status, but you may found some bug reports with such a notification. This indicates that somebody requested a closure for the bug. A reason is added to the request most of the time. It is upon the assignee developer to decided whether he/she will accept the closure or not.
- Closed : Either this is not a valid bug (see Reasons for not being a bug) or a solution has been found and released.
Some people (developers, TUs ...) are responsible for dispatching the bugs and change their status.