perlbug - how to submit bug reports on Perl
perlbug [ -v ] [ -a address ] [ -s subject ] [ -b body | -f inputfile ] [ -F outputfile ] [ -r returnaddress ] [ -e editor ] [ -c adminaddress | -C ] [ -S ] [ -t ] [ -d ] [ -A ] [ -h ]
perlbug [ -v ] [ -r returnaddress ] [ -A ] [ -ok | -okay | -nok | -nokay ]
A program to help generate bug reports about perl or the modules that come with it, and mail them.
If you have found a bug with a non-standard port (one that was not part of the standard distribution), a binary distribution, or a non-standard module (such as Tk, CGI, etc), then please see the documentation that came with that distribution to determine the correct place to report bugs.
perlbug is designed to be used interactively. Normally no arguments
will be needed. Simply run it, and follow the prompts.
If you are unable to run perlbug (most likely because you don't have a working setup to send mail that perlbug recognizes), you may have to compose your own report, and email it to firstname.lastname@example.org. You might find the -d option useful to get summary information in that case.
In any case, when reporting a bug, please make sure you have run through this checklist:
perl -vat the command line to find out.
A significant number of the bug reports we get turn out to be documented features in Perl. Make sure the behavior you are witnessing doesn't fall under that category, by glancing through the documentation that comes with Perl (we'll admit this is no mean task, given the sheer volume of it all, but at least have a look at the sections that seem relevant).
Be aware of the familiar traps that perl programmers of various hues fall into. See perltrap.
Check in perldiag to see what any Perl error message(s) mean. If message isn't in perldiag, it probably isn't generated by Perl. Consult your operating system documentation instead.
If you are on a non-UNIX platform check also perlport, as some features may be unimplemented or work differently.
Try to study the problem under the Perl debugger, if necessary. See perldebug.
The easier it is to reproduce your bug, the more likely it will be fixed, because if no one can duplicate the problem, no one can fix it. A good test case has most of these attributes: fewest possible number of lines; few dependencies on external commands, modules, or libraries; runs on most platforms unimpeded; and is self-documenting.
A good test case is almost always a good candidate to be on the perl test suite. If you have the time, consider making your test case so that it will readily fit into the standard test suite.
Remember also to include the exact error messages, if any. "Perl complained something" is not an exact error message.
If you get a core dump (or equivalent), you may use a debugger (dbx, gdb, etc) to produce a stack trace to include in the bug report. NOTE: unless your Perl has been compiled with debug info (often -g), the stack trace is likely to be somewhat hard to use because it will most probably contain only the function names and not their arguments. If possible, recompile your Perl with debug info and reproduce the dump and the stack trace.
A bug report which includes a patch to fix it will almost
definitely be fixed. Use the
diff program to generate your patches
diff is being maintained by the GNU folks as part of the diffutils
package, so you should be able to get it from any of the GNU software
repositories). If you do submit a patch, the cool-dude counter at
email@example.com will register you as a savior of the world. Your
patch may be returned with requests for changes, or requests for more
detailed explanations about your fix.
Here are some clues for creating quality patches: Use the -c or
-u switches to the diff program (to create a so-called context or
unified diff). Make sure the patch is not reversed (the first
argument to diff is typically the original file, the second argument
your changed file). Make sure you test your patch by applying it with
patch program before you send it on its way. Try to follow the
same style as the code you are trying to patch. Make sure your patch
really does work (
make test, if the thing you're patching supports
perlbugto submit the report?
perlbug will, amongst other things, ensure your report includes
crucial information about your version of perl. If
perlbug is unable
to mail your report after you have typed it in, you may have to compose
the message yourself, add the output produced by
perlbug -d and email
it to firstname.lastname@example.org. If, for some reason, you cannot run
perlbug at all on your system, be sure to include the entire output
produced by running
perl -V (note the uppercase V).
Whether you use
perlbug or send the email manually, please make
your Subject line informative. "a bug" not informative. Neither is
"perl crashes" nor "HELP!!!". These don't help.
A compact description of what's wrong is fine.
Having done your bit, please be prepared to wait, to be told the bug
is in your code, or even to get no reply at all. The Perl maintainers
are busy folks, so if your problem is a small one or if it is difficult
to understand or already known, they may not respond with a personal reply.
If it is important to you that your bug be fixed, do monitor the
Changes file in any development releases since the time you submitted
the bug, and encourage the maintainers with kind words (but never any
flames!). Feel free to resend your bug report if the next released
version of perl comes out and your bug is still present.
Kenneth Albanowski (<email@example.com>), subsequently doctored by Gurusamy Sarathy (<firstname.lastname@example.org>), Tom Christiansen (<email@example.com>), Nathan Torkington (<firstname.lastname@example.org>), Charles F. Randall (<email@example.com>), Mike Guy (<firstname.lastname@example.org>), Dominic Dunlop (<email@example.com>), Hugo van der Sanden (<firstname.lastname@example.org<gt>), Jarkko Hietaniemi (<email@example.com>), Chris Nandor (<firstname.lastname@example.org>), Jon Orwant (<email@example.com>, and Richard Foley (<firstname.lastname@example.org>).
perl(1), perldebug(1), perldiag(1), perlport(1), perltrap(1), diff(1), patch(1), dbx(1), gdb(1)
None known (guess what must have been used to report them?)