From Symptoms to Bug Classification

Learn to identify the bug category from the symptom and the diagnostic information.

As mentioned, the filed bug report will likely contain how the product reacts to the bug. This lesson will explain how one can go from the bug report and classify the symptoms further. Debugging is an iterative process where we work in layers. We start with the bug symptom seen at the user level and then go a layer deeper to determine if the behavior in that layer is the bug or is a symptom seen in a layer below. We keep going deeper until we find the actual bug.

Some of the symptoms explained further, like crash and hang, are themselves caused by bugs elsewhere. For some bugs, the actual bug is quite close to the symptom, and for some, it is pretty far away. We have to go where the actual bug is to fix it correctly and not just band-aid the symptom.

Crashes

A crash happens when a program encounters an unexpected or erroneous condition it was not designed to handle, for example, an unhandled exception, accessing an uninitialized variable, etc. The program stops executing, possibly producing a backtrace in the logs and, in some languages and platforms, a core file. The side effect here is that the process that has crashed stops executing (and therefore serving any incoming requests or performing its functionality). If the process is a service designed to run forever, then it would come up again and start functioning. So, the symptom in the bug report would describe a temporary pause in the functionality of the process or service. There can be an accompanying backtrace in the logs, a core file, and a change in the process ID of a process in the product.

Among various types of bugs, crashes are relatively easy to spot. The backtrace and the core file (enabled in most cases) will provide plenty of hints as to where the actual issue is. If the workflow or use case consistently produces a crash, it is relatively easy to go after it. Otherwise, more work is needed. Therefore, if the collected logs have the backtrace and the core file, if any, the engineer must have sufficient information to make an initial attempt at addressing the issue. We’ll explore how to investigate various reasons further. We’ll cover crash in a later dedicated lesson.

Get hands-on with 1200+ tech skills courses.