blob: 12714cc17d18d490e6664558fd8489e0b2ea9c72 [file] [log] [blame]
lh9ed821d2023-04-07 01:36:19 -07001 _ _ ____ _
2 ___| | | | _ \| |
3 / __| | | | |_) | |
4 | (__| |_| | _ <| |___
5 \___|\___/|_| \_\_____|
6
7BUGS
8
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 1.8 Bugs in old versions
18
19 2. Bug fixing procedure
20 2.1 What happens on first filing
21 2.2 First response
22 2.3 Not reproducible
23 2.4 Unresponsive
24 2.5 Lack of time/interest
25 2.6 KNOWN_BUGS
26 2.7 TODO
27 2.8 Closing off stalled bugs
28
29==============================================================================
30
311.1 There are still bugs
32
33 Curl and libcurl have grown substantially since the beginning. At the time
34 of writing (January 2013), there are about 83,000 lines of source code, and
35 by the time you read this it has probably grown even more.
36
37 Of course there are lots of bugs left. And lots of misfeatures.
38
39 To help us make curl the stable and solid product we want it to be, we need
40 bug reports and bug fixes.
41
421.2 Where to report
43
44 If you can't fix a bug yourself and submit a fix for it, try to report an as
45 detailed report as possible to a curl mailing list to allow one of us to
46 have a go at a solution. You can optionally also post your bug/problem at
47 curl's bug tracking system over at
48
49 https://github.com/curl/curl/issues
50
51 Please read the rest of this document below first before doing that!
52
53 If you feel you need to ask around first, find a suitable mailing list and
54 post there. The lists are available on https://curl.haxx.se/mail/
55
561.3 What to report
57
58 When reporting a bug, you should include all information that will help us
59 understand what's wrong, what you expected to happen and how to repeat the
60 bad behavior. You therefore need to tell us:
61
62 - your operating system's name and version number
63
64 - what version of curl you're using (curl -V is fine)
65
66 - versions of the used libraries that libcurl is built to use
67
68 - what URL you were working with (if possible), at least which protocol
69
70 and anything and everything else you think matters. Tell us what you
71 expected to happen, tell use what did happen, tell us how you could make it
72 work another way. Dig around, try out, test. Then include all the tiny bits
73 and pieces in your report. You will benefit from this yourself, as it will
74 enable us to help you quicker and more accurately.
75
76 Since curl deals with networks, it often helps us if you include a protocol
77 debug dump with your bug report. The output you get by using the -v or
78 --trace options.
79
80 If curl crashed, causing a core dump (in unix), there is hardly any use to
81 send that huge file to anyone of us. Unless we have an exact same system
82 setup as you, we can't do much with it. Instead we ask you to get a stack
83 trace and send that (much smaller) output to us instead!
84
85 The address and how to subscribe to the mailing lists are detailed in the
86 MANUAL file.
87
881.4 libcurl problems
89
90 When you've written your own application with libcurl to perform transfers,
91 it is even more important to be specific and detailed when reporting bugs.
92
93 Tell us the libcurl version and your operating system. Tell us the name and
94 version of all relevant sub-components like for example the SSL library
95 you're using and what name resolving your libcurl uses. If you use SFTP or
96 SCP, the libssh2 version is relevant etc.
97
98 Showing us a real source code example repeating your problem is the best way
99 to get our attention and it will greatly increase our chances to understand
100 your problem and to work on a fix (if we agree it truly is a problem).
101
102 Lots of problems that appear to be libcurl problems are actually just abuses
103 of the libcurl API or other malfunctions in your applications. It is advised
104 that you run your problematic program using a memory debug tool like
105 valgrind or similar before you post memory-related or "crashing" problems to
106 us.
107
1081.5 Who will fix the problems
109
110 If the problems or bugs you describe are considered to be bugs, we want to
111 have the problems fixed.
112
113 There are no developers in the curl project that are paid to work on bugs.
114 All developers that take on reported bugs do this on a voluntary basis. We
115 do it out of an ambition to keep curl and libcurl excellent products and out
116 of pride.
117
118 But please do not assume that you can just lump over something to us and it
119 will then magically be fixed after some given time. Most often we need
120 feedback and help to understand what you've experienced and how to repeat a
121 problem. Then we may only be able to assist YOU to debug the problem and to
122 track down the proper fix.
123
124 We get reports from many people every month and each report can take a
125 considerable amount of time to really go to the bottom with.
126
1271.6 How to get a stack trace
128
129 First, you must make sure that you compile all sources with -g and that you
130 don't 'strip' the final executable. Try to avoid optimizing the code as
131 well, remove -O, -O2 etc from the compiler options.
132
133 Run the program until it cores.
134
135 Run your debugger on the core file, like '<debugger> curl core'. <debugger>
136 should be replaced with the name of your debugger, in most cases that will
137 be 'gdb', but 'dbx' and others also occur.
138
139 When the debugger has finished loading the core file and presents you a
140 prompt, enter 'where' (without the quotes) and press return.
141
142 The list that is presented is the stack trace. If everything worked, it is
143 supposed to contain the chain of functions that were called when curl
144 crashed. Include the stack trace with your detailed bug report. It'll help a
145 lot.
146
1471.7 Bugs in libcurl bindings
148
149 There will of course pop up bugs in libcurl bindings. You should then
150 primarily approach the team that works on that particular binding and see
151 what you can do to help them fix the problem.
152
153 If you suspect that the problem exists in the underlying libcurl, then
154 please convert your program over to plain C and follow the steps outlined
155 above.
156
1571.8 Bugs in old versions
158
159 The curl project typically releases new versions every other month, and we
160 fix several hundred bugs per year. For a huge table of releases, number of
161 bug fixes and more, see: https://curl.haxx.se/docs/releases.html
162
163 The developers in the curl project do not have bandwidth or energy enough to
164 maintain several branches or to spend much time on hunting down problems in
165 old versions when chances are we already fixed them or at least that they've
166 changed nature and appearance in later versions.
167
168 When you experience a problem and want to report it, you really SHOULD
169 include the version number of the curl you're using when you experience the
170 issue. If that version number shows us that you're using an out-of-date
171 curl, you should also try out a modern curl version to see if the problem
172 persists or how/if it has changed in apperance.
173
174 Even if you cannot immediately upgrade your application/system to run the
175 latest curl version, you can most often at least run a test version or
176 experimental build or similar, to get this confirmed or not.
177
178 At times people insist that they cannot upgrade to a modern curl version,
179 but instead they "just want the bug fixed". That's fine, just don't count on
180 us spending many cycles on trying to identify which single commit, if that's
181 even possible, that at some point in the past fixed the problem you're now
182 experiencing.
183
184 Security wise, it is almost always a bad idea to lag behind the current curl
185 versions by a lot. We keeping discovering and reporting security problems
186 over time see you can see in this table:
187 https://curl.haxx.se/docs/vulnerabilities.html
188
1892. Bug fixing procedure
190
1912.1 What happens on first filing
192
193 When a new issue is posted in the issue tracker or on the mailing list, the
194 team of developers first need to see the report. Maybe they took the day
195 off, maybe they're off in the woods hunting. Have patience. Allow at least a
196 few days before expecting someone to have responded.
197
198 In the issue tracker you can expect that some labels will be set on the
199 issue to help categorize it.
200
2012.2 First response
202
203 If your issue/bug report wasn't perfect at once (and few are), chances are
204 that someone will ask follow-up questions. Which version did you use? Which
205 options did you use? How often does the problem occur? How can we reproduce
206 this problem? Which protocols does it involve? Or perhaps much more specific
207 and deep diving questions. It all depends on your specific issue.
208
209 You should then respond to these follow-up questions and provide more info
210 about the problem, so that we can help you figure it out. Or maybe you can
211 help us figure it out. An active back-and-forth communication is important
212 and the key for finding a cure and landing a fix.
213
2142.3 Not reproducible
215
216 For problems that we can't reproduce and can't understand even after having
217 gotten all the info we need and having studied the source code over again,
218 are really hard to solve so then we may require further work from you who
219 actually see or experience the problem.
220
2212.4 Unresponsive
222
223 If the problem haven't been understood or reproduced, and there's nobody
224 responding to follow-up questions or questions asking for clarifications or
225 for discussing possible ways to move forward with the task, we take that as
226 a strong suggestion that the bug is not important.
227
228 Unimportant issues will be closed as inactive sooner or later as they can't
229 be fixed. The inactivity period (waiting for responses) should not be
230 shorter than two weeks but may extend months.
231
2322.5 Lack of time/interest
233
234 Bugs that are filed and are understood can unfortunately end up in the
235 "nobody cares enough about it to work on it" category. Such bugs are
236 perfectly valid problems that *should* get fixed but apparently aren't. We
237 try to mark such bugs as "KNOWN_BUGS material" after a time of inactivity
238 and if no activity is noticed after yet some time those bugs are added to
239 KNOWN_BUGS and are closed in the issue tracker.
240
2412.6 KNOWN_BUGS
242
243 This is a list of known bugs. Bugs we know exist and that have been pointed
244 out but that haven't yet been fixed. The reasons for why they haven't been
245 fixed can involve anything really, but the primary reason is that nobody has
246 considered these problems to be important enough to spend the necessary time
247 and effort to have them fixed.
248
249 The KNOWN_BUGS are always up for grabs and we will always love the ones who
250 bring one of them back to live and offers solutions to them.
251
252 The KNOWN_BUGS document has a sibling document known as TODO.
253
2542.7 TODO
255
256 Issues that are filed or reported that aren't really bugs but more missing
257 features or ideas for future improvements and so on are marked as
258 'enhancement' or 'feature-request' and will be added to the TODO document
259 instead and the issue is closed. We don't keep TODO items in the issue
260 tracker.
261
262 The TODO document is full of ideas and suggestions of what we can add or fix
263 one day. You're always encouraged and free to grab one of those items and
264 take up a discussion with the curl development team on how that could be
265 implemented or provided in the project so that you can work on ticking it
266 odd that document.
267
268 If the issue is rather a bug and not a missing feature or functionality, it
269 is listed in KNOWN_BUGS instead.
270
2712.8 Closing off stalled bugs
272
273 The issue and pull request trackers on https://github.com/curl/curl will
274 only hold "active" entries (using a non-precise definition of what active
275 actually is, but they're at least not completely dead). Those that are
276 abandonded or in other ways dormant will be closed and sometimes added to
277 TODO and KNOWN_BUGS instead.
278
279 This way, we only have "active" issues open on github. Irrelevant issues and
280 pull requests will not distract developes or casual visitors.