1.0.39.9: improvements to the manual
[sbcl.git] / doc / manual / support-and-bugs.texinfo
1 @node Getting Support and Reporting Bugs
2 @comment  node-name,  next,  previous,  up
3 @chapter Getting Support and Reporting Bugs
4
5 @menu
6 * Volunteer Support::           
7 * Commercial Support::          
8 * Reporting Bugs::              
9 @end menu
10
11 @node Volunteer Support
12 @comment  node-name,  next,  previous,  up
13 @section Volunteer Support
14
15 Your primary source of SBCL support should probably be the mailing
16 list @strong{sbcl-help}: in addition to other users SBCL developers
17 monitor this list and are available for advice. As an anti-spam
18 measure subcription is required for posting:
19
20 @urlline{https://lists.sourceforge.net/lists/listinfo/sbcl-help}
21
22 Remember that the people answering your question are volunteers, so
23 you stand a much better chance of getting a good answer if you ask a
24 good question.
25
26 Before sending mail, check the list archives at either
27
28 @urlline{http://sourceforge.net/mailarchive/forum.php?forum_name=sbcl-help}
29
30 or
31
32 @urlline{http://news.gmane.org/gmane.lisp.steel-bank.general}
33
34 to see if your question has been answered already. Checking the bug
35 database is also worth it @xref{Reporting Bugs}, to see if the issue
36 is already known.
37
38 For general advice on asking good questions, see
39
40 @urlline{http://www.catb.org/~esr/faqs/smart-questions.html}.
41
42 @node Commercial Support
43 @comment  node-name,  next,  previous,  up
44 @section Commercial Support
45
46 There is no formal organization developing SBCL, but if you need a
47 paid support arrangement or custom SBCL development, we maintain the
48 list of companies and consultants below. Use it to identify service
49 providers with appropriate skills and interests, and contact them
50 directly.
51
52 The SBCL project cannot verify the accuracy of the information or the
53 competence of the people listed, and they have provided their own
54 blurbs below: you must make your own judgement of suitability from the
55 available information - refer to the links they provide, the CREDITS
56 file, mailing list archives, CVS commit messages, and so on. Please
57 feel free to ask for advice on the sbcl-help list.
58
59 @table @strong
60 @item Steel Bank Studio Ltd
61 provides commercial SBCL support and custom development, is run by
62 SBCL developer @emph{Nikodemus Siivola}, and has another SBCL
63 developer @emph{Richard Kreuter} as an affiliated consultant.
64
65 Website: @url{http://sb-studio.net/}
66
67 Email: @email{info@@sb-studio.net}
68
69 @item Christophe Rhodes
70 is a researcher and long-time SBCL developer, available for custom
71 development, particularly in the area of language extension.
72
73 Email: @email{c.rhodes@@gold.ac.uk}
74
75 @end table
76
77 @node Reporting Bugs
78 @comment  node-name,  next,  previous,  up
79 @section Reporting Bugs
80
81 SBCL uses Launchpad to track bugs. The bug database is available at
82
83 @urlline{https://bugs.launchpad.net/sbcl}
84
85 Reporting bugs there requires registering at Launchpad. However, bugs
86 can also be reported on the mailing list @strong{sbcl-bugs}, which is
87 moderated but does @emph{not} require subscribing.
88
89 Simply send email to @email{sbcl-bugs@@lists.sourceforge.net} and the
90 bug will be checked and added to Launchpad by SBCL maintainers.
91
92 @subsection How to Report Bugs Effectively
93
94 Please include enough information in a bug report that someone reading
95 it can reproduce the problem, i.e. don't write
96
97 @example
98 Subject: apparent bug in PRINT-OBJECT (or *PRINT-LENGTH*?)
99 PRINT-OBJECT doesn't seem to work with *PRINT-LENGTH*. Is this a bug?
100 @end example
101
102 but instead
103
104 @example
105 Subject: apparent bug in PRINT-OBJECT (or *PRINT-LENGTH*?)
106 In sbcl-1.2.3 running under OpenBSD 4.5 on my Alpha box, when
107 I compile and load the file
108    (DEFSTRUCT (FOO (:PRINT-OBJECT (LAMBDA (X Y)
109                                     (LET ((*PRINT-LENGTH* 4))
110                                       (PRINT X Y)))))
111      X Y)
112 then at the command line type
113    (MAKE-FOO)
114 the program loops endlessly instead of printing the object.
115 @end example
116
117 A more in-depth discussion on reporting bugs effectively can be found
118 at
119
120 @urlline{http://www.chiark.greenend.org.uk/~sgtatham/bugs.html}.
121
122 @subsection Signal Related Bugs
123
124 If you run into a signal related bug, you are getting fatal errors
125 such as @code{signal N is [un]blocked} or just hangs, and you want to
126 send a useful bug report then:
127
128 @enumerate
129
130 @item
131 @cindex ldb
132 Compile sbcl with ldb support (feature @code{:sb-ldb}, see
133 @file{base-target-features.lisp-expr}) and change @code{#define QSHOW_SIGNAL 0} to
134 @code{#define QSHOW_SIGNAL 1} in @file{src/runtime/runtime.h}.
135
136 @item
137 Isolate a smallish test case, run it.
138
139 @item
140 If it just hangs kill it with sigabrt: @code{kill -ABRT <pidof sbcl>}.
141
142 @item
143 Print the backtrace from ldb by typing @code{ba}.
144
145 @item
146 Attach gdb: @code{gdb -p <pidof sbcl>} and get backtraces for all threads:
147 @code{thread apply all ba}.
148
149 @item
150 If multiple threads are in play then still in gdb, try to get Lisp
151 backtrace for all threads: @code{thread apply all call
152 backtrace_from_fp($ebp, 100)}. Substitute @code{$ebp} with @code{$rbp}
153 on x86-64. The backtraces will appear in the stdout of the SBCL
154 process.
155
156 @item
157 Send a report with the backtraces and the output (both stdout and
158 stderr) produced by SBCL.
159
160 @item
161 Don't forget to include OS and SBCL version.
162
163 @item
164 If available, include information on outcome of the same test with
165 other versions of SBCL, OS, ...
166 @end enumerate