Our preferred way of receiving bugs is via the RTEMS Bugzilla bug reporting system.
Before you report a bug, please check the list of #Non-Bugs and a current development snapshot. If you want to report a bug with older versions of RTEMS, we strongly recommend upgrading to the current release first.
Bug reporting instructions
When you have checked that your report meets the following criteria, please submit it according to the generic instructions for using the RTEMS Bugzilla.
Please include in your bug report all of the following items:
- the exact version of RTEMS;
- the system type (CPU family, model, and BSP);
- the compiler toolchain version used;
- the options given when RTEMS was configured/built;
- a description of the expected behavior;
- a description of actual undesired behavior.
Only when your bug report requires multiple source files to be reproduced should you use an archive; otherwise an individual source file or a diff should be uploaded that contains the minimal set of source code for reproducing the bug. In any case, make sure the above are included in the body of your bug report as plain text, even if needlessly duplicated as part of an archive.
If you fail to supply enough information for a bug report to be reproduced, someone will probably ask you to post additional information. In this case, please post the additional information through the bugzilla interface and not just to the person who requested it, unless explicitly told so.
What we do not want
- A source file that #includes header files that are left out of the bug report (see above).
- That source file and a collection of header files.
- An attached archive (tar, zip, shar, whatever) containing any of the above.
- A code snippet that won't cause RTEMS to produce the exact output mentioned in the bug report.
- The location (URL) of the package that failed to build.
- E-mail messages that complement previous, incomplete bug reports. Post a new, self-contained, full bug report instead, if possible as a follow-up to the original bug report.
- Assembly files (*.s) produced by the compiler, or any binary files, such as object files, executables, core files, or precompiled header files.
- Duplicate bug reports, or reports of bugs already fixed in the development tree.
- Bugs in the assembler, the linker or the C library. These are separate projects, with separate mailing lists and different bug reporting procedures. The RTEMS Project is happy to work with you and those projects to resolve the problem but we must work with those projects.
- Bugs in releases or snapshots of RTEMS not issued by the RTEMS Project. Report them to whoever provided you with the release.
- Questions about the correctness or the expected behavior of programming language constructs or calls to library routines that are not part of RTEMS.
Developing and debugging real-time embedded systems can be difficult. Exercise caution in reporting an error that occurs only some of the times a certain program is executed, such that retrying a sufficient number of times results in a successful compilation; this is often a symptom of a hardware problem or application issue, not of a RTEMS bug (sorry). We do recognize that sometimes a timing bug will exist in RTEMS but want you to exercise due diligence before pointing fingers.
Where to post it
Please submit your bug report directly to the RTEMS Bugzilla bug database.
Small patches can also be submitted to the rtems-devel mailing list, but large messages may be bounced. If your patch is too large, please post it using the RTEMS Bugzilla bug database.
This section contains a description of things that RTEMS users encounter that may be considered bugs in RTEMS but are not.
- The POSIX standard does NOT specify the default set of thread attributes. Thus when passing a NULL for attributes to pthread_create, the application is not guaranteed any particular thread behavior.
- The defaults for all RTEMS Configuration Table parameters are intentionally small. Thus it is common for RTEMS tasking and file related calls to return errors indicating out of resources until the configuration parameters are properly tuned for the application. For example, there are only 3 file descriptors available by default: stdin, stdout, and stderr. Any attempt to open a socket or file will fail unless more file descriptors are configured.
- When first developing a BSP, many users encounter an unexpected interrupt or exception immediately upon completion of RTEMS initialization. This occurs because interrupts are disabled during RTEMS initialization and are automatically initialized as part of switching to the first task. The interrupted user code will be in either _CPU_Context_switch or _Thread_Handler. This indicates that an interrupt source has not been properly initialized or masked.
- Some users encounter a random reset during BSP initialization. This usually indicates that the board has a watchdog timer that is not being properly serviced during the BSP initialization.