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