# Known Bugs in Apache

The most up-to-date resource for bug tracking and information is the Apache bug database. Significant bugs at release time will also be noted there. If you are running a 1.2 beta release or version 1.1.3 or earlier and thing you have found a bug, please upgrade to 1.2. Many bugs in early versions have been fixed in 1.2.

See Also: Compatibility notes

## Apache 1.2 Bugs

1. Exists in 1.2.1 only. On Solaris 2.x the server will stop running after receiving a SIGHUP. Four workarounds exist (choose one):

   - Retrieve this patch. `cd` to your `apache_1.2.1` directory, and type `patch -s -p1 < /path/to/patchfile`. Then rebuild Apache.

   - Use SIGUSR1 instead of SIGHUP, see Stopping and Restarting Apache for more details.

   - Add `-DNO_SLACK` to `EXTRA_CFLAGS` in your `Configuration` file, re-run `Configure` and rebuild your server. This disables the descriptor slack workaround

   - (Least preferable) Use Apache 1.2.0 instead of 1.2.1.

   This problem will be tracked as PR#832.

2. (Exists in 1.2.0 and in 1.2.1 after either of the `NO_SLACK` or patch provided by the previous bug are applied.) Solaris 2.5.1 (and probably other versions of Solaris) appear to have a race condition completely unrelated to all the others. It is possible during a SIGHUP that the server will fail to start because it will not be able to re-open its sockets. To our knowledge this has only shown up during testing when we pummel the server with as many SIGHUP requests per second as we can. This appears unrelated to the similar sounding bug described in PR#832.

3. On some architectures if your configuration uses multiple Listen directives then it is possible that the server will starve one of the sockets while serving hits on another. The work-around is to add `-DUSE_FLOCK_SERIALIZED_ACCEPT` to the `EXTRA_CFLAGS` line in your Configuration and rebuild. (If you encounter problems with that, you can also try `-DUSE_FCNTL_SERIALIZED_ACCEPT`.) This affects any architecture that doesn't use one of the `USE_xxxxx_SERIALIZED_ACCEPT` definitions, see the source file `conf.h` for your architecture. This will be tracked as PR#467.

4. Fixed in 1.2.1. Apache's Content Negotiation should pick the smallest variant if there are several that are equally acceptable. A bug in 1.2 means it no longer does this unless all the variants have character sets. This patch fixes this problem. It also fixes the problem which makes Apache pick the last equally acceptable variant instead of the first. This will be tracked as PR#94.

5. The PATH_INFO part of a request URI cannot include the sequence `%2f`. This will be tracked as PR#543.

6. Users of early 1.2 betas reported problems with many connections stuck in the FIN_WAIT_2 state due to server timeouts. Several changes were made during the beta testing of 1.2 to reduce this problem as much as possible, although you may still see sockets in FIN_WAIT_2 state due to network or operating system issues outside the control of Apache. See our FIN_WAIT_2 page for more details.

   SunOS4 has a kernel bug in the allocation of memory for the mbuf table. When it fills up, the result is a Panic the next time any routine tries to set something in an imaginary mbuf beyond the range of the table. Due to buggy browser behavior and the lack of a FIN_WAIT_2 timeout on SunOS4, "KeepAlive Off" is necessary to avoid filling up the mbuf table on busy sites.

7. Compilation fails on SCO3 when using gcc instead of cc, complaining with "`gcc: noinline: No such file or directory`". Fix is given in PR#695.

8. If compilation fails complaining about "unknown symbol __inet_ntoa()" then you have probably installed version 8 of bind. You will need to explicitly link with the bind library by adding `-lbind` to `EXTRA_LDFLAGS` in `Configuration`. See PR#616 and the Apache FAQ.

9. The message "`created shared memory segment #730499`" in error_log is not an error and should be ignored. See PR#696.

10. Compiling on Solaris 2 with SunSoft's C compiler gives the warning `"mod_include.c", line 1123: warning: end-of-loop code not reached`. This is a bogus warning and can be ignored. See PR#681.

11. Workaround available in 1.2.1. There appears to be a problem on BSDI 2.1 with large numbers of virtual hosts. This appears similar to a file-descriptor limit but BSDI should not have this problem. This will be tracked as PR#611. See also the Apache FAQ.

12. Workaround available in 1.2.1. Solaris 2 has problems with large numbers of virtual hosts. This is because of an operating system limit of 256 file pointers, not due to Apache. See also the Apache FAQ.