BUGS 5.9 KB

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