# Reporting bugs ## Writing an effective bug report When reporting a bug, start with the question `What does a bug report need to tell the developer`. Generally you want the following parts covered: - What is the problem - How can the developer reproduce the problem (to see it for themselves), to bisect when it was introduced or to find if it got fixed already. - At what point does the problem occur - What environment did this occur in Make sure the above items are covered and the bug is easy to review and parse: - **Title** should clearly describe the problem. Bugs are often sorted from the issue list which only contains the title - **Logs** should generally be attachments (drag & drop or click on bottom bar when entering issue text) and not inline with the issue. - **Reproduction steps** and **environment** should be clearly highlighted. If running commands reproduce the issue (very common), the commands should be in a code block/script format. ### Describing the problem Make sure the issue is obvious or provide a link explaining why the expected result is not met. Examples: - `(Core dump) seen` is obvious since there should be no core dumps - `Failure trying to read attribute X in cluster Y which is marked MANDATORY in the spec` references the spec and describes why attribute read should succeed. - `Failure trying to write attribute X in cluster Y, which is enabled since cluster FeatureMap enabled X and spec describes as writable.` references the spec and explicitly states that an optional attribute is enabled based on device status - `Running certification test TC-A-B-C (link included) fails at step 3: test case asks for command to succeed, I get ACCESS_DENIED instead` describes a pre-defined test case that is expected to pass but fails. Note that full link to the test description is needed (and should be covered by 'how to reproduce' part) Unless manually curated (e.g. few lines showing the problem), logs should be always attachments and not inlined in the bug as the make the bug report too long. ### Reproduction steps and when does the issue occur Include all steps needed to reproduce the problem. Link any supporting documentation. If stating something of the form `TC-A-B-C step 4 fails` then there should be a link to TC-A-B-C and ideally a list of the commands of each step since test cases may change over time. The bug report should contain all the information for a developer to reproduce the issue without needing to have access to CHIP Test case repository (not everyone does) ### Environment for reproduction Assume that the developer will want to reproduce the issue and will try to mirror your environment to a reasonable degree. For this, at a minimum the platforms on which everything is running is needed. Try to provide as much information as seems relevant. At a minimum this could look like `Failed to commission nrf board using chip-tool running on linux. Used build on SHA abcde...`. This provides basic information (use nrf board, use chip-tool on linux, default build) to get started. Beyond that, you can refine if more items seem relevant: - `Tested on TE9` or `Tested on interop branch xyz` gives a build reference point. Useful when branches/tags are used instead of master branch as development happens on master branch. - `Thread devices fail, tested with qpg and efr32` shows that this seems to be a general thread issue and developer can investigate on multiple of them * `Tested with avahi-build and it passes/fails` helps the developer with information of non-default builds that pass/fail to narrow down the problem * `Passes with darwin-framework-tool and repl but fails with chip-tool` helps the developer in narrowing down the problem ### Additional information Providing additional information that can be helpful is encouraged. Each bug report is different here. Some examples: - `This worked last week (around Jan 5) but started failing in recent master builds` - `Specification changed this attribute from optional to mandatory so this may be the cause of the issue` - `This issue may be related to #1234 as the same error is seen, however the reproduction steps seemed distinct enough that I opened a new issue` - `While running this, I observed 100% CPU before the operation finally timed out` - `While running this test, I observed device under test rebooting, logs attached.` - `This only happens intermittently - I see it about 30% of the time`