.. _cha:submitbug:

Submitting a bug report
=======================

Whenever encountering that |TRACE| fails while instrumenting an application or
generating a trace-file, you may consider to submit a bug report to
tools@bsc.es.

Before submitting a bug report, consider looking at the Frequently Asked
Questions in appendix :ref:`cha:FAQ` because it may contain valuable information
to address the failure you observe.

In any case, if you find that |TRACE| fails and you want to submit a bug report,
please collect as much as information possible to ease the bug-hunting process.

The information required depen whether the bug refers to a compilation or an
execution issue.


.. _sec:bugcompilation:

Reporting a compilation issue
-----------------------------

The following list of items are valuable when reporting a compilation problem:

* |TRACE| version (this information appears in the first messages of the
  execution).
* |TRACE| configuration information, such as:

  * the configure output and the generated :file:`config.log` file.
  * versions of any additional libraries (PAPI, libunwind, DynInst, CUDA, OpenACC,
    OpenCL, libxml2, libdwarf, libelf, ...)

* The compilation error itself as reported by invoking :command:`make V=1`.


.. _sec:bugexecution:

Reporting an execution issue
----------------------------

The following list of items are valuable when reporting an execution problem:

* |TRACE| version (this information appears in the first messages of the
  execution).
* |TRACE| configuration information, such as:

  * the configure output and the generated :file:`config.log` file,
  * versions of any additional libraries (PAPI, libunwind, DynInst, CUDA, OpenACC,
    OpenCL, libxml2, libdwarf, libelf, ...), and/or
  * the :command:`${EXTRAE_HOME}/etc/configured.sh` output.

* The result of the :command:`make check` command after the |TRACE| compilation
  process.
* Does the application successfully executes with and without |TRACE|?
* Any valuable information from the system (type of processor, network, ...).
* Which type of parallel programming paradigm does the application use: MPI,
  OpenMP, OmpSs, pthreads, ..., hybrid?
* How do you execute the application? Which instrumentation library do you use?
* The |TRACE| configuration file used.
* Any output generated by the application execution (in either the output or
  error channels).
* If the execution generates a core dump, a backtrace of the dump using the
  :command:`where` command of the ``gdb`` debugger.

