Bug reporting
(Created page with "==General== Bugs or missing features are always possible in any software or other branches of engineering. We will try to fix the problems in Yate as soon as possible. Please ...") |
|||
(13 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | + | ||
Bugs or missing features are always possible in any software or other branches of engineering. We will try to fix the problems in Yate as soon as possible. Please note that our priorities may be different than yours... | Bugs or missing features are always possible in any software or other branches of engineering. We will try to fix the problems in Yate as soon as possible. Please note that our priorities may be different than yours... | ||
Line 9: | Line 9: | ||
Before making a bug report you should check if the problem was known before. Someone may be working on it, it may have been fixed or there may be workarounds. | Before making a bug report you should check if the problem was known before. Someone may be working on it, it may have been fixed or there may be workarounds. | ||
− | * Make sure you are running a clean build of Yate | + | * Make sure you are running a clean build of Yate. Subtle problems may be caused by partial builds. If the compiler crashed at any point you should clean everything and start building from start. |
− | * Read the [[Documentation]] - especially the parts related to your problem. | + | * Read the [[Modules|Documentation]] - especially the parts related to your problem. |
− | * Verify if any other equipment or software you use is | + | * Verify if any other equipment or software you use is compatible with Yate. |
− | * Check the | + | * Check the [http://yate.null.ro/mantis/ Bug tracker] for open bug reports of the problem. Please look at the closed and resolved bugs too - the problem may have been already fixed in a new release or in SVN. |
− | * Check the | + | * Check the [http://yate.null.ro/archive/ List archive] if the problem wasn't reported before. |
− | * Ask our friend | + | * Ask our friend [http://www.google.com/ Google] |
== What to include in the report== | == What to include in the report== | ||
Line 25: | Line 25: | ||
* Information on any firewall or NAT you may have on that computer or in the network (for VoIP protocols). | * Information on any firewall or NAT you may have on that computer or in the network (for VoIP protocols). | ||
* Version of Yate, date of latest SVN update if applicable. | * Version of Yate, date of latest SVN update if applicable. | ||
− | * Logs, preferably with the highest [[ | + | * Logs, preferably with the highest [[Debug Output|level of debugging]]. Please enable timestamping (options -Dt, -De or -Df). |
* Backtraces of the stack if Yate crashes and a core dump is available. | * Backtraces of the stack if Yate crashes and a core dump is available. | ||
* Ethereal packet captures or at least tcpdump logs (tcpdump -nn is usually enough) if you suspect network related problems. | * Ethereal packet captures or at least tcpdump logs (tcpdump -nn is usually enough) if you suspect network related problems. | ||
Line 35: | Line 35: | ||
Crashes caused by memory corruptions leave useless core files (since the damage was caused earlier, typically by a different thread). If you see "''glibc detected ... memory corruption''" then please do not post such backtraces. The logs may provide some information about what went wrong. | Crashes caused by memory corruptions leave useless core files (since the damage was caused earlier, typically by a different thread). If you see "''glibc detected ... memory corruption''" then please do not post such backtraces. The logs may provide some information about what went wrong. | ||
− | '''NOTE | + | '''NOTE''' A backtrace is usefull only if it includes symbol information. You can compile the debug version of Yate, either by "make debug" or choosing the "Win32 |
+ | Debug" configuration (in Windows). | ||
== Where to report bugs?== | == Where to report bugs?== | ||
Line 41: | Line 42: | ||
There are several places you can use to report bugs: | There are several places you can use to report bugs: | ||
* For small problems or just to quickly ask a question you can use IRC - the #yate channel on the Freenode network (irc.freenode.net) | * For small problems or just to quickly ask a question you can use IRC - the #yate channel on the Freenode network (irc.freenode.net) | ||
− | * More complex problems can be asked on the [[ | + | * More complex problems can be asked on the [[Mail List]] - the answer may be slower but more people may be able to answer. |
− | * Finally, there's the | + | * Finally, there's the [http://yate.null.ro/mantis/ Bug tracker] where you can report a problem, add notes, logs and patches and track how the report was handled. |
== How to create a comprehensive backtrace from a core file== | == How to create a comprehensive backtrace from a core file== | ||
Line 63: | Line 64: | ||
* Make sure you set something like '''ulimit -c unlimited''' or start Yate with the -C command line option | * Make sure you set something like '''ulimit -c unlimited''' or start Yate with the -C command line option | ||
* Check if core size limits aren't restricted by the superuser, system policy or filesystem quota | * Check if core size limits aren't restricted by the superuser, system policy or filesystem quota | ||
+ | |||
+ | |||
+ | '''See also''' | ||
+ | |||
+ | * [[Debug Output]] | ||
+ | * [[Mail List]] | ||
+ | * [[Debugging Yate Client on Windows]] |
Latest revision as of 11:36, 9 July 2013
Bugs or missing features are always possible in any software or other branches of engineering. We will try to fix the problems in Yate as soon as possible. Please note that our priorities may be different than yours...
Even if you spent time and accumulated frustration trying to fix a problem you should always make a good report of the problem. Try to make it brief, informative and correct. It never makes sense to just say "It doesn't work!" - that is not going to get problems fixed or even investigated.
You can read a great article by Simon Tatham on How to Report Bugs Effectively. If you want a second opinion please see what Google can find about it.
Contents |
[edit] What to check before reporting?
Before making a bug report you should check if the problem was known before. Someone may be working on it, it may have been fixed or there may be workarounds.
- Make sure you are running a clean build of Yate. Subtle problems may be caused by partial builds. If the compiler crashed at any point you should clean everything and start building from start.
- Read the Documentation - especially the parts related to your problem.
- Verify if any other equipment or software you use is compatible with Yate.
- Check the Bug tracker for open bug reports of the problem. Please look at the closed and resolved bugs too - the problem may have been already fixed in a new release or in SVN.
- Check the List archive if the problem wasn't reported before.
- Ask our friend Google
[edit] What to include in the report
Making an usefull bug report is not difficult. You have to provide us maximum of information so we can locate the problem.
- A brief description of the problem, what you expect to happen and what you actually observe happening.
- Whether the problem appears always or is intermittent.
- Details about the hardware you are running Yate on - type, speed and number of processors, size of memory.
- The version of your operating system and/or distribution.
- Information on any firewall or NAT you may have on that computer or in the network (for VoIP protocols).
- Version of Yate, date of latest SVN update if applicable.
- Logs, preferably with the highest level of debugging. Please enable timestamping (options -Dt, -De or -Df).
- Backtraces of the stack if Yate crashes and a core dump is available.
- Ethereal packet captures or at least tcpdump logs (tcpdump -nn is usually enough) if you suspect network related problems.
Please do NOT include large log files. Also never include core files - they are useless without the executable that crashed and all its libraries and modules.
Do not use screen or telnet captures from rmanager. Some scripts and third party libraries write only to the log file and you may be missing important information if you take it from other sources. Only log file or console information is complete.
Crashes caused by memory corruptions leave useless core files (since the damage was caused earlier, typically by a different thread). If you see "glibc detected ... memory corruption" then please do not post such backtraces. The logs may provide some information about what went wrong.
NOTE A backtrace is usefull only if it includes symbol information. You can compile the debug version of Yate, either by "make debug" or choosing the "Win32 Debug" configuration (in Windows).
[edit] Where to report bugs?
There are several places you can use to report bugs:
- For small problems or just to quickly ask a question you can use IRC - the #yate channel on the Freenode network (irc.freenode.net)
- More complex problems can be asked on the Mail List - the answer may be slower but more people may be able to answer.
- Finally, there's the Bug tracker where you can report a problem, add notes, logs and patches and track how the report was handled.
[edit] How to create a comprehensive backtrace from a core file
Creating an useful backtrace may be tricky. Here is a formula to get plenty of information:
echo -e 'thread apply all bt\nquit' > gdb-bt-all.txt gdb -x gdb-bt-all.txt yate coreFILENAME &> yate-bt-all.log
Replace coreFILENAME with the name of the generated core file. The yate-bt-all.log file will contain a backtrace of all threads. For best results Yate should be compiled with debug symbols. This does not hit the performance or memory usage, just increase the size of the files on disk.
Recent versions of Yate provide a readily made gdb-bt-all.txt in the tools subdirectory of sources.
If you have a core dump but Yate was compiled without symbols you can recompile it and get a proper backtrace - just be sure you don't change the source or configure options. Issuing a "make clean debug" will recreate all binaries with exactly the same addresses but with debugging information. Do not use "make ddebug" or "make xdebug" as these will change the code.
[edit] Creating core files
If Yate doesn't create core files when it crashes:
- Check that the directory Yate is started in is writable, there's where the core files are dumped
- Make sure you set something like ulimit -c unlimited or start Yate with the -C command line option
- Check if core size limits aren't restricted by the superuser, system policy or filesystem quota
See also