Source:
Miscellaneous Bugs
This page is for reporting and commenting on bugs in the HyperNews software that don't
fit anywhere else. If the bug relates to some aspect of HyperNews
that already has a page, add it there instead of here. Here are a few
of those pages - others are listed further down:
- There may be bugs in the
instructions if they don't explain sufficiently how to use a
feature.
- You may encounter bugs while
installing HyperNews.
- Security related bugs or concerns are treated with high priority
on the
HyperNews Security page.
- Design bugs need fixes too, discussed on the HyperNews Future
page.
- If the display is wrong, or doesn't make sense to you, or you are
forever lost, see the
Adding a Message page about the response outline and embedding,
navigation, etc.
- Old bugs, or sometimes new bugs with old versions (before
1.9B5.2), are on the HyperNews Old
Bugs page. The HyperNews
History lists many of the bugs that have been fixed.
This page also describes
the major known bugs,
how to report bugs, and
how to do some debugging yourself
general problems that can occur.
Whenever you are reporting a bug, be sure to specify the following
information:
- The version of
HyperNews you are using (displayed in "Help with HyperNews x.x" on
bottom of each page). Note that the version you are using on some
other server is not necessarily the same as the version on this
server. Give me a URL if you can so I can look at it.
- The server software you are using, including its version number.
- The type of machine and operating system.
- The browser you are using, if it might be relevant (it often is).
- The version of Perl your server is using. It might be different
from what you get from your shell since the server has its own
execution path.
There are a few simple things I do to debug HyperNews that may be useful
for you as well. First of all, you should understand a bit about
the overall flow of control for CGI programs.
- When you make a HyperNews request, say a 'get' request, the
corresponding script is looked up by the server, any server-based
access control is enforced, and then the script is executed.
You may get an error
during this phase; either the script can't be found or the access
control is keeping you out.
- If the script is executed and has a
syntax error, you will get a server error because the script will not
be able to return the proper CGI headers. Look in your server error
log for hints.
- If the script can begin execution, any error that occurs thereafter is
caught by HyperNews and returned to the browser with a trace of where in the
program the error occurred.
Sometimes the error is generated explicitly by HyperNews,
when it calls HNError. Other times, a Perl execution error occurs.
- But the report of an error is sometimes not sufficient for figuring
out why there is an error and what to do about it. Or there might be no
error message returned, but the output is still incorrect.
In that case,
you can display more debugging output by adding
calls to HNMsg. It takes one argument which is a string. Perl lets you
include variable values in the string very easily, however. For example,
&HNMsg("\$hndocs is '$hndocs'");
will print out "$hndocs is '/usr/local/etc/httpd/htdocs/hn'"
on its own line. Another useful routine is printAssoc which takes an
associative array, or 'hash table' in Perl terms. For example,
&printAssoc("URC 1", %urc);
will print out a table of all the keys and values in the %urc table.
I often use the $debug variable to enable and disable whole bunches of
debugging output.
local $debug = 1;
&printAssoc("URC1", %urc) if $debug;
Then you can just turn off the debugging later by changing the "1" to "0".
-
Both HNMsg and printAssoc will force the output of a proper CGI header
if one has not been put out already. One special case is if a redirection
is returned with a "Location" header. In that case, there is normally nothing
but that header, and if you output the debugging info before the Location
header, then the redirection will not actually happen, but you can then
see where the redirection would take you because it shows up in the
output as "Location: http://wherever".
- There are some special debugging aids in other situations.
If you are debugging mail-incoming.pl, there is a special file created
to hold the debugging output. See the mail-incoming.pl source for the
details. Similarly for the other "batch-*" commands.
Errors can occur for several reasons, sometimes beyond our control.
These are listed in the order in which you might discover them.
- Server Problems
- Different servers do different things regarding security
and CGI.
- Check whether symbolic links are permitted.
- Check your server's error log if you don't get as far as
executing the HyperNews script itself.
- If you use setuid or cgiwrap, you could get interesting
errors about scripts or libraries not found.
- Basic Authentication limited
- Use of the built-in security mechanisms for basic
authentication works with NCSA's httpd and should work with the
CERN server, some versions of Netsite, and possibly other
servers. Try manual security if it fails for you.
We have to work around limitations in the
httpd server, such as a limited number of users per group.
In general, we seem to be erring on the side of being
too restrictive these days. Please let us know if you have problems.
- Perl 5
-
We are dependent on Perl 5 now.
Syntax errors you may get are probably due to
accidently using Perl 4.
Perl 5.000 and 5.001 have problems and should be avoided. (In
particular, adding a member loses several members, for some
reason.) Also usable are 5.001m (but not n), 5.003, or 5.004.
- Missing Libraries
-
Unable to find libraries at all, due to a perl
installation problem. The first thing you might notice missing is
flush.pl. Talk with your sys admin.
- Socket problems
- The http.pl script uses socket connections to
fetch documents. With Perl 5, we are using Socket.pm, but that
has problems for some installations. You may want to try
sys/socket.ph instead.
- A HyperNews configuration problem
- Let us know if there is a confusion in documents as to
what you are supposed to do when installing HyperNews, or bugs
in the actual process.
- A file or directory permission problem
- The directories such as $hndocs must
be writable by the process that runs your httpd.
- Indentation Wrong
- Some browsers do not display the message outline with the correct
indentation. There is a workaround in version 1.8 that works
for more browsers. IBM WebExplorer still doesn't indent the
nested <DL> lists.
- Form entry fields are too narrow
- See
Some fonts cause too narrow form fields
- sendmail failures
- On some systems, errors when using sendmail interfere with HyperNews.
The effect might be that you get an error messages when you
submit, but your message is actually added anyway. One fix is
to always use the -oeq option on sendmail, which means ignore
errors.
Please don't respond on this page for anything that is not related
to HyperNews bugs. If it is difficult to tell whether something is a
bug or if instead you are just using it wrong, then it is at least a
bug in the user
instructions or
installation instructions, assuming you've read them
.
In any case, try to find out if someone else has reported the bug already.