| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 1 | _ _ ____ _ |
| 2 | ___| | | | _ \| | |
| 3 | / __| | | | |_) | | |
| 4 | | (__| |_| | _ <| |___ |
| 5 | \___|\___/|_| \_\_____| |
| 6 | |
| 7 | BUGS |
| 8 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 9 | 1. Bugs |
| 10 | 1.1 There are still bugs |
| 11 | 1.2 Where to report |
| 12 | 1.3 What to report |
| 13 | 1.4 libcurl problems |
| 14 | 1.5 Who will fix the problems |
| 15 | 1.6 How to get a stack trace |
| 16 | 1.7 Bugs in libcurl bindings |
| 17 | |
| 18 | ============================================================================== |
| 19 | |
| 20 | 1.1 There are still bugs |
| 21 | |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 22 | Curl and libcurl have grown substantially since the beginning. At the time |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 23 | of writing (January 2013), there are about 83,000 lines of source code, and |
| 24 | by the time you read this it has probably grown even more. |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 25 | |
| 26 | Of course there are lots of bugs left. And lots of misfeatures. |
| 27 | |
| 28 | To help us make curl the stable and solid product we want it to be, we need |
| 29 | bug reports and bug fixes. |
| 30 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 31 | 1.2 Where to report |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 32 | |
| 33 | If you can't fix a bug yourself and submit a fix for it, try to report an as |
| 34 | detailed report as possible to a curl mailing list to allow one of us to |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 35 | have a go at a solution. You can optionally also post your bug/problem at |
| 36 | curl's bug tracking system over at |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 37 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 38 | https://github.com/curl/curl/issues |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 39 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 40 | Please read the rest of this document below first before doing that! |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 41 | |
| 42 | If you feel you need to ask around first, find a suitable mailing list and |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 43 | post there. The lists are available on https://curl.haxx.se/mail/ |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 44 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 45 | 1.3 What to report |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 46 | |
| 47 | When reporting a bug, you should include all information that will help us |
| 48 | understand what's wrong, what you expected to happen and how to repeat the |
| 49 | bad behavior. You therefore need to tell us: |
| 50 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 51 | - your operating system's name and version number |
| 52 | |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 53 | - what version of curl you're using (curl -V is fine) |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 54 | |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 55 | - versions of the used libraries that libcurl is built to use |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 56 | |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 57 | - what URL you were working with (if possible), at least which protocol |
| 58 | |
| 59 | and anything and everything else you think matters. Tell us what you |
| 60 | expected to happen, tell use what did happen, tell us how you could make it |
| 61 | work another way. Dig around, try out, test. Then include all the tiny bits |
| 62 | and pieces in your report. You will benefit from this yourself, as it will |
| 63 | enable us to help you quicker and more accurately. |
| 64 | |
| 65 | Since curl deals with networks, it often helps us if you include a protocol |
| 66 | debug dump with your bug report. The output you get by using the -v or |
| 67 | --trace options. |
| 68 | |
| 69 | If curl crashed, causing a core dump (in unix), there is hardly any use to |
| 70 | send that huge file to anyone of us. Unless we have an exact same system |
| 71 | setup as you, we can't do much with it. Instead we ask you to get a stack |
| 72 | trace and send that (much smaller) output to us instead! |
| 73 | |
| 74 | The address and how to subscribe to the mailing lists are detailed in the |
| 75 | MANUAL file. |
| 76 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 77 | 1.4 libcurl problems |
| 78 | |
| 79 | First, post all libcurl problems on the curl-library mailing list. |
| 80 | |
| 81 | When you've written your own application with libcurl to perform transfers, |
| 82 | it is even more important to be specific and detailed when reporting bugs. |
| 83 | |
| 84 | Tell us the libcurl version and your operating system. Tell us the name and |
| 85 | version of all relevant sub-components like for example the SSL library |
| 86 | you're using and what name resolving your libcurl uses. If you use SFTP or |
| 87 | SCP, the libssh2 version is relevant etc. |
| 88 | |
| 89 | Showing us a real source code example repeating your problem is the best way |
| 90 | to get our attention and it will greatly increase our chances to understand |
| 91 | your problem and to work on a fix (if we agree it truly is a problem). |
| 92 | |
| 93 | Lots of problems that appear to be libcurl problems are actually just abuses |
| 94 | of the libcurl API or other malfunctions in your applications. It is advised |
| 95 | that you run your problematic program using a memory debug tool like |
| 96 | valgrind or similar before you post memory-related or "crashing" problems to |
| 97 | us. |
| 98 | |
| 99 | 1.5 Who will fix the problems |
| 100 | |
| 101 | If the problems or bugs you describe are considered to be bugs, we want to |
| 102 | have the problems fixed. |
| 103 | |
| 104 | There are no developers in the curl project that are paid to work on bugs. |
| 105 | All developers that take on reported bugs do this on a voluntary basis. We |
| 106 | do it out of an ambition to keep curl and libcurl excellent products and out |
| 107 | of pride. |
| 108 | |
| 109 | But please do not assume that you can just lump over something to us and it |
| 110 | will then magically be fixed after some given time. Most often we need |
| 111 | feedback and help to understand what you've experienced and how to repeat a |
| 112 | problem. Then we may only be able to assist YOU to debug the problem and to |
| 113 | track down the proper fix. |
| 114 | |
| 115 | We get reports from many people every month and each report can take a |
| 116 | considerable amount of time to really go to the bottom with. |
| 117 | |
| 118 | 1.6 How to get a stack trace |
| 9487f7f | 2011-08-03 07:05:30 -0700 | [diff] [blame] | 119 | |
| 120 | First, you must make sure that you compile all sources with -g and that you |
| 121 | don't 'strip' the final executable. Try to avoid optimizing the code as |
| 122 | well, remove -O, -O2 etc from the compiler options. |
| 123 | |
| 124 | Run the program until it cores. |
| 125 | |
| 126 | Run your debugger on the core file, like '<debugger> curl core'. <debugger> |
| 127 | should be replaced with the name of your debugger, in most cases that will |
| 128 | be 'gdb', but 'dbx' and others also occur. |
| 129 | |
| 130 | When the debugger has finished loading the core file and presents you a |
| 131 | prompt, enter 'where' (without the quotes) and press return. |
| 132 | |
| 133 | The list that is presented is the stack trace. If everything worked, it is |
| 134 | supposed to contain the chain of functions that were called when curl |
| 135 | crashed. Include the stack trace with your detailed bug report. It'll help a |
| 136 | lot. |
| 137 | |
Dirk Vogt | a7d7f96 | 2016-12-01 10:50:48 +0100 | [diff] [blame] | 138 | 1.7 Bugs in libcurl bindings |
| 139 | |
| 140 | There will of course pop up bugs in libcurl bindings. You should then |
| 141 | primarily approach the team that works on that particular binding and see |
| 142 | what you can do to help them fix the problem. |
| 143 | |
| 144 | If you suspect that the problem exists in the underlying libcurl, then |
| 145 | please convert your program over to plain C and follow the steps outlined |
| 146 | above. |