Mercurial > octave-nkf
annotate doc/interpreter/bugs.txi @ 10452:a9677b03632b
update texinfo menus
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 24 Mar 2010 16:13:16 -0400 |
parents | 91d1e64804e1 |
children | 3140cb7a05a1 |
rev | line source |
---|---|
9245 | 1 @c Copyright (C) 1996, 1997, 1999, 2000, 2002, 2004, 2007, 2009 John W. Eaton |
7018 | 2 @c |
3 @c This file is part of Octave. | |
4 @c | |
5 @c Octave is free software; you can redistribute it and/or modify it | |
6 @c under the terms of the GNU General Public License as published by the | |
7 @c Free Software Foundation; either version 3 of the License, or (at | |
8 @c your option) any later version. | |
9 @c | |
10 @c Octave is distributed in the hope that it will be useful, but WITHOUT | |
11 @c ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 @c FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
13 @c for more details. | |
14 @c | |
15 @c You should have received a copy of the GNU General Public License | |
16 @c along with Octave; see the file COPYING. If not, see | |
17 @c <http://www.gnu.org/licenses/>. | |
3294 | 18 |
7018 | 19 @c The text of this file appears in the file BUGS in the Octave |
20 @c distribution, as well as in the Octave manual. | |
3294 | 21 |
22 @ifclear BUGSONLY | |
4167 | 23 @node Trouble |
3294 | 24 @appendix Known Causes of Trouble |
25 @end ifclear | |
26 | |
27 @ifset BUGSONLY | |
28 | |
29 This file documents known bugs in Octave and describes where and how to | |
30 report any bugs that you may find. | |
31 | |
6778 | 32 Copyright (C) 1996, 1997, 2007 John W. Eaton. You may copy, distribute, and |
3294 | 33 modify it freely as long as you preserve this copyright notice and |
34 permission notice. | |
35 | |
4167 | 36 @node Trouble |
3294 | 37 @chapter Known Causes of Trouble with Octave |
38 @end ifset | |
39 | |
40 @cindex bugs, known | |
41 @cindex installation trouble | |
42 @cindex known causes of trouble | |
43 @cindex troubleshooting | |
44 | |
45 This section describes known problems that affect users of Octave. Most | |
46 of these are not Octave bugs per se---if they were, we would fix them. | |
47 But the result for a user may be like the result of a bug. | |
48 | |
49 Some of these problems are due to bugs in other software, some are | |
50 missing features that are too much work to add, and some are places | |
51 where people's opinions differ as to what is best. | |
52 | |
53 @menu | |
54 * Actual Bugs:: Bugs we will fix later. | |
55 * Reporting Bugs:: | |
56 * Bug Criteria:: | |
10452 | 57 * Bug Tracker:: |
3294 | 58 * Bug Reporting:: |
59 * Sending Patches:: | |
60 * Service:: | |
61 @end menu | |
62 | |
4167 | 63 @node Actual Bugs |
3294 | 64 @appendixsec Actual Bugs We Haven't Fixed Yet |
65 | |
66 @itemize @bullet | |
67 @item | |
68 Output that comes directly from Fortran functions is not sent through | |
69 the pager and may appear out of sequence with other output that is sent | |
70 through the pager. One way to avoid this is to force pending output to | |
71 be flushed before calling a function that will produce output from | |
72 within Fortran functions. To do this, use the command | |
73 | |
74 @example | |
75 fflush (stdout) | |
76 @end example | |
77 | |
78 Another possible workaround is to use the command | |
79 | |
80 @example | |
9292
aa2e52bd82dd
Fix call to page_screen_output in the Bugs chapter of the manual
Soren Hauberg <hauberg@gmail.com>
parents:
9245
diff
changeset
|
81 page_screen_output (false); |
3294 | 82 @end example |
83 | |
84 @noindent | |
85 to turn the pager off. | |
86 @end itemize | |
87 | |
88 A list of ideas for future enhancements is distributed with Octave. See | |
89 the file @file{PROJECTS} in the top level directory in the source | |
90 distribution. | |
91 | |
4167 | 92 @node Reporting Bugs |
3294 | 93 @appendixsec Reporting Bugs |
94 @cindex bugs | |
95 @cindex reporting bugs | |
96 | |
97 Your bug reports play an essential role in making Octave reliable. | |
98 | |
99 When you encounter a problem, the first thing to do is to see if it is | |
100 already known. @xref{Trouble}. If it isn't known, then you should | |
101 report the problem. | |
102 | |
103 Reporting a bug may help you by bringing a solution to your problem, or | |
104 it may not. In any case, the principal function of a bug report is | |
105 to help the entire community by making the next version of Octave work | |
106 better. Bug reports are your contribution to the maintenance of Octave. | |
107 | |
108 In order for a bug report to serve its purpose, you must include the | |
109 information that makes it possible to fix the bug. | |
110 | |
111 @menu | |
112 * Bug Criteria:: | |
10450
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
113 * Where: Bug Tracker. Where to submit your bug report. |
3294 | 114 * Reporting: Bug Reporting. How to report a bug effectively. |
115 * Patches: Sending Patches. How to send a patch for Octave. | |
116 @end menu | |
117 | |
4167 | 118 @node Bug Criteria |
3294 | 119 @appendixsec Have You Found a Bug? |
120 @cindex bug criteria | |
121 | |
122 If you are not sure whether you have found a bug, here are some guidelines: | |
123 | |
124 @itemize @bullet | |
125 @cindex fatal signal | |
126 @cindex core dump | |
127 @item | |
128 If Octave gets a fatal signal, for any input whatever, that is | |
129 a bug. Reliable interpreters never crash. | |
130 | |
131 @cindex incorrect output | |
132 @cindex incorrect results | |
133 @cindex results, incorrect | |
134 @cindex answers, incorrect | |
135 @cindex erroneous results | |
136 @cindex wrong answers | |
137 @item | |
138 If Octave produces incorrect results, for any input whatever, | |
139 that is a bug. | |
140 | |
141 @cindex undefined behavior | |
142 @cindex undefined function value | |
143 @item | |
144 Some output may appear to be incorrect when it is in fact due to a | |
145 program whose behavior is undefined, which happened by chance to give | |
146 the desired results on another system. For example, the range operator | |
147 may produce different results because of differences in the way floating | |
148 point arithmetic is handled on various systems. | |
149 | |
150 @cindex erroneous messages | |
151 @cindex incorrect error messages | |
152 @cindex error messages, incorrect | |
153 @item | |
154 If Octave produces an error message for valid input, that is a bug. | |
155 | |
156 @cindex invalid input | |
157 @item | |
158 If Octave does not produce an error message for invalid input, that is | |
159 a bug. However, you should note that your idea of ``invalid input'' | |
160 might be my idea of ``an extension'' or ``support for traditional | |
161 practice''. | |
162 | |
163 @cindex improving Octave | |
164 @cindex suggestions | |
165 @item | |
166 If you are an experienced user of programs like Octave, your suggestions | |
167 for improvement are welcome in any case. | |
168 @end itemize | |
169 | |
10450
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
170 @node Bug Tracker |
3294 | 171 @appendixsec Where to Report Bugs |
10450
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
172 @cindex bug tracker |
3294 | 173 @cindex reporting bugs |
174 @cindex bugs, reporting | |
175 | |
10450
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
176 To report a bug in Octave, submit a bug report to the Octave bug tracker |
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
177 @url{http://bugs.octave.org}. |
3294 | 178 |
179 @strong{Do not send bug reports to @samp{help-octave}}. Most users of | |
10450
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
180 Octave do not want to receive bug reports. |
3294 | 181 |
4167 | 182 @node Bug Reporting |
3294 | 183 @appendixsec How to Report Bugs |
184 @cindex bugs, reporting | |
185 | |
10450
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
186 Submit bug reports for Octave to the Octave bug tracker |
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
187 @url{http://bugs.octave.org}. |
3294 | 188 |
189 The fundamental principle of reporting bugs usefully is this: | |
190 @strong{report all the facts}. If you are not sure whether to state a | |
191 fact or leave it out, state it! | |
192 | |
193 Often people omit facts because they think they know what causes the | |
194 problem and they conclude that some details don't matter. Thus, you might | |
195 assume that the name of the variable you use in an example does not matter. | |
196 Well, probably it doesn't, but one cannot be sure. Perhaps the bug is a | |
197 stray memory reference which happens to fetch from the location where that | |
198 name is stored in memory; perhaps, if the name were different, the contents | |
199 of that location would fool the interpreter into doing the right thing | |
200 despite the bug. Play it safe and give a specific, complete example. | |
201 | |
202 Keep in mind that the purpose of a bug report is to enable someone to | |
9081
c79cf77061b7
Cleanup documentation files contrib.texi, bugs.texi, install.texi, emacs.texi
Rik <rdrider0-list@yahoo.com>
parents:
7018
diff
changeset
|
203 fix the bug if it is not known. Always write your bug reports on |
3294 | 204 the assumption that the bug is not known. |
205 | |
206 Sometimes people give a few sketchy facts and ask, ``Does this ring a | |
207 bell?'' This cannot help us fix a bug. It is better to send a complete | |
208 bug report to begin with. | |
209 | |
210 Try to make your bug report self-contained. If we have to ask you for | |
211 more information, it is best if you include all the previous information | |
212 in your response, as well as the information that was missing. | |
213 | |
214 To enable someone to investigate the bug, you should include all these | |
215 things: | |
216 | |
217 @itemize @bullet | |
218 @item | |
219 The version of Octave. You can get this by noting the version number | |
220 that is printed when Octave starts, or running it with the @samp{-v} | |
221 option. | |
222 | |
223 @item | |
224 A complete input file that will reproduce the bug. | |
225 | |
226 A single statement may not be enough of an example---the bug might | |
227 depend on other details that are missing from the single statement where | |
228 the error finally occurs. | |
229 | |
230 @item | |
231 The command arguments you gave Octave to execute that example | |
232 and observe the bug. To guarantee you won't omit something important, | |
233 list all the options. | |
234 | |
235 If we were to try to guess the arguments, we would probably guess wrong | |
236 and then we would not encounter the bug. | |
237 | |
238 @item | |
239 The type of machine you are using, and the operating system name and | |
240 version number. | |
241 | |
242 @item | |
243 The command-line arguments you gave to the @code{configure} command when | |
244 you installed the interpreter. | |
245 | |
246 @item | |
247 A complete list of any modifications you have made to the interpreter | |
248 source. | |
249 | |
250 Be precise about these changes---show a context diff for them. | |
251 | |
252 @item | |
253 Details of any other deviations from the standard procedure for installing | |
254 Octave. | |
255 | |
256 @cindex incorrect output | |
257 @cindex incorrect results | |
258 @cindex results, incorrect | |
259 @cindex answers, incorrect | |
260 @cindex erroneous results | |
261 @cindex wrong answers | |
262 @item | |
263 A description of what behavior you observe that you believe is | |
264 incorrect. For example, "The interpreter gets a fatal signal," or, "The | |
265 output produced at line 208 is incorrect." | |
266 | |
267 Of course, if the bug is that the interpreter gets a fatal signal, then | |
268 one can't miss it. But if the bug is incorrect output, we might not | |
269 notice unless it is glaringly wrong. | |
270 | |
271 Even if the problem you experience is a fatal signal, you should still | |
272 say so explicitly. Suppose something strange is going on, such as, your | |
273 copy of the interpreter is out of synch, or you have encountered a bug | |
274 in the C library on your system. Your copy might crash and the copy | |
275 here would not. If you said to expect a crash, then when the | |
276 interpreter here fails to crash, we would know that the bug was not | |
277 happening. If you don't say to expect a crash, then we would not know | |
278 whether the bug was happening. We would not be able to draw any | |
279 conclusion from our observations. | |
280 | |
281 Often the observed symptom is incorrect output when your program is run. | |
282 Unfortunately, this is not enough information unless the program is | |
283 short and simple. It is very helpful if you can include an explanation | |
284 of the expected output, and why the actual output is incorrect. | |
285 | |
286 @item | |
287 If you wish to suggest changes to the Octave source, send them as | |
288 context diffs. If you even discuss something in the Octave source, | |
289 refer to it by context, not by line number, because the line numbers in | |
290 the development sources probably won't match those in your sources. | |
291 @end itemize | |
292 | |
293 Here are some things that are not necessary: | |
294 | |
295 @itemize @bullet | |
296 @cindex bugs, investigating | |
297 @item | |
298 A description of the envelope of the bug. | |
299 | |
300 Often people who encounter a bug spend a lot of time investigating which | |
301 changes to the input file will make the bug go away and which changes | |
302 will not affect it. Such information is usually not necessary to enable | |
303 us to fix bugs in Octave, but if you can find a simpler example to | |
304 report @emph{instead} of the original one, that is a convenience. | |
305 Errors in the output will be easier to spot, running under the debugger | |
9081
c79cf77061b7
Cleanup documentation files contrib.texi, bugs.texi, install.texi, emacs.texi
Rik <rdrider0-list@yahoo.com>
parents:
7018
diff
changeset
|
306 will take less time, etc. Most Octave bugs involve just one function, so |
3294 | 307 the most straightforward way to simplify an example is to delete all the |
308 function definitions except the one in which the bug occurs. | |
309 | |
310 However, simplification is not vital; if you don't want to do | |
311 this, report the bug anyway and send the entire test case you | |
312 used. | |
313 | |
314 @item | |
315 A patch for the bug. Patches can be helpful, but if you find a bug, you | |
316 should report it, even if you cannot send a fix for the problem. | |
317 @end itemize | |
318 | |
4167 | 319 @node Sending Patches |
3294 | 320 @appendixsec Sending Patches for Octave |
321 @cindex improving Octave | |
322 @cindex diffs, submitting | |
323 @cindex patches, submitting | |
324 @cindex submitting diffs | |
325 @cindex submitting patches | |
326 | |
327 If you would like to write bug fixes or improvements for Octave, that is | |
328 very helpful. When you send your changes, please follow these | |
329 guidelines to avoid causing extra work for us in studying the patches. | |
330 | |
331 If you don't follow these guidelines, your information might still be | |
332 useful, but using it will take extra work. Maintaining Octave is a lot | |
333 of work in the best of circumstances, and we can't keep up unless you do | |
334 your best to help. | |
335 | |
336 @itemize @bullet | |
337 @item | |
338 Send an explanation with your changes of what problem they fix or what | |
339 improvement they bring about. For a bug fix, just include a copy of the | |
340 bug report, and explain why the change fixes the bug. | |
341 | |
342 @item | |
343 Always include a proper bug report for the problem you think you have | |
344 fixed. We need to convince ourselves that the change is right before | |
345 installing it. Even if it is right, we might have trouble judging it if | |
346 we don't have a way to reproduce the problem. | |
347 | |
348 @item | |
349 Include all the comments that are appropriate to help people reading the | |
350 source in the future understand why this change was needed. | |
351 | |
352 @item | |
353 Don't mix together changes made for different reasons. | |
354 Send them @emph{individually}. | |
355 | |
356 If you make two changes for separate reasons, then we might not want to | |
357 install them both. We might want to install just one. | |
358 | |
359 @item | |
360 Use @samp{diff -c} to make your diffs. Diffs without context are hard | |
361 for us to install reliably. More than that, they make it hard for us to | |
362 study the diffs to decide whether we want to install them. Unidiff | |
363 format is better than contextless diffs, but not as easy to read as | |
364 @samp{-c} format. | |
365 | |
366 If you have GNU diff, use @samp{diff -cp}, which shows the name of the | |
367 function that each change occurs in. | |
368 | |
369 @item | |
370 Write the change log entries for your changes. | |
371 | |
372 Read the @file{ChangeLog} file to see what sorts of information to put | |
373 in, and to learn the style that we use. The purpose of the change log | |
374 is to show people where to find what was changed. So you need to be | |
375 specific about what functions you changed; in large functions, it's | |
376 often helpful to indicate where within the function the change was made. | |
377 | |
378 On the other hand, once you have shown people where to find the change, | |
9081
c79cf77061b7
Cleanup documentation files contrib.texi, bugs.texi, install.texi, emacs.texi
Rik <rdrider0-list@yahoo.com>
parents:
7018
diff
changeset
|
379 you need not explain its purpose. Thus, if you add a new function, all |
3294 | 380 you need to say about it is that it is new. If you feel that the |
381 purpose needs explaining, it probably does---but the explanation will be | |
382 much more useful if you put it in comments in the code. | |
383 | |
384 If you would like your name to appear in the header line for who made | |
385 the change, send us the header line. | |
386 @end itemize | |
387 | |
4167 | 388 @node Service |
3294 | 389 @appendixsec How To Get Help with Octave |
390 @cindex help, where to find | |
391 | |
5041 | 392 The mailing list @email{help@@octave.org} exists for the discussion of |
393 matters related to using and installing Octave. If would like to join | |
394 the discussion, please send a short note to | |
395 @email{help@strong{-request}@@octave.org}. | |
3294 | 396 |
397 @strong{Please do not} send requests to be added or removed from the | |
398 mailing list, or other administrative trivia to the list itself. | |
399 | |
10450
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
400 If you think you have found a bug in Octave or in the installation |
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
401 procedure, however, you should submit a complete bug report to |
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
402 the Octave bug tracker at @url{http://bugs.octave.org}. |
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
403 But before you submit a bug report, please read |
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
404 @url{http://www.octave.org/bugs.html} to learn how to submit a useful |
91d1e64804e1
point to bugs.octave.org bug tracker instead of bug@octave.org mailing list
John W. Eaton <jwe@octave.org>
parents:
9895
diff
changeset
|
405 bug report. |