| _ _ ____ _ |
| ___| | | | _ \| | |
| / __| | | | |_) | | |
| | (__| |_| | _ <| |___ |
| \___|\___/|_| \_\_____| |
| |
| BUGS |
| |
| 1. Bugs |
| 1.1 There are still bugs |
| 1.2 Where to report |
| 1.3 What to report |
| 1.4 libcurl problems |
| 1.5 Who will fix the problems |
| 1.6 How to get a stack trace |
| 1.7 Bugs in libcurl bindings |
| |
| ============================================================================== |
| |
| 1.1 There are still bugs |
| |
| Curl and libcurl have grown substantially since the beginning. At the time |
| of writing (September 2011), there are about 66000 lines of source code, and |
| by the time you read this it has probably grown even more. |
| |
| Of course there are lots of bugs left. And lots of misfeatures. |
| |
| To help us make curl the stable and solid product we want it to be, we need |
| bug reports and bug fixes. |
| |
| 1.2 Where to report |
| |
| If you can't fix a bug yourself and submit a fix for it, try to report an as |
| detailed report as possible to a curl mailing list to allow one of us to |
| have a go at a solution. You can optionally also post your bug/problem at |
| curl's bug tracking system over at |
| |
| http://sourceforge.net/bugs/?group_id=976 |
| |
| (but please read the sections below first before doing that) |
| |
| If you feel you need to ask around first, find a suitable mailing list and |
| post there. The lists are available on http://curl.haxx.se/mail/ |
| |
| 1.3 What to report |
| |
| When reporting a bug, you should include all information that will help us |
| understand what's wrong, what you expected to happen and how to repeat the |
| bad behavior. You therefore need to tell us: |
| |
| - your operating system's name and version number |
| |
| - what version of curl you're using (curl -V is fine) |
| |
| - versions of the used libraries that libcurl is built to use |
| |
| - what URL you were working with (if possible), at least which protocol |
| |
| and anything and everything else you think matters. Tell us what you |
| expected to happen, tell use what did happen, tell us how you could make it |
| work another way. Dig around, try out, test. Then include all the tiny bits |
| and pieces in your report. You will benefit from this yourself, as it will |
| enable us to help you quicker and more accurately. |
| |
| Since curl deals with networks, it often helps us if you include a protocol |
| debug dump with your bug report. The output you get by using the -v or |
| --trace options. |
| |
| If curl crashed, causing a core dump (in unix), there is hardly any use to |
| send that huge file to anyone of us. Unless we have an exact same system |
| setup as you, we can't do much with it. Instead we ask you to get a stack |
| trace and send that (much smaller) output to us instead! |
| |
| The address and how to subscribe to the mailing lists are detailed in the |
| MANUAL file. |
| |
| 1.4 libcurl problems |
| |
| First, post all libcurl problems on the curl-library mailing list. |
| |
| When you've written your own application with libcurl to perform transfers, |
| it is even more important to be specific and detailed when reporting bugs. |
| |
| Tell us the libcurl version and your operating system. Tell us the name and |
| version of all relevant sub-components like for example the SSL library |
| you're using and what name resolving your libcurl uses. If you use SFTP or |
| SCP, the libssh2 version is relevant etc. |
| |
| Showing us a real source code example repeating your problem is the best way |
| to get our attention and it will greatly increase our chances to understand |
| your problem and to work on a fix (if we agree it truly is a problem). |
| |
| Lots of problems that appear to be libcurl problems are actually just abuses |
| of the libcurl API or other malfunctions in your applications. It is adviced |
| that you run your problematic program using a memory debug tool like |
| valgrind or similar before you post memory-related or "crashing" problems to |
| us. |
| |
| 1.5 Who will fix the problems |
| |
| If the problems or bugs you describe are considered to be bugs, we want to |
| have the problems fixed. |
| |
| There are no developers in the curl project that are paid to work on bugs. |
| All developers that take on reported bugs do this on a voluntary basis. We |
| do it out of an ambition to keep curl and libcurl excellent products and out |
| of pride. |
| |
| But please do not assume that you can just lump over something to us and it |
| will then magically be fixed after some given time. Most often we need |
| feedback and help to understand what you've experienced and how to repeat a |
| problem. Then we may only be able to assist YOU to debug the problem and to |
| track down the proper fix. |
| |
| We get reports from many people every month and each report can take a |
| considerable amount of time to really go to the bottom with. |
| |
| 1.6 How to get a stack trace |
| |
| First, you must make sure that you compile all sources with -g and that you |
| don't 'strip' the final executable. Try to avoid optimizing the code as |
| well, remove -O, -O2 etc from the compiler options. |
| |
| Run the program until it cores. |
| |
| Run your debugger on the core file, like '<debugger> curl core'. <debugger> |
| should be replaced with the name of your debugger, in most cases that will |
| be 'gdb', but 'dbx' and others also occur. |
| |
| When the debugger has finished loading the core file and presents you a |
| prompt, enter 'where' (without the quotes) and press return. |
| |
| The list that is presented is the stack trace. If everything worked, it is |
| supposed to contain the chain of functions that were called when curl |
| crashed. Include the stack trace with your detailed bug report. It'll help a |
| lot. |
| |
| 1.7 Bugs in libcurl bindings |
| |
| There will of course pop up bugs in libcurl bindings. You should then |
| primarily approach the team that works on that particular binding and see |
| what you can do to help them fix the problem. |
| |
| If you suspect that the problem exists in the underlying libcurl, then |
| please convert your program over to plain C and follow the steps outlined |
| above. |