5 \___|\___/|_| \_\_____|
10 1.1 There are still bugs
14 1.5 Who will fix the problems
15 1.6 How to get a stack trace
16 1.7 Bugs in libcurl bindings
18 2. Bug fixing procedure
19 2.1 What happens on first filing
23 2.5 Lack of time/interest
26 2.8 Closing off stalled bugs
28 ==============================================================================
30 1.1 There are still bugs
32 Curl and libcurl have grown substantially since the beginning. At the time
33 of writing (January 2013), there are about 83,000 lines of source code, and
34 by the time you read this it has probably grown even more.
36 Of course there are lots of bugs left. And lots of misfeatures.
38 To help us make curl the stable and solid product we want it to be, we need
39 bug reports and bug fixes.
43 If you can't fix a bug yourself and submit a fix for it, try to report an as
44 detailed report as possible to a curl mailing list to allow one of us to
45 have a go at a solution. You can optionally also post your bug/problem at
46 curl's bug tracking system over at
48 https://github.com/curl/curl/issues
50 Please read the rest of this document below first before doing that!
52 If you feel you need to ask around first, find a suitable mailing list and
53 post there. The lists are available on https://curl.haxx.se/mail/
57 When reporting a bug, you should include all information that will help us
58 understand what's wrong, what you expected to happen and how to repeat the
59 bad behavior. You therefore need to tell us:
61 - your operating system's name and version number
63 - what version of curl you're using (curl -V is fine)
65 - versions of the used libraries that libcurl is built to use
67 - what URL you were working with (if possible), at least which protocol
69 and anything and everything else you think matters. Tell us what you
70 expected to happen, tell use what did happen, tell us how you could make it
71 work another way. Dig around, try out, test. Then include all the tiny bits
72 and pieces in your report. You will benefit from this yourself, as it will
73 enable us to help you quicker and more accurately.
75 Since curl deals with networks, it often helps us if you include a protocol
76 debug dump with your bug report. The output you get by using the -v or
79 If curl crashed, causing a core dump (in unix), there is hardly any use to
80 send that huge file to anyone of us. Unless we have an exact same system
81 setup as you, we can't do much with it. Instead we ask you to get a stack
82 trace and send that (much smaller) output to us instead!
84 The address and how to subscribe to the mailing lists are detailed in the
89 When you've written your own application with libcurl to perform transfers,
90 it is even more important to be specific and detailed when reporting bugs.
92 Tell us the libcurl version and your operating system. Tell us the name and
93 version of all relevant sub-components like for example the SSL library
94 you're using and what name resolving your libcurl uses. If you use SFTP or
95 SCP, the libssh2 version is relevant etc.
97 Showing us a real source code example repeating your problem is the best way
98 to get our attention and it will greatly increase our chances to understand
99 your problem and to work on a fix (if we agree it truly is a problem).
101 Lots of problems that appear to be libcurl problems are actually just abuses
102 of the libcurl API or other malfunctions in your applications. It is advised
103 that you run your problematic program using a memory debug tool like
104 valgrind or similar before you post memory-related or "crashing" problems to
107 1.5 Who will fix the problems
109 If the problems or bugs you describe are considered to be bugs, we want to
110 have the problems fixed.
112 There are no developers in the curl project that are paid to work on bugs.
113 All developers that take on reported bugs do this on a voluntary basis. We
114 do it out of an ambition to keep curl and libcurl excellent products and out
117 But please do not assume that you can just lump over something to us and it
118 will then magically be fixed after some given time. Most often we need
119 feedback and help to understand what you've experienced and how to repeat a
120 problem. Then we may only be able to assist YOU to debug the problem and to
121 track down the proper fix.
123 We get reports from many people every month and each report can take a
124 considerable amount of time to really go to the bottom with.
126 1.6 How to get a stack trace
128 First, you must make sure that you compile all sources with -g and that you
129 don't 'strip' the final executable. Try to avoid optimizing the code as
130 well, remove -O, -O2 etc from the compiler options.
132 Run the program until it cores.
134 Run your debugger on the core file, like '<debugger> curl core'. <debugger>
135 should be replaced with the name of your debugger, in most cases that will
136 be 'gdb', but 'dbx' and others also occur.
138 When the debugger has finished loading the core file and presents you a
139 prompt, enter 'where' (without the quotes) and press return.
141 The list that is presented is the stack trace. If everything worked, it is
142 supposed to contain the chain of functions that were called when curl
143 crashed. Include the stack trace with your detailed bug report. It'll help a
146 1.7 Bugs in libcurl bindings
148 There will of course pop up bugs in libcurl bindings. You should then
149 primarily approach the team that works on that particular binding and see
150 what you can do to help them fix the problem.
152 If you suspect that the problem exists in the underlying libcurl, then
153 please convert your program over to plain C and follow the steps outlined
156 2. Bug fixing procedure
158 2.1 What happens on first filing
160 When a new issue is posted in the issue tracker or on the mailing list, the
161 team of developers first need to see the report. Maybe they took the day
162 off, maybe they're off in the woods hunting. Have patience. Allow at least a
163 few days before expecting someone to have responded.
165 In the issue tracker you can expect that some labels will be set on the
166 issue to help categorize it.
170 If your issue/bug report wasn't perfect at once (and few are), chances are
171 that someone will ask follow-up questions. Which version did you use? Which
172 options did you use? How often does the problem occur? How can we reproduce
173 this problem? Which protocols does it involve? Or perhaps much more specific
174 and deep diving questions. It all depends on your specific issue.
176 You should then respond to these follow-up questions and provide more info
177 about the problem, so that we can help you figure it out. Or maybe you can
178 help us figure it out. An active back-and-forth communication is important
179 and the key for finding a cure and landing a fix.
183 For problems that we can't reproduce and can't understand even after having
184 gotten all the info we need and having studied the source code over again,
185 are really hard to solve so then we may require further work from you who
186 actually see or experience the problem.
190 If the problem haven't been understood or reproduced, and there's nobody
191 responding to follow-up questions or questions asking for clarifications or
192 for discussing possible ways to move forward with the task, we take that as
193 a strong suggestion that the bug is not important.
195 Unimportant issues will be closed as inactive sooner or later as they can't
196 be fixed. The inactivity period (waiting for responses) should not be
197 shorter than two weeks but may extend months.
199 2.5 Lack of time/interest
201 Bugs that are filed and are understood can unfortunately end up in the
202 "nobody cares enough about it to work on it" category. Such bugs are
203 perfectly valid problems that *should* get fixed but apparently aren't. We
204 try to mark such bugs as "KNOWN_BUGS material" after a time of inactivity
205 and if no activity is noticed after yet some time those bugs are added to
206 KNOWN_BUGS and are closed in the issue tracker.
210 This is a list of known bugs. Bugs we know exist and that have been pointed
211 out but that haven't yet been fixed. The reasons for why they haven't been
212 fixed can involve anything really, but the primary reason is that nobody has
213 considered these problems to be important enough to spend the necesary time
214 and effort to have them fixed.
216 The KNOWN_BUGS are always up for grabs and we will always love the ones who
217 bring one of them back to live and offers solutions to them.
219 The KNOWN_BUGS document has a sibling document known as TODO.
223 Issues that are filed or reported that aren't really bugs but more missing
224 features or ideas for future improvements and so on are marked as
225 'enhancement' or 'feature-request' and will be added to the TODO document
226 instead and the issue is closed. We don't keep TODO items in the issue
229 The TODO document is full of ideas and suggestions of what we can add or fix
230 one day. You're always encouraged and free to grab one of those items and
231 take up a discussion with the curl development team on how that could be
232 implemented or provided in the project so that you can work on ticking it
235 If the issue is rather a bug and not a missing feature or functionality, it
236 is listed in KNOWN_BUGS instead.
238 2.8 Closing off stalled bugs
240 The issue and pull request trackers on https://github.com/curl/curl will
241 only hold "active" entries (using a non-precise defintion of what active
242 actually is, but they're at least not completely dead). Those that are
243 abandonded or in other ways dormant will be closed and sometimes added to
244 TODO and KNOWN_BUGS instead.
246 This way, we only have "active" issues open on github. Irrelevant issues and
247 pull requests will not distract developes or casual visitors.