1288 lines
50 KiB
XML
1288 lines
50 KiB
XML
<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>
|
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
|
|
"../../../share/sgml/freebsd42.dtd" [
|
|
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//EN" "../../share/sgml/entities.ent">
|
|
%entities;
|
|
]>
|
|
|
|
<article lang='en'>
|
|
<articleinfo>
|
|
<title>Writing &os; Problem Reports</title>
|
|
|
|
<legalnotice id="trademarks" role="trademarks">
|
|
&tm-attrib.freebsd;
|
|
&tm-attrib.cvsup;
|
|
&tm-attrib.ibm;
|
|
&tm-attrib.intel;
|
|
&tm-attrib.sparc;
|
|
&tm-attrib.sun;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<pubdate>$FreeBSD$</pubdate>
|
|
|
|
<releaseinfo>$FreeBSD$</releaseinfo>
|
|
|
|
<abstract>
|
|
<para>This article describes how to best formulate and submit a
|
|
problem report to the &os; Project.</para>
|
|
</abstract>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Dag-Erling</firstname>
|
|
<surname>Smørgrav</surname>
|
|
<contrib>Contributed by </contrib>
|
|
</author>
|
|
|
|
<author>
|
|
<firstname>Mark</firstname>
|
|
<surname>Linimon</surname>
|
|
</author>
|
|
</authorgroup>
|
|
</articleinfo>
|
|
|
|
<indexterm><primary>problem reports</primary></indexterm>
|
|
|
|
<section id="pr-intro">
|
|
<title>Introduction</title>
|
|
|
|
<para>One of the most frustrating experiences one can have as a
|
|
software user is to submit a problem report only to have it
|
|
summarily closed with a terse and unhelpful explanation like
|
|
<quote>not a bug</quote> or <quote>bogus PR</quote>. Similarly,
|
|
one of the most frustrating experiences as a software developer
|
|
is to be flooded with problem reports that are not really
|
|
problem reports but requests for support, or that contain little
|
|
or no information about what the problem is and how to reproduce
|
|
it.</para>
|
|
|
|
<para>This document attempts to describe how to write good problem
|
|
reports. What, you ask, is a good problem report? Well, to go
|
|
straight to the bottom line, a good problem report is one that
|
|
can be analyzed and dealt with swiftly, to the mutual
|
|
satisfaction of both user and developer.</para>
|
|
|
|
<para>Although the primary focus of this article is on &os;
|
|
problem reports, most of it should apply quite well to other
|
|
software projects.</para>
|
|
|
|
<para>Note that this article is organized thematically, not
|
|
chronologically, so you should read through the entire document
|
|
before submitting a problem report, rather than treat it as a
|
|
step-by-step tutorial.</para>
|
|
</section>
|
|
|
|
<section id="pr-when">
|
|
<title>When to submit a problem report</title>
|
|
|
|
<para>There are many types of problems, and not all of them should
|
|
engender a problem report. Of course, nobody is perfect, and
|
|
there will be times when you are convinced you have found a bug
|
|
in a program when in fact you have misunderstood the syntax for
|
|
a command or made a typographical error in a configuration file
|
|
(though that in
|
|
itself may sometimes be indicative of poor documentation or poor
|
|
error handling in the application). There are still many cases
|
|
where submitting a problem report is clearly
|
|
<emphasis>not</emphasis> the right
|
|
course of action, and will only serve to frustrate you and the
|
|
developers. Conversely, there are cases where it might be
|
|
appropriate to submit a problem report about something else than
|
|
a bug—an enhancement or a feature request, for
|
|
instance.</para>
|
|
|
|
<para>So how do you determine what is a bug and what is not? As a
|
|
simple rule of thumb your problem is <emphasis>not</emphasis> a
|
|
bug if it can be expressed as a question (usually of the form
|
|
<quote>How do I do X?</quote> or <quote>Where can I find
|
|
Y?</quote>). It is not always quite so black and white, but the
|
|
question rule covers a large majority of cases. If you are looking
|
|
for an answer, consider posing your question to the
|
|
&a.questions;.</para>
|
|
|
|
<para>Some cases where it may be appropriate to submit a problem
|
|
report about something that is not a bug are:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Requests for feature enhancements. It is generally a
|
|
good idea to air these on the mailing lists before
|
|
submitting a problem report.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Notification of updates to externally maintained
|
|
software (mainly ports, but also externally maintained base
|
|
system components such as BIND or various GNU
|
|
utilities).</para>
|
|
|
|
<para>For unmaintained ports (<makevar>MAINTAINER</makevar> contains
|
|
<literal>ports@FreeBSD.org</literal>), such update notifications
|
|
might get picked up by an interested
|
|
committer, or you might be asked to provide a patch to update
|
|
the port; providing it upfront will greatly improve your chances
|
|
that the port will get updated in a timely manner.</para>
|
|
|
|
<para>If the port is maintained, PRs announcing new upstream releases
|
|
are usually not very useful since they generate supplementary work
|
|
for the committers, and the maintainer likely knows already there is
|
|
a new version, they have probably worked with the developers on it,
|
|
they are probably testing to see there is no regression, etc.</para>
|
|
|
|
<para>In either case, following the process described in <ulink
|
|
url="&url.books.porters-handbook;/port-upgrading.html">Porter's
|
|
Handbook</ulink> will yield the best results. (You might
|
|
also wish to read <ulink
|
|
url="&url.articles.contributing-ports;/article.html">
|
|
Contributing to the FreeBSD Ports Collection</ulink>.)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>A bug that can not be reproduced can rarely be
|
|
fixed. If the bug only occurred once and you can not reproduce
|
|
it, and it does not seem to happen to anybody else, chances are
|
|
none of the developers will be able to reproduce it or figure
|
|
out what is wrong. That does not mean it did not happen, but it
|
|
does mean that the chances of your problem report ever leading
|
|
to a bug fix are very slim. To make matters worse, often
|
|
these kinds of bugs are actually caused by failing hard drives
|
|
or overheating processors — you should always try to rule
|
|
out these causes, whenever possible, before submitting a PR.</para>
|
|
|
|
<para>Next, to decide to whom you should file your problem
|
|
report, you need to understand that the software that makes
|
|
up &os; is composed of several different elements:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Code in the base system that is written and maintained
|
|
by &os; contributors, such as the kernel, the C library,
|
|
and the device drivers (categorized as <literal>kern</literal>);
|
|
the binary utilities (<literal>bin</literal>); the manual
|
|
pages and documentation (<literal>docs</literal>); and
|
|
the web pages (<literal>www</literal>). All bugs in
|
|
these areas should be reported to the &os; developers.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Code in the base system that is written and maintained
|
|
by others, and imported into &os; and adapted. Examples
|
|
include <application>bind</application>, &man.gcc.1;, and
|
|
&man.sendmail.8;. Most bugs in these areas should be reported
|
|
to the &os; developers; but in some cases they may need to be
|
|
reported to the original authors instead if the problems are
|
|
not &os;-specific. Usually these bugs will fall under either
|
|
the <literal>bin</literal> or <literal>gnu</literal>
|
|
categories.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Individual applications that are not in the base system
|
|
but are instead part of the &os; Ports Collection (category
|
|
<literal>ports</literal>). Most of these applications are
|
|
not written by &os; developers; what &os; provides is merely
|
|
a framework for installing the application. Therefore, you
|
|
should only report a problem to the &os; developers when you
|
|
believe the problem is &os;-specific; otherwise, you should
|
|
report it to the authors of the software.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>Then you should ascertain whether or not the problem is
|
|
timely. There are few things
|
|
that will annoy a developer more than receiving a problem report
|
|
about a bug she has already fixed.</para>
|
|
|
|
<para>If the problem is in the base system, you should first read
|
|
the FAQ section on
|
|
<ulink url="&url.books.faq;/introduction.html#LATEST-VERSION">
|
|
&os; versions</ulink>, if you are not already familiar with
|
|
the topic. It is not possible for &os; to fix problems in
|
|
anything other than certain recent branches of the base system,
|
|
so filing a bug report about an older version will probably
|
|
only result in a developer advising you to upgrade to a
|
|
supported version to see if the problem still recurs. The
|
|
Security Officer team maintains the
|
|
<ulink url="&url.base;/security/">list of supported
|
|
versions</ulink>.</para>
|
|
|
|
<para>If the problem is in a port, note that you must first
|
|
upgrade to the latest version of the Ports Collection and see
|
|
if the problem still applies. Due to the rapid pace of changes
|
|
in these applications, it is infeasible for &os; to support
|
|
anything other than the absolute latest versions, and problems
|
|
with older version of applications simply cannot be fixed.</para>
|
|
</section>
|
|
|
|
<section id="pr-prep">
|
|
<title>Preparations</title>
|
|
|
|
<para>A good rule to follow is to always do a background search
|
|
before submitting a problem report. Maybe your problem has
|
|
already been reported; maybe it is being discussed on the
|
|
mailing lists, or recently was; it may even already be fixed in
|
|
a newer version than what you are running. You should therefore
|
|
check all the obvious places before submitting your problem
|
|
report. For &os;, this means:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The &os;
|
|
<ulink url="&url.books.faq;/index.html">Frequently Asked
|
|
Questions</ulink> (FAQ) list.
|
|
The FAQ attempts to provide answers for a wide range of questions,
|
|
such as those concerning
|
|
<ulink url="&url.books.faq;/hardware.html">hardware
|
|
compatibility</ulink>,
|
|
<ulink url="&url.books.faq;/applications.html">user
|
|
applications</ulink>,
|
|
and <ulink url="&url.books.faq;/kernelconfig.html">kernel
|
|
configuration</ulink>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The
|
|
<ulink
|
|
url="&url.books.handbook;/eresources.html#ERESOURCES-MAIL">mailing
|
|
lists</ulink>—if you are not subscribed, use
|
|
<ulink
|
|
url="http://www.FreeBSD.org/search/search.html#mailinglists">the
|
|
searchable archives</ulink> on the &os; web site. If your
|
|
problem has not been discussed on the lists, you might try
|
|
posting a message about it and waiting a few days to see if
|
|
someone can spot something you have overlooked.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Optionally, the entire web—use your favorite
|
|
search engine to locate any references to your problem. You
|
|
may even get hits from archived mailing lists or newsgroups
|
|
you did not know of or had not thought to search
|
|
through.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Next, the searchable
|
|
<ulink url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">
|
|
&os; PR database</ulink> (GNATS). Unless your problem
|
|
is recent or obscure, there is a fair chance it has already
|
|
been reported.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Most importantly, you should attempt to see if existing
|
|
documentation in the source base addresses your problem.</para>
|
|
|
|
<para>For the base &os; code, you should
|
|
carefully study the contents of the
|
|
<filename>/usr/src/UPDATING</filename> file on your system
|
|
or its latest version at
|
|
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/UPDATING"></ulink>.
|
|
(This is vital information
|
|
if you are upgrading from one version to
|
|
another—especially if you are upgrading to the
|
|
&os.current; branch).</para>
|
|
|
|
<para>However, if the problem is in something that was installed
|
|
as a part of the &os; Ports Collection, you should refer to
|
|
<filename>/usr/ports/UPDATING</filename> (for individual ports)
|
|
or <filename>/usr/ports/CHANGES</filename> (for changes
|
|
that affect the entire Ports Collection).
|
|
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/UPDATING"></ulink>
|
|
and
|
|
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/CHANGES"></ulink>
|
|
are also available via CVSweb.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<section id="pr-writing">
|
|
<title>Writing the problem report</title>
|
|
|
|
<para>Now that you have decided that your issue merits a problem
|
|
report, and that it is a &os; problem, it is time to write
|
|
the actual problem report. Before we get into the mechanics
|
|
of the program used to generate and submit PRs, here are some
|
|
tips and tricks to help make sure that your PR will be most
|
|
effective.</para>
|
|
|
|
<section>
|
|
<title>Tips and tricks for writing a good problem report</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis>Do not leave the <quote>Synopsis</quote>
|
|
line empty.</emphasis> The PRs go both onto a mailing list
|
|
that goes all over the world (where the <quote>Synopsis</quote>
|
|
is used
|
|
for the <literal>Subject:</literal> line), but also into a
|
|
database. Anyone who comes along later and browses the
|
|
database by synopsis, and finds a PR with a blank subject
|
|
line, tends just to skip over it. Remember that PRs stay
|
|
in this database until they are closed by someone; an
|
|
anonymous one will usually just disappear in the
|
|
noise.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Avoid using a weak <quote>Synopsis</quote>
|
|
line.</emphasis> You should not assume that anyone reading
|
|
your PR has any context for your submission, so the more
|
|
you provide, the better. For instance, what part of the
|
|
system does the problem apply to? Do you only see the
|
|
problem while installing, or while running? To
|
|
illustrate, instead of <literal>Synopsis: portupgrade is
|
|
broken</literal>, see how much more informative this
|
|
seems: <literal>Synopsis: port ports-mgmt/portupgrade
|
|
coredumps on -current</literal>. (In the case of ports,
|
|
it is especially helpful to have both the category and
|
|
portname in the <quote>Synopsis</quote> line.)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>If you have a patch, say so.</emphasis>
|
|
A PR with a patch included is much more likely to be
|
|
looked at than one without. If you are including one,
|
|
put the string <literal>[patch]</literal> (including the brackets) at the
|
|
beginning of the <quote>Synopsis</quote>. (Although it is
|
|
not mandatory to use that exact string, by convention,
|
|
that is the one that is used.)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>If you are a maintainer, say so.</emphasis>
|
|
If you are maintaining a part of the source code (for
|
|
instance, a port), you might consider adding the string
|
|
<literal>[maintainer update]</literal> (including the brackets) at the beginning of
|
|
your synopsis line, and you definitely should set the
|
|
<quote>Class</quote> of
|
|
your PR to <literal>maintainer-update</literal>. This way
|
|
any committer that handles your PR will not have to check.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Be specific.</emphasis>
|
|
The more information you supply about what problem you
|
|
are having, the better your chance of getting a response.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Include the version of &os; you are running (there
|
|
is a place to put that, see below) and on which architecture.
|
|
You should include whether you are running from a release
|
|
(e.g. from a CDROM or download), or from
|
|
a system maintained by &man.cvsup.1; (and, if so, how
|
|
recently you updated). If you are tracking the
|
|
&os.current; branch, that is the very first thing someone
|
|
will ask, because fixes (especially for high-profile
|
|
problems) tend to get committed very quickly, and
|
|
&os.current; users are expected to keep up.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Include which global options you have specified in
|
|
your <filename>make.conf</filename>. Note: specifying
|
|
<literal>-O2</literal> and above to &man.gcc.1; is
|
|
known to be buggy in many situations. While the
|
|
&os; developers will accept patches, they are
|
|
generally unwilling to investigate such issues due
|
|
to simple lack of time and volunteers, and may
|
|
instead respond that this just is not supported.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If the problem can be reproduced easily, include
|
|
information that will help a developer to reproduce it
|
|
themselves. If a problem can be demonstrated with
|
|
specific input then include an example of that input if
|
|
possible, and include both the actual and the expected
|
|
output. If this data is large or cannot be made public,
|
|
then do try to create a minimal file that exhibits the
|
|
same issue and that can be included within the PR.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If this is a kernel problem, then be prepared to
|
|
supply the following information. (You do not
|
|
have to include these by default, which only tends to
|
|
fill up the database, but you should include excerpts
|
|
that you think might be relevant):</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>your kernel configuration (including which
|
|
hardware devices you have installed)</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>whether or not you have debugging options enabled
|
|
(such as <literal>WITNESS</literal>), and if so,
|
|
whether the problem persists when you change the
|
|
sense of that option</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>the full text of any backtrace, panic or other console
|
|
output, or entries in <filename>/var/log/messages</filename>,
|
|
if any were generated</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>the output of <command>pciconf -l</command> and
|
|
relevant parts of your <command>dmesg</command> output if
|
|
your problem relates to a specific piece of hardware</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>the fact that you have read
|
|
<filename>src/UPDATING</filename> and that your problem
|
|
is not listed there (someone is guaranteed to ask)</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>whether or not you can run any other kernel as
|
|
a fallback (this is to rule out hardware-related
|
|
issues such as failing disks and overheating CPUs,
|
|
which can masquerade as kernel problems)</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If this is a ports problem, then be prepared to
|
|
supply the following information. (You do not
|
|
have to include these by default, which only tends to
|
|
fill up the database, but you should include excerpts
|
|
that you think might be relevant):</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>which ports you have installed</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>any environment variables that override the
|
|
defaults in <filename>bsd.port.mk</filename>, such
|
|
as <makevar>PORTSDIR</makevar></para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>the fact that you have read
|
|
<filename>ports/UPDATING</filename> and that your problem
|
|
is not listed there (someone is guaranteed to ask)</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Avoid vague requests for features.</emphasis>
|
|
PRs of the form <quote>someone should really implement something
|
|
that does so-and-so</quote> are less likely to get results than
|
|
very specific requests. Remember, the source is available
|
|
to everyone, so if you want a feature, the best way to
|
|
ensure it being included is to get to work! Also consider
|
|
the fact that many things like this would make a better
|
|
topic for discussion on <literal>freebsd-questions</literal>
|
|
than an entry in the PR database, as discussed above.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Make sure no one else has already submitted
|
|
a similar PR.</emphasis> Although this has already been
|
|
mentioned above, it bears repeating here. It only take a
|
|
minute or two to use the web-based search engine at
|
|
<ulink url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query"></ulink>.
|
|
(Of course, everyone is guilty of forgetting to do this
|
|
now and then.)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Report only one issue per Problem
|
|
Report.</emphasis> Avoid including two or more problems
|
|
within the same report unless they are related. When
|
|
submitting patches, avoid adding multiple features or
|
|
fixing multiple bugs in the same PR unless they are closely
|
|
related—such PRs often take longer to resolve.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Avoid controversial requests.</emphasis>
|
|
If your PR addresses an area that has been controversial
|
|
in the past, you should probably be prepared to not only
|
|
offer patches, but also justification for why the patches
|
|
are <quote>The Right Thing To Do</quote>. As noted above,
|
|
a careful search of the mailing lists using the archives
|
|
at <ulink url="http://www.FreeBSD.org/search/search.html#mailinglists"></ulink>
|
|
is always good preparation.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Be polite.</emphasis>
|
|
Almost anyone who would potentially work on your PR is a
|
|
volunteer. No one likes to be told that they have to do
|
|
something when they are already doing it for some
|
|
motivation other than monetary gain. This is a good thing
|
|
to keep in mind at all times on Open Source
|
|
projects.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Before you begin</title>
|
|
|
|
<para>If you are using the &man.send-pr.1; program, make sure your
|
|
<envar>VISUAL</envar> (or <envar>EDITOR</envar> if
|
|
<envar>VISUAL</envar> is not set) environment variable is set
|
|
to something sensible.</para>
|
|
|
|
<para>You should also make sure that mail delivery works fine.
|
|
&man.send-pr.1; uses mail messages for the submission and
|
|
tracking of problem reports. If you cannot post mail messages
|
|
from the machine you are running &man.send-pr.1; on, your
|
|
problem report will not reach the GNATS database. For details
|
|
on the setup of mail on &os;, see the <quote>Electronic
|
|
Mail</quote> chapter of the &os; Handbook at
|
|
<ulink url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/mail.html"></ulink>.</para>
|
|
|
|
<para>Make sure that your mailer will not mangle the message on
|
|
its way to GNATS. In particular, if your mailer automatically
|
|
breaks lines, changes tabs to spaces, or escapes newline
|
|
characters, any patch that you submit will be rendered
|
|
unusable. For the text sections, however, we request that
|
|
you insert manual linebreaks somewhere around 70 characters,
|
|
so that the web display of the PR will be readable.</para>
|
|
|
|
<para>Similar considerations apply if you are using the
|
|
<ulink url="&url.base;/send-pr.html"> web-based
|
|
PR submission form</ulink> instead of &man.send-pr.1;. Note that
|
|
cut-and-paste operations can have their own side-effects on
|
|
text formatting. In certain cases it may be necessary to use
|
|
&man.uuencode.1; to ensure that patches arrive unmodified.</para>
|
|
|
|
<para>Finally, if your submission will be lengthy, you should
|
|
to prepare your work offline so that nothing will be lost in
|
|
case there is a problem submitting it. This can especially be a
|
|
problem with the <ulink url="&url.base;/send-pr.html">web form</ulink>.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Attaching patches or files</title>
|
|
|
|
<para>The following applies to submitting PRs via email:</para>
|
|
|
|
<para>The &man.send-pr.1; program has provisions for attaching
|
|
files to a problem report. You can attach as many files as
|
|
you want provided that each has a unique base name (i.e. the
|
|
name of the file proper, without the path). Just use the
|
|
<option>-a</option> command-line option to specify the names
|
|
of the files you wish to attach:</para>
|
|
|
|
<screen>&prompt.user; <userinput>send-pr -a /var/run/dmesg -a /tmp/errors</userinput></screen>
|
|
|
|
<para>Do not worry about binary files, they will be automatically
|
|
encoded so as not to upset your mail agent.</para>
|
|
|
|
<para>If you attach a patch, make sure you use the
|
|
<option>-c</option> or <option>-u</option> option to
|
|
&man.diff.1; to create a context or unified diff (unified is
|
|
preferred), and make
|
|
sure to specify the exact CVS revision numbers of the files
|
|
you modified so the developers who read your report will be
|
|
able to apply them easily. For problems with the kernel or the
|
|
base utilities, a patch against &os.current; (the HEAD
|
|
CVS branch) is preferred since all new code should be applied
|
|
and tested there first. After appropriate or substantial testing
|
|
has been done, the code will be merged/migrated to the &os.stable;
|
|
branch.</para>
|
|
|
|
<para>If you attach a patch inline, instead of as an attachment,
|
|
note that the most common problem by far is the tendency of some
|
|
email programs to render tabs as spaces, which will completely
|
|
ruin anything intended to be part of a Makefile.</para>
|
|
|
|
<para>Do not send patches as attachments using
|
|
<command>Content-Transfer-Encoding: quoted-printable</command>.
|
|
These will perform character escaping and the entire patch
|
|
will be useless.</para>
|
|
|
|
<para>Also note that while including small patches in a PR is
|
|
generally all right—particularly when they fix the problem
|
|
described in the PR—large patches and especially new code
|
|
which may require substantial review before committing should
|
|
be placed on a web or ftp server, and the URL should be
|
|
included in the PR instead of the patch. Patches in email
|
|
tend to get mangled, especially when GNATS is involved, and
|
|
the larger the patch, the harder it will be for interested
|
|
parties to unmangle it. Also, posting a patch on the web
|
|
allows you to modify it without having to resubmit the entire
|
|
patch in a followup to the original PR. Finally, large
|
|
patches simply increase the size of the database, since
|
|
closed PRs are not actually deleted but instead kept and
|
|
simply marked as <literal>closed</literal>.</para>
|
|
|
|
<para>You should also take note that unless you explicitly
|
|
specify otherwise in your PR or in the patch itself, any
|
|
patches you submit will be assumed to be licensed under the
|
|
same terms as the original file you modified.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Filling out the template</title>
|
|
|
|
<para>The next section applies to the email method only:</para>
|
|
|
|
<para>When you run &man.send-pr.1;, you are presented with a
|
|
template. The template consists of a list of fields, some of
|
|
which are pre-filled, and some of which have comments explaining
|
|
their purpose or listing acceptable values. Do not worry
|
|
about the comments; they will be removed automatically if you
|
|
do not modify them or remove them yourself.</para>
|
|
|
|
<para>At the top of the template, below the
|
|
<literal>SEND-PR:</literal> lines, are the email headers. You
|
|
do not normally need to modify these, unless you are sending
|
|
the problem report from a machine or account that can send but
|
|
not receive mail, in which case you will want to set the
|
|
<literal>From:</literal> and <literal>Reply-To:</literal> to
|
|
your real email address. You may also want to send yourself
|
|
(or someone else) a carbon copy of the problem report by
|
|
adding one or more email addresses to the
|
|
<literal>Cc:</literal> header.</para>
|
|
|
|
<para>In the email template you will find the following two
|
|
single-line fields:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis>Submitter-Id:</emphasis> Do not change this.
|
|
The default value of <literal>current-users</literal> is
|
|
correct, even if you run &os.stable;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Confidential:</emphasis> This is prefilled
|
|
to <literal>no</literal>. Changing it makes no sense as
|
|
there is no such thing as a confidential &os; problem
|
|
report—the PR database is distributed worldwide by
|
|
<application>CVSup</application>.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>The next section describes fields that are common to both
|
|
the email interface and the <ulink url="&url.base;/send-pr.html">web interface</ulink>:</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><emphasis>Originator:</emphasis>
|
|
Please specify your real name, optionally followed
|
|
by your email address in angle brackets.
|
|
In the email interface, this is normally
|
|
prefilled with the <literal>gecos</literal> field of the
|
|
currently logged-in
|
|
user.</para>
|
|
|
|
<note>
|
|
<para>The email address you use will become public information
|
|
and may become available to spammers. You should either
|
|
have spam handling procedures in place, or use a temporary
|
|
email account. However, please note that if you do not
|
|
use a valid email account at all, we will not be able to
|
|
ask you questions about your PR.</para>
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Organization:</emphasis> Whatever you feel
|
|
like. This field is not used for anything
|
|
significant.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Synopsis:</emphasis> Fill this out with a
|
|
short and accurate description of the problem. The
|
|
synopsis is used as the subject of the problem report
|
|
email, and is used in problem report listings and
|
|
summaries; problem reports with obscure synopses tend to
|
|
get ignored.</para>
|
|
|
|
<para>As noted above, if your problem report includes a patch,
|
|
please have the synopsis start with <literal>[patch]</literal> (including the brackets);
|
|
if this is a ports PR and you are the
|
|
maintainer, you may consider adding
|
|
<literal>[maintainer update]</literal> (including the brackets) and set the
|
|
<quote>Class</quote> of your PR to
|
|
<literal>maintainer-update</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Severity:</emphasis> One of
|
|
<literal>non-critical</literal>,
|
|
<literal>serious</literal> or
|
|
<literal>critical</literal>. Do not overreact; refrain
|
|
from labeling your problem <literal>critical</literal>
|
|
unless it really is (e.g. data corruption issues, serious
|
|
regression from previous functionality in -CURRENT)
|
|
or <literal>serious</literal> unless
|
|
it is something that will affect many users (kernel
|
|
panics or freezes; problems with
|
|
particular device drivers or system utilities). &os;
|
|
developers will not necessarily work on your problem faster
|
|
if you inflate its importance since there are so many other
|
|
people who have done exactly that — in fact, some
|
|
developers pay little attention to this field
|
|
because of this.</para>
|
|
|
|
<note>
|
|
<para>Major security problems should <emphasis>not</emphasis>
|
|
be filed in GNATS, because all GNATS information is public
|
|
knowledge. Please send such problems in private email to
|
|
&a.security-officer;.</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Priority:</emphasis> One of
|
|
<literal>low</literal>, <literal>medium</literal> or
|
|
<literal>high</literal>. <literal>high</literal> should
|
|
be reserved for problems that will affect practically
|
|
every user of &os; and <literal>medium</literal> for
|
|
something that will affect many users.</para>
|
|
|
|
<note>
|
|
<para>This field has become so widely abused that it is
|
|
almost completely meaningless.</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Category:</emphasis> Choose an appropriate
|
|
category.</para>
|
|
|
|
<para>The first thing you need to do is to decide what part of
|
|
the system your problem lies in. Remember, &os; is a
|
|
complete operating system, which installs both a kernel, the
|
|
standard libraries, many peripheral drivers, and a large number
|
|
of utilities (the <quote>base system</quote>).
|
|
However, there are thousands of additional applications in the
|
|
Ports Collection. You'll first need to decide if the problem
|
|
is in the base system or something installed via the Ports
|
|
Collection.</para>
|
|
|
|
<para>Here is a description of the major categories:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>If a problem is with the kernel, the libraries (such
|
|
as standard C library <literal>libc</literal>), or a
|
|
peripheral driver in the base system, in general you will
|
|
use the <literal>kern</literal> category. (There are a few
|
|
exceptions; see below). In general these are things that are
|
|
described in section 2, 3, or 4 of the manual pages.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If a problem is with a binary program such as
|
|
&man.sh.1; or &man.mount.8;, you will first need to determine
|
|
whether these programs are in the base system or were added
|
|
via the Ports Collection. If you are unsure, you can do
|
|
<command>whereis <replaceable>programname</replaceable></command>.
|
|
&os;'s convention for the Ports Collection is to install
|
|
everything underneath
|
|
<filename class="directory">/usr/local</filename>,
|
|
although this can be overridden by a system administrator.
|
|
For these, you will use the <literal>ports</literal>
|
|
category (yes, even if the port's category is
|
|
<literal>www</literal>; see below). If the location is
|
|
<filename class="directory">/bin</filename>,
|
|
<filename class="directory">/usr/bin</filename>,
|
|
<filename class="directory">/sbin</filename>, or
|
|
<filename class="directory">/usr/sbin</filename>,
|
|
it is part of the base system, and you should use the
|
|
<literal>bin</literal> category. (A few programs, such as
|
|
&man.gcc.1;, actually use the <literal>gnu</literal> category,
|
|
but do not worry about that for now.) These are all things
|
|
that are described in section 1 or 8 of the manual pages.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If you believe that the error is in the startup
|
|
<literal>(rc)</literal> scripts, or in some kind of other
|
|
non-executable configuration file, then the right category is
|
|
<literal>conf</literal> (configuration). These are things
|
|
that are described in section 5 of the manual pages.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If you have found a problem in the documentation set
|
|
(articles, books, man pages), the correct choice is
|
|
<literal>docs</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If you are having a problem with the
|
|
<ulink url="http://www.FreeBSD.org">FreeBSD web pages</ulink>,
|
|
the proper choice is <literal>www</literal>.</para>
|
|
|
|
<note>
|
|
<para>if you are having a problem with something from a
|
|
port named
|
|
<literal>www/<replaceable>someportname</replaceable></literal>,
|
|
this nevertheless goes in the <literal>ports</literal>
|
|
category.</para>
|
|
</note>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>There are a few more specialized categories.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>If the problem would otherwise be filed in
|
|
<literal>kern</literal> but has to do with the USB subsystem,
|
|
the correct choice is <literal>usb</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If the problem would otherwise be filed in
|
|
<literal>kern</literal> but has to do with the threading
|
|
libraries, the correct choice is
|
|
<literal>threads</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If the problem would otherwise be in the base system,
|
|
but has to do with our adherence to standards such as
|
|
&posix;, the correct choice is
|
|
<literal>standards</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If the problem has to do with errors internal to a
|
|
&java.virtual.machine; (&jvm;), even though &java; was
|
|
installed from the Ports Collection, you should select the
|
|
<literal>java</literal> category. More general problems with
|
|
&java; ports still go under <literal>ports</literal>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>This leaves everything else.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>If you are convinced that the problem will only occur
|
|
under the processor architecture you are using, select
|
|
one of the architecture-specific categories: commonly
|
|
<literal>i386</literal> for Intel-compatible machines in
|
|
32-bit mode; <literal>amd64</literal> for AMD machines
|
|
running in 64-bit mode (this also includes Intel-compatible
|
|
machines running in EMT64 mode); and less commonly
|
|
<literal>arm</literal>, <literal>ia64</literal>,
|
|
<literal>powerpc</literal>, and <literal>sparc64</literal>.
|
|
</para>
|
|
|
|
<note>
|
|
<para>These categories are quite often misused for
|
|
<quote>I do not know</quote> problems. Rather than
|
|
guessing, please just use <literal>misc</literal>.</para>
|
|
</note>
|
|
|
|
<example>
|
|
<title>Correct use of arch-specific category</title>
|
|
|
|
<para>You have a common PC-based machine, and think
|
|
you have encountered a problem specific to a particular
|
|
chipset or a particular motherboard: <literal>i386</literal>
|
|
is the right category.</para>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Incorrect use of arch-specific category</title>
|
|
|
|
<para>You are having a problem with an add-in
|
|
peripheral card on a commonly seen bus, or a problem with
|
|
a particular type of hard disk drive: in this case, it
|
|
probably applies to more than one architecture, and
|
|
<literal>kern</literal> is the right category.</para>
|
|
</example>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If you really do not know where the problem lies (or
|
|
the explanation does not seem to fit into the ones above),
|
|
use the <literal>misc</literal> category. Before you do so,
|
|
you may wish to ask for help on the &a.questions; first.
|
|
You may be advised that one of the existing categories
|
|
really is a better choice.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Here is the current list of categories (taken from
|
|
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/gnu/usr.bin/send-pr/categories"></ulink>):</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><literal>advocacy:</literal> problems relating to
|
|
&os;'s public image. Obsolete.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>alpha:</literal> problems specific to the
|
|
Alpha platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>amd64:</literal> problems specific to the
|
|
AMD64 platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>arm:</literal> problems specific to the
|
|
ARM platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>bin:</literal> problems with userland
|
|
programs in the base system.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>conf:</literal> problems with
|
|
configuration files, default values, and so forth.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>docs:</literal> problems with manual pages
|
|
or on-line documentation.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>gnu:</literal> problems with imported GNU software
|
|
such as &man.gcc.1; or &man.grep.1;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>i386:</literal> problems specific to the
|
|
&i386; platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>ia64:</literal> problems specific to the
|
|
ia64 platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>java:</literal> problems related to the &java;
|
|
Virtual Machine.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>kern:</literal> problems with
|
|
the kernel, (non-platform-specific) device drivers,
|
|
or the base libraries.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>misc:</literal> anything that does not fit
|
|
in any of the other categories. (Note that there is
|
|
almost nothing that truly belongs in this category,
|
|
except for problems with the release and build
|
|
infrastructure. Temporary build failures on
|
|
<literal>HEAD</literal> do not belong here. Also note
|
|
that it is
|
|
easy for things to get lost in this category).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>ports:</literal> problems relating to the
|
|
Ports Collection.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>powerpc:</literal> problems specific to the
|
|
&powerpc; platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>sparc64:</literal> problems specific to the
|
|
&sparc64; platform.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>standards:</literal> Standards conformance
|
|
issues.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>threads:</literal> problems related to the
|
|
&os; threads implementation (especially on &os.current;).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>usb:</literal> problems related to the
|
|
&os; USB implementation.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>www:</literal> Changes or enhancements to
|
|
the &os; website.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Class:</emphasis> Choose one of the
|
|
following:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><literal>sw-bug:</literal> software bugs.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>doc-bug:</literal> errors in
|
|
documentation.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>change-request:</literal> requests for
|
|
additional features or changes in existing
|
|
features.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>update:</literal> updates to ports or
|
|
other contributed software.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>maintainer-update:</literal> updates to
|
|
ports for which you are the maintainer.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Release:</emphasis> The version of &os;
|
|
that you are running. This is filled out automatically if
|
|
you are using
|
|
&man.send-pr.1; and need only be changed if you are
|
|
sending a problem report from a different system than the
|
|
one that exhibits the problem.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Finally, there is a series of multi-line fields:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis>Environment:</emphasis> This should
|
|
describe, as accurately as possible, the environment in
|
|
which the problem has been observed. This includes the
|
|
operating system version, the version of the specific
|
|
program or file that contains the problem, and any other
|
|
relevant items such as system configuration, other
|
|
installed software that influences the problem,
|
|
etc.—quite simply everything a developer needs to
|
|
know to reconstruct the environment in which the problem
|
|
occurs.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Description:</emphasis> A complete and
|
|
accurate description of the problem you are experiencing.
|
|
Try to avoid speculating about the causes of the problem
|
|
unless you are certain that you are on the right track, as
|
|
it may mislead a developer into making incorrect
|
|
assumptions about the problem.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>How-To-Repeat:</emphasis> A summary of the
|
|
actions you need to take to reproduce the problem.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Fix:</emphasis> Preferably a patch, or at
|
|
least a workaround (which not only helps other people with
|
|
the same problem work around it, but may also help a
|
|
developer understand the cause for the problem), but if
|
|
you do not have any firm ideas for either, it is better to
|
|
leave this field blank than to speculate.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Sending off the problem report</title>
|
|
|
|
<para>If you are using &man.send-pr.1;:</para>
|
|
|
|
<para>Once you are done filling out the template, have saved it,
|
|
and exit your editor, &man.send-pr.1; will prompt you with
|
|
<prompt>s)end, e)dit or a)bort?</prompt>. You can then hit
|
|
<userinput>s</userinput> to go ahead and submit the problem report,
|
|
<userinput>e</userinput> to restart the editor and make
|
|
further modifications, or <userinput>a</userinput> to abort.
|
|
If you choose the latter, your problem report will remain on
|
|
disk (&man.send-pr.1; will tell you the filename before it
|
|
terminates), so you can edit it at your leisure, or maybe
|
|
transfer it to a system with better net connectivity, before
|
|
sending it with the <option>-f</option> to
|
|
&man.send-pr.1;:</para>
|
|
|
|
<screen>&prompt.user; <userinput>send-pr -f ~/my-problem-report</userinput></screen>
|
|
|
|
<para>This will read the specified file, validate the contents,
|
|
strip comments and send it off.</para>
|
|
|
|
<para>If you are using the <ulink url="&url.base;/send-pr.html">web form</ulink>:</para>
|
|
|
|
<para>Before you hit <literal>submit</literal>, you will need to
|
|
fill in a field containing text that is represented in image
|
|
form on the page. This unfortunate measure has had to be
|
|
adopted due to misuse by automated systems and a few misguided
|
|
individuals. It is a necessary evil that no one likes; please
|
|
do not ask us to remove it.</para>
|
|
|
|
<para>Note that you are <literal>strongly advised</literal> to
|
|
save your work somewhere before hitting <literal>submit</literal>.
|
|
A common problem for users is to have their web browser displaying
|
|
a stale image from its cache. If this happens to you, your
|
|
submission will be rejected and you may lose your work.</para>
|
|
|
|
<para>If you are unable to view images for any reason, and are also
|
|
unable to use &man.send-pr.1;, please accept our apologies for
|
|
the inconvenience and email your problem report to the bugbuster
|
|
team at <email>freebsd-bugbusters@FreeBSD.org</email>.</para>
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section id="pr-followup">
|
|
<title>Follow-up</title>
|
|
|
|
<para>Once your problem report has been filed, you will receive a
|
|
confirmation by email which will include the tracking number
|
|
that was assigned to your problem report and a URL you can use
|
|
to check its status. With a little luck, someone will take an
|
|
interest in your problem and try to address it, or, as the case
|
|
may be, explain why it is not a problem. You will be
|
|
automatically notified of any change of status, and you will
|
|
receive copies of any comments or patches someone may attach to
|
|
your problem report's audit trail.</para>
|
|
|
|
<para>If someone requests additional information from you, or you
|
|
remember or discover something you did not mention in the
|
|
initial report, please use one of two methods to submit your
|
|
followup:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The easiest way is to use the followup link on
|
|
the individual PR's web page, which you can reach from the
|
|
<ulink url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">
|
|
PR search page</ulink>. Clicking on this link will bring up an
|
|
an email window with the correct To: and Subject: lines filled in
|
|
(if your browser is configured to do this).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Alternatively, you can just mail it to
|
|
&a.bugfollowup;, making sure that the
|
|
tracking number is included in the subject so the bug tracking
|
|
system will know what problem report to attach it to.</para>
|
|
|
|
<note>
|
|
<para>If you do <emphasis>not</emphasis> include the tracking
|
|
number, GNATS will become confused and create an entirely
|
|
new PR which it then assigns to the GNATS administrator,
|
|
and then your followup will become lost until someone
|
|
comes in to clean up the mess, which could be days or
|
|
weeks afterwards.</para>
|
|
|
|
<para>Wrong way:</para>
|
|
|
|
<programlisting>Subject: that PR I sent</programlisting>
|
|
|
|
<para>Right way:</para>
|
|
|
|
<programlisting>Subject: Re: ports/12345: compilation problem with foo/bar</programlisting>
|
|
</note>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>If the problem report remains open after the problem has
|
|
gone away, just send a follow-up (in the manner prescribed
|
|
above) saying that the problem report can be closed, and, if
|
|
possible, explaining how or when the problem was fixed.</para>
|
|
</section>
|
|
|
|
<section id="pr-problems">
|
|
<title>If you are having problems</title>
|
|
|
|
<para>Most PRs go through the system and are accepted quickly;
|
|
however, at times GNATS runs behind and you may not get your
|
|
email confirmation for 10 minutes or even longer. Please try to
|
|
be patient.</para>
|
|
|
|
<para>In addition, because GNATS receives all its input via email,
|
|
it is absolutely vital that &os; runs all its submissions through
|
|
spam filters. If you do not get a response within an hour or
|
|
two, you may have fallen afoul of them; if so, please contact
|
|
the GNATS administrators at <email>bugmeister@FreeBSD.org</email>
|
|
and ask for help.</para>
|
|
|
|
<note>
|
|
<para>Among the anti-spam measures is one that weighs against
|
|
many common abuses seen in HTML-based email (although not necessarily
|
|
the mere inclusion of HTML in a PR). We strongly recommend
|
|
against the use of HTML-based email when sending PRs: not
|
|
only is it more likely to fall afoul of the filters, it also
|
|
tends to merely clutter up the database. Plain old email is
|
|
strongly preferred.</para>
|
|
</note>
|
|
|
|
<para>On rare occasions you will encounter a GNATS bug where a
|
|
PR is accepted and assigned a tracking number but it does not
|
|
show up on the list of PRs on any of the web query pages. What
|
|
may have happened is that the database index has gotten out of
|
|
synchronization with the database itself. The way that you
|
|
can test whether this has happened is to pull up the
|
|
<ulink url="http://www.FreeBSD.org/cgi/query-pr.cgi">
|
|
view a single PR</ulink> page and see whether the PR shows up.
|
|
If it does, please notify the GNATS administrators at
|
|
<email>bugmeister@FreeBSD.org</email>. Note that there is a
|
|
<literal>cron</literal> job that periodically rebuilds the database,
|
|
so unless you are in a hurry, no action needs to be taken.</para>
|
|
</section>
|
|
|
|
<section id="pr-further">
|
|
<title>Further Reading</title>
|
|
|
|
<para>This is a list of resources relevant to the proper writing
|
|
and processing of problem reports. It is by no means complete.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><ulink
|
|
url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">
|
|
How to Report Bugs Effectively</ulink>—an excellent
|
|
essay by Simon G. Tatham on composing useful (non-&os;-specific)
|
|
problem reports.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><ulink
|
|
url="&url.articles.pr-guidelines;/article.html">Problem
|
|
Report Handling Guidelines</ulink>—valuable insight
|
|
into how problem reports are handled by the &os;
|
|
developers.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
</article>
|