Index
Getting a Trac account
Creating a bug report
Application bugs
Server bugs
Kernel bugs
Kernel Debugging Land - KDL
Syslog
On screen debug output
Hardware/Driver bugs
What's next?

Reporting bugs

Since our developers are unable to test every hardware combination, nor every different way of interacting with the operating system, we are relying on users to give us some input on how things work at their end. Since Haiku is still quite young, it's very likely that you will encounter bugs. We thank you for taking the time to report these. Together we can improve Haiku, bit by bit.

To keep our bugtracker effective, it's essential to abide by the Bug Tracker Etiquette.

index Getting a Trac account

To file a ticket, you need to have an account at Haiku's Bugtracker.
When creating a new account, be certain to provide your email address as it is necessary to obtain basic ticket modification privileges. Be sure to check your spam folder shortly afterwards, as the all important verification mail often ends up there.

index Creating a bug report

Before reporting a bug, please make sure that it does not yet exist. You can also use the search function for this.
After you have established that it's a unique bug, make your information as accurate as possible:

index Application bugs

When an application crashed, you can either save a report or write a core file (both saved to the Desktop) that you can attach to a bugreport, or you can evoke the Debugger.

If it's not a crashing bug, you may get useful information when starting the application from Terminal. Some applications provide logging and other options when started with certain parameters; try -h or --help to see if that is the case. As example, see the different logging levels of HaikuDepot.

index Server bugs

When vital servers like the app server, the registrar or the input server crash, you won't see the usual crash alert. Instead the whole screen will be cleared white and the Debugger will be started in text-mode, its output appearing directly on screen. Likely you will still be able to move the mouse, which will overwrite the white and Debugger output on screen. Applications still running (like ProcessController or the clock in the Deskbar) might also draw over the debugger output on screen.
Besides everything being more ugly and inconvenient, basically the same applies as for application bugs. Most importantly procure a back trace (bt command). You may need to take a picture of the screen with a digital camera, since you won't be able to copy the text anywhere.
Depending on what exactly crashed, you can try to save a crash report on the Desktop with save-report or write-core for a core file, and then press the power button once to try shutting cleanly down. If the power button doesn't work, there are also the commands shutdown and reboot.

index Kernel bugs

Kernel bugs are usually the ones with the most severe effects while at the same time being the hardest to debug. There are different kinds of symptoms, which most likely point to a kernel or driver issue:

Note that while only the last point seems to indicate hardware relation, all the other symptoms could be caused by a bug in a hardware driver as well. If you have a suspicion what piece of hardware or corresponding driver might have to do with the problem, check whether removing/disabling the hardware or the driver makes a difference. For example, if you suspect Wifi you may find that your BIOS has an option to disable it. Or if not, you could blacklist the responsible Wifi driver from your Haiku installation (see Boot Loader).

index Kernel Debugging Land - KDL

If the system hasn't entered KDL by itself, you can do that intentionally by invoking the keyboard shortcut ALT SysReq D (SysReq being the Print key, normally).
Note that in KDL your keyboard may not work. PS/2 keyboards always do, with USB keyboards it depends on the type of USB controller (UHCI/EHCI). Generally, the keyboard should be plugged into the port directly, not via any hubs. In some circumstances, the keyboard only works if one has entered KDL via the keyboard shortcut at least once. USB OHCI is not supported at the moment.

KDL itself is a kind of a shell. One can execute commands that print information about the system. The following commands might be of interest:

bt (aka sc) Prints a back trace (aka stack crawl). If the system entered KDL on its on volition, a back trace is normally printed automatically. Enter the command if that didn't happen or part of it is obscured (e.g. when the stack trace is so long that it wrapped around) and your only way of providing the information to developers is by taking a picture of the screen.
ints Shows the handled and unhandled hardware interrupts.
co (aka continue) Leaves the kernel debugger and continues normal operation of the system, if that is possible.
reboot Reboots the system immediately. You will lose all unsaved data and even those that have been saved, but have not yet been written back to disk.

For more information, see the article Welcome to Kernel Debugging Land.

The KDL output is written to the serial port (if you have one, a respective cable, and a second computer to connect with, you can capture the output there via a terminal program) and to the syslog. If you can't leave KDL it won't be written to the syslog file, though. There's a boot loader debug option that allows you to capture it nonetheless (see below).

You can generate QR codes from KDL output that can then be converted to text using smartphones or similar devices. See the blog post QR Encode your KDL Output on how to get data out of KDL using that feature.

index Syslog

This is the preferred method for extracting information from a non-booting system.
The syslog (short for system log) contains valuable information about what has happened in your system, including the output of KDL sessions. It's usually a good idea to attach it to the kernel related Trac ticket. The syslog is written to the file /boot/system/var/log/syslog. Since writing to a file requires a working system, the most recent output might not have made it to the syslog when a kernel problem occurs (particularly on spontaneous reboots or uncontinuable KDL sessions).

The option Enable debug syslog in the boot loader's Debug menu makes the syslog persistent. If the option Save syslog from previous session during boot is activated in the boot loader options (as it is by default), you'll find the syslog of your last session as /boot/system/var/log/previous_syslog.
If you're not able to boot to get to the previous_syslog, you have to enter the boot loader menu by holding down SHIFT (or SPACE when booting via UEFI) while booting.
In the boot loader's Debug menu you should find the entries Display syslog from previous session and Save syslog from previous session. The former displays the syslog on screen, the latter allows you to save it as a file to disk. Note that at the moment only FAT32 volumes are supported for saving the file. If you want to use a USB stick, but have plugged it in too late so that it isn't recognized yet, you can reset the machine and re-enter the boot loader menu. Note: Don't accidentally boot any operating system or the data will be lost.

index On screen debug output

The on-screen debug output is useful only for debugging very specific issues and is known to have (timing) issues. Don't use it, if you don't have to.
This is only relevant when Haiku fails to boot on your machine and the Debug syslog option doesn't work for some reason. Before the Haiku boot logo appears, hold SHIFT (or SPACE when booting via UEFI) to enter the boot loader menu. Select Select debug options. Near the bottom, Enable on screen debug output will be listed. (Note: The other options could be enabled in an attempt to boot Haiku. If Haiku will boot only when one or more options are activated, be sure to mention which ones.)
Finally select Return to main menu and then Continue booting.
One or more pages of text will display on the screen, only the last few lines need to be included on your ticket. There's more information on the Boot Loader.

index Hardware/Driver bugs

When dealing with a hardware/driver related bug, you should attach the following information as text files:

- listdev A detailed listing of your hardware, including vendor and pci id's, similar to Linux' lshw and lspci.
- listusb -v Assuming it's a USB related issue, similar to lsusb.
- open /var/log/syslog The primary system log used by Haiku, see Syslog above, akin to on screen debugging during boot. With the open command you can crop down the relevant part of the syslog in a text editor.
- listimage | grep drivers/ Lists all used drivers.
- usb_hid_report In case of USB input devices, add the /tmp/usb_hid_report_descriptor_*.bin file.
- ints Only available within Kernel Debugging Land (see above). Shows interrupt usage. There shouldn't be too many that are shared by different devices.
- On screen debug output (a debug boot time option, see above).

The first four commands are entered into Terminal. Add a > output.txt after a command, and it's piped into a text file called "output.txt" that you can attach to your bug report or email.

index

After the bug has been reported, a developer will look at your bug and try to classify it. Remember, we are all volunteers, and as such, sometimes a bug report might go unanswered for a while. Adding new information when it becomes available usually helps getting a bug picked up quicker, but do not try to 'bump' the bug up by adding non-descriptive comments.

Remember, reporting a bug is not something you spend a little time on and then you are done. If you reported a bug, then you are part of the Haiku development process. Developers might come up with questions while they are trying to fix your bug. Please stay around to answer these. Consider your participation 'done' when the bug is marked as 'fixed'.