---
layout: page
title: Reporting Problems
parent: documentation
permalink: documentation/reporting_problems/
author: Bobby R. Bruce
---

Many of the people on the [gem5-users mailing list](/mailing_lists) are happy
to help when someone has a problem or something doesn't work. However, please
keep in mind those working on gem5 have other commitments, so we'd appreciate,
prior to reporting, if users could put in some effort to solving their own
problems, or, at least, gather enough information to help others resolve the
issue.

Below we outline some general advise on issue reporting.

## Prior to reporting a problem

The most important thing to do prior to reporting a problem is to investigate
the issue as much as possible. This may lead you to a solution,
or enable you to provide more information to the gem5 community regarding the
problem. Below are a series of steps/checks we'd advise you carry out before
reporting an issue:

1. Please check if a similar question has already been asked on our
[mailing lists](/mailing_lists) (check the archives), or reported in our
[Jira Issue Tracking system](https://gem5.atlassian.net).

2. Ensure you're compiling and running the latest version of [gem5](
https://github.com/gem5/gem5). The issue may have already been resolved.

3. Check changes [currently under review on our Gerrit system](
https://gem5-review.googlesource.com/dashboard/self). It's possible a fix to
your issue is already on its way to being merged into the project.

4. Make sure you're running with `gem5.opt` or `gem5.debug`, not `gem5.fast`.
The `gem5.fast` binary compiles out assertion checking for speed, so a problem
that causes a crash or an error on `gem5.fast` may result in a more informative
assertion failure with `gem5.opt` or `gem5.debug`.

5. If it seems appropriate, enable some debug flags (e.g.,`--debug-flags=Foo`
via the CLI). For more information on debug flags, please consult our
[debugging tutorial](/documentation/learning_gem5/part2/debugging).

6. Don't be afraid to debug using GDB if your problem is occurring on the C++
side.

# Reporting a problem

Once you believe you have gathered enough information about your problem. Then
feel free to report it.

* If you have reason to believe your problem is a bug then please report the
issue on gem5's [Jira Issue Tracking system](https://gem5.atlassian.net).
**Please include any information which may aid in someone else reproducing
this bug on their system**. Include the command line argument used, any
relevant system information (as a minimum, what OS are you using, and how
did you compile gem5?), error messages received, program outputs, stack traces,
etc.

* If you choose to ask a question on the [gem5-users mailing list](
/mailing_lists), please provide any information which may be helpful. If you
have a theory about what the problem might be, please let us know, but
include enough basic information so others can decide whether your theory is
correct or not.


# Solving the problem

If you have solved a problem that you reported, please let the community know
about your solution as a follow-up (either in the mailing list or in the Jira
Issue tracking system). If you have fixed a bug, we'd appreciate if you could
submit the fix to the gem5 source. Please see our
[beginners guide to contributing](/contributing)
on how to do this.

If your issue is with the content of a gem5 document/tutorial being incorrect,
then please consider submitting a change. Please consult our [README](
https://github.com/gem5/website/blob/stable/README.md)
for more information on how to make contributions to the gem5 website.
