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