]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/amd/BUGS
This commit was generated by cvs2svn to compensate for changes in r172665,
[FreeBSD/FreeBSD.git] / contrib / amd / BUGS
1             LIST OF KNOWN BUGS IN AM-UTILS OR OPERATING SYSTEMS
2
3
4 (1) mips-sgi-irix*
5
6 [1A] known to have flaky NFS V.3 and TCP.  Amd tends to hang or spin
7 infinitely after a few hours or days of use.  Users must install recommended
8 patches from vendor.  Patches help, but not all the time.  Otherwise avoid
9 using NFS V.3 and TCP on these systems, by setting
10
11         /defaults opts:=vers=2,proto=udp
12
13 [1B] yp_all() leaks a file descriptor.  Eventually amd runs out of file
14 descriptors and hangs.  Am-utils circumvents this by using its own version
15 of yp_all which uses udp and iterates over NIS maps.  The latter isn't as
16 reliable as yp_all() which uses TCP, but it is better than hanging.
17
18 (I have some reports that older version of hpux-9, with older libc, also
19 leak file descriptors.)
20
21 [1C] SGI's MIPSpro C compiler on IRIX 6 has the unfortunate habit of
22 creating code specificially for the machine it runs on.  The ABI and ISA
23 used depend very much on the OS version and compiler release used.  This
24 means that the resulting amd binary won't run on machines different from
25 the build host, particularly older ones.  Older versions of am-utils
26 enforced the O32 ABI when compiling with cc to work around this, but this
27 ABI is deprecated in favor of the N32 ABI now, so we use -n32 -mips3 to
28 ensure that the binaries run on every host capable of running IRIX 6 at
29 all.  If this is not appropriate for you, configure with something like
30 CC='cc -64' instead to get the desired ABI and ISA.
31
32 (2) alpha-unknown-linux-gnu (RedHat Linux 4.2)
33
34 hasmntopt(mnt, opt) can go into an infinite loop if opt is any substring
35 of mnt->mnt_opts.  Redhat 5.0 does not have this libc bug.  Here is an
36 example program:
37
38 #include <stdio.h>
39 #include <mntent.h>
40 main()
41 {
42   struct mntent mnt;
43   char *cp;
44   mnt.mnt_opts = "intr,rw,port=1023,timeo=8,foo=br,retrans=110,indirect,map=/usr/local/AMD/etc/amd.proj,boo";
45   cp = hasmntopt(&mnt, "ro");
46   printf("cp = %s\n", cp);
47   exit(0);
48 }
49
50 It is possible that sufficiently newer version of libc for RH4.2 fix this
51 problem.
52
53
54 (3) mips-dec-ultrix4.3
55
56 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> reports
57
58 [3A] One needs the Kernel Config Files (UDTBIN430) subset installed to
59 compile am-utils, otherwise essential header files (net/if.h, net/route.h,
60 rpcsvc/mount.h, rpcsvc/yp_prot.h, rpcsvc/ypclnt.h, sys/proc.h) are
61 missing.
62
63 [3B] It's probably impossible to build am-utils with DEC C on Ultrix V4.3.
64 This compiler is pseudo-ANSI only.  Maybe the new ANSI C compiler in V4.3A
65 and beyond will do.  I successfully used gcc 2.8.1.
66
67 [3C] You need to build against a recent libhesiod (I used 3.0.2) and
68 libresolv/lib44bsd (I used BIND 4.9.5-P1).  The resolver routines in
69 libc seem to cause random memory corruption.  It is necessary to specify
70 LIBS=-l44bsd.  lib44bsd is a helper library of libresolv used to supply
71 functions like strdup which are missing on the host system.  This isn't
72 currently autoconfiscated.
73
74 [3D] You need to configure with CONFIG_SHELL=/bin/sh5 /bin/sh5 buildall;
75 /bin/sh cannot handle the shell functions used in buildall and is both
76 buggy and slow.
77
78 [3E] At least the gcc 2.7.0 fixincludes-mangled <sys/utsname.h> needs a
79 forward declaration of struct utsname to avoid lots of gcc warnings:
80
81 RCS file: RCS/utsname.h,v
82 retrieving revision 1.1
83 diff -u -r1.1 utsname.h
84 --- utsname.h   1995/06/19 13:07:01     1.1
85 +++ utsname.h   1998/01/27 12:34:26
86 @@ -59,6 +59,7 @@
87  #ifdef KERNEL
88  #include "../h/limits.h"
89  #else /* user mode */
90 +struct utsname;
91  extern int     uname _PARAMS((struct utsname *));
92  #endif
93  #define __SYS_NMLN 32
94
95
96 (4) powerpc-ibm-aix4.2.1.0
97
98 [4A] "Randall S. Winchester" <rsw@Glue.umd.edu> reports that for amd to
99 start, you need to kill and restart rpc.mountd and possibly also make sure
100 that nfsd is running.  Normally these are not required.
101
102 [4B] "Stefan Vogel" <vogel@physik.unizh.ch> reports that if your amq
103 executable dump core unexpectedly, then it may be a bug in gcc 2.7.x.
104 Upgrade to gcc 2.8.x or use IBM's xlC compiler.
105
106 [C] Do not link amd with libnsl.  It is buggy and causes amd to core dump
107 in strlen inside strdup inside svc_register().
108
109
110 (5) *-linux-rh51 (RedHat Linux 5.1)
111
112 There's a UDP file descriptor leak in libnsl in RedHat Linux 5.1.  This
113 library part of glibc2.  Am-utils currently declares redhat 5.1 systems as
114 having a "broken yp_all" and using an internal, slower, leak-free version.
115 The leak is known to the glibc maintainers and a fix from them is due soon,
116 but it is not yet in the glibc-2.0.7-19 RPM.
117
118
119 (6) rs6000-ibm-aix4.1.x
120
121 A bug in libc results in an amq binary that doesn't work; amq -v dumps core
122 in xdr_string.  There is no known fix (source code or vendor patch) at this
123 time.  (Please let am-utils@am-utils.org know if you know of a fix.)
124
125
126 (7) *-aix4.3.2.0
127
128 The plock() function will pre-reserve all of the memory up to the maximum
129 listed in the ulimit.  If the ulimit is infinite, plock() will try to take
130 all of the system's memory, and fail with ENOMEM (Not Enough Space).
131 Normally ulimit may be set to a few gigs of max memory usage, but even that
132 is too much; Amd doesn't need more than a few megs of resident memory size
133 (depending on the particular usage, number of maps, etc.)  Solution: lower
134 your ulimit before starting amd.  This can be done inside the ctl-amd
135 script, but be careful not to limit it too low.  Alternatively, don't use
136 plock on aix-4.3: set it to plock=no in amd.conf (which is the default if
137 you do nothing).
138
139
140 (8) *-linux (systems using glibc 2.1, such as RedHat-6.x)
141
142 There's a UDP file descriptor leak in the NIS routines in glibc, especially
143 those that do yp_bind.  Until this is bug fixed, do not set nis_domain in
144 amd.conf, but let the system pick up the default domain name as set by your
145 system.  That would avoid using the buggy yp_bind routines in libc.
146
147
148 (9) *-linux (SuSE systems using unfsd)
149
150 The user-level nfsd (2.2beta44) on older SuSE Linux systems (and possibly
151 others) dies with a SEGV when amd tries to contact it for access to a volume
152 that does not exist, or one for which there is no permission to mount.
153
154
155 (10) *-*-hpux11
156
157 If you're using NFSv3, you must install HP patches PHNE_20344 and
158 PHNE_20371.  If you don't, and you try to use amd with NFSv3 over TCP, your
159 kernel will panic.
160
161
162 (11) *-linux* (any system using a 2.2.18+ kernel)
163
164 The Linux kernels don't support Amd's direct mounts very well, leading to
165 erratic behavior: shares that don't get remounted after the first timeout,
166 inability to restart Amd because its mount points cannot be unmounted,
167 etc. There are some kernel patches on the am-utils Web site, which solve
168 these problems.  See http://www.am-utils.org/patches/.
169
170 UPDATE: kernels 2.4.10 and later completely disallow the direct mount hack,
171 so direct mounts are simply not possible on those Linux kernels.
172
173 (12) *-aix5.1.0.0 and *-hpux9*
174
175 /bin/sh is broken and fails to run the configure script properly. You need
176 to use /bin/ksh instead. The buildall script will do it for you; if for some
177 reason you need to run configure directly, run it using 'ksh configure'
178 instead of just 'configure'.
179
180 [12A] *-aix5.1.*
181
182 Apparently there is an NFS client side bug in vmount() which causes amd to
183 hang when it starts (and tries to NFS-mount itself).  According to IBM
184 engineers, this has to do with partial support code for IPv6: the NFS kernel
185 code doesn't appear to recognize the sin_family of the amd vmount(),
186 although amd does the right thing.  The bug appears to have been fixed in
187 AIX 5.2.  No known fix/patch is available for AIX 5.1 as of now (1/25/2003).
188
189 (13) *-linux and *-darwin6.0
190
191 Certain linux kernels (2.4.18+ are fine, 2.4.10- are probably bad, those in
192 between have not been tested) have a bug which causes them to reconnect
193 broken NFS/TCP connections using unprivileged ports (greater than 1024),
194 unlike the initial connections which do originate from privileged
195 ports.  This can upset quite a few NFS servers and causes accesses to the
196 mounted shares to fail with "Operation not permitted" (EPERM).
197
198 The darwin (MacOS X) kernel defaults to using unprivileged ports, but that
199 can be changed by setting the resvport mount flag (which amd sets by
200 default).  Nonetheless, if a TCP connection breaks, under certain unclear
201 circumstances the kernel might "forget" about that flag and start using
202 unprivileged ports, causing the same EPERM error above.
203
204
205 Erez & Ion.
206