]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/amd/BUGS
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / amd / BUGS
1             LIST OF KNOWN BUGS IN AM-UTILS OR OPERATING SYSTEMS
2
3 Note: report am-utils bugs via Bugzilla to https://bugzilla.am-utils.org/ or
4 by email to the am-utils@am-utils.org mailing list.
5
6
7 (1) mips-sgi-irix*
8
9 [1A] known to have flaky NFS V.3 and TCP.  Amd tends to hang or spin
10 infinitely after a few hours or days of use.  Users must install recommended
11 patches from vendor.  Patches help, but not all the time.  Otherwise avoid
12 using NFS V.3 and TCP on these systems, by setting
13
14         /defaults opts:=vers=2,proto=udp
15
16 [1B] yp_all() leaks a file descriptor.  Eventually amd runs out of file
17 descriptors and hangs.  Am-utils circumvents this by using its own version
18 of yp_all which uses udp and iterates over NIS maps.  The latter isn't as
19 reliable as yp_all() which uses TCP, but it is better than hanging.
20
21 (I have some reports that older version of hpux-9, with older libc, also
22 leak file descriptors.)
23
24 [1C] SGI's MIPSpro C compiler on IRIX 6 has the unfortunate habit of
25 creating code specificially for the machine it runs on.  The ABI and ISA
26 used depend very much on the OS version and compiler release used.  This
27 means that the resulting amd binary won't run on machines different from
28 the build host, particularly older ones.  Older versions of am-utils
29 enforced the O32 ABI when compiling with cc to work around this, but this
30 ABI is deprecated in favor of the N32 ABI now, so we use -n32 -mips3 to
31 ensure that the binaries run on every host capable of running IRIX 6 at
32 all.  If this is not appropriate for you, configure with something like
33 CC='cc -64' instead to get the desired ABI and ISA.
34
35 (2) alpha-unknown-linux-gnu (RedHat Linux 4.2)
36
37 hasmntopt(mnt, opt) can go into an infinite loop if opt is any substring
38 of mnt->mnt_opts.  Redhat 5.0 does not have this libc bug.  Here is an
39 example program:
40
41 #include <stdio.h>
42 #include <mntent.h>
43 main()
44 {
45   struct mntent mnt;
46   char *cp;
47   mnt.mnt_opts = "intr,rw,port=1023,timeo=8,foo=br,retrans=110,indirect,map=/usr/local/AMD/etc/amd.proj,boo";
48   cp = hasmntopt(&mnt, "ro");
49   printf("cp = %s\n", cp);
50   exit(0);
51 }
52
53 It is possible that sufficiently newer version of libc for RH4.2 fix this
54 problem.
55
56
57 (3) mips-dec-ultrix4.3
58
59 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> reports
60
61 [3A] One needs the Kernel Config Files (UDTBIN430) subset installed to
62 compile am-utils, otherwise essential header files (net/if.h, net/route.h,
63 rpcsvc/mount.h, rpcsvc/yp_prot.h, rpcsvc/ypclnt.h, sys/proc.h) are
64 missing.
65
66 [3B] It's probably impossible to build am-utils with DEC C on Ultrix V4.3.
67 This compiler is pseudo-ANSI only.  Maybe the new ANSI C compiler in V4.3A
68 and beyond will do.  I successfully used gcc 2.8.1.
69
70 [3C] You need to build against a recent libhesiod (I used 3.0.2) and
71 libresolv/lib44bsd (I used BIND 4.9.5-P1).  The resolver routines in
72 libc seem to cause random memory corruption.  It is necessary to specify
73 LIBS=-l44bsd.  lib44bsd is a helper library of libresolv used to supply
74 functions like strdup which are missing on the host system.  This isn't
75 currently autoconfiscated.
76
77 [3D] You need to configure with CONFIG_SHELL=/bin/sh5 /bin/sh5 buildall;
78 /bin/sh cannot handle the shell functions used in buildall and is both
79 buggy and slow.
80
81 [3E] At least the gcc 2.7.0 fixincludes-mangled <sys/utsname.h> needs a
82 forward declaration of struct utsname to avoid lots of gcc warnings:
83
84 RCS file: RCS/utsname.h,v
85 retrieving revision 1.1
86 diff -u -r1.1 utsname.h
87 --- utsname.h   1995/06/19 13:07:01     1.1
88 +++ utsname.h   1998/01/27 12:34:26
89 @@ -59,6 +59,7 @@
90  #ifdef KERNEL
91  #include "../h/limits.h"
92  #else /* user mode */
93 +struct utsname;
94  extern int     uname _PARAMS((struct utsname *));
95  #endif
96  #define __SYS_NMLN 32
97
98
99 (4) powerpc-ibm-aix4.2.1.0
100
101 [4A] "Randall S. Winchester" <rsw@Glue.umd.edu> reports that for amd to
102 start, you need to kill and restart rpc.mountd and possibly also make sure
103 that nfsd is running.  Normally these are not required.
104
105 [4B] "Stefan Vogel" <vogel@physik.unizh.ch> reports that if your amq
106 executable dump core unexpectedly, then it may be a bug in gcc 2.7.x.
107 Upgrade to gcc 2.8.x or use IBM's xlC compiler.
108
109 [C] Do not link amd with libnsl.  It is buggy and causes amd to core dump
110 in strlen inside strdup inside svc_register().
111
112
113 (5) *-linux-rh51 (RedHat Linux 5.1)
114
115 There's a UDP file descriptor leak in libnsl in RedHat Linux 5.1.  This
116 library part of glibc2.  Am-utils currently declares redhat 5.1 systems as
117 having a "broken yp_all" and using an internal, slower, leak-free version.
118 The leak is known to the glibc maintainers and a fix from them is due soon,
119 but it is not yet in the glibc-2.0.7-19 RPM.
120
121
122 (6) rs6000-ibm-aix4.1.x
123
124 A bug in libc results in an amq binary that doesn't work; amq -v dumps core
125 in xdr_string.  There is no known fix (source code or vendor patch) at this
126 time.  (Please let am-utils@am-utils.org know if you know of a fix.)
127
128
129 (7) *-aix4.3.2.0
130
131 The plock() function will pre-reserve all of the memory up to the maximum
132 listed in the ulimit.  If the ulimit is infinite, plock() will try to take
133 all of the system's memory, and fail with ENOMEM (Not Enough Space).
134 Normally ulimit may be set to a few gigs of max memory usage, but even that
135 is too much; Amd doesn't need more than a few megs of resident memory size
136 (depending on the particular usage, number of maps, etc.)  Solution: lower
137 your ulimit before starting amd.  This can be done inside the ctl-amd
138 script, but be careful not to limit it too low.  Alternatively, don't use
139 plock on aix-4.3: set it to plock=no in amd.conf (which is the default if
140 you do nothing).
141
142
143 (8) *-linux (systems using glibc 2.1, such as RedHat-6.x)
144
145 There's a UDP file descriptor leak in the NIS routines in glibc, especially
146 those that do yp_bind.  Until this is bug fixed, do not set nis_domain in
147 amd.conf, but let the system pick up the default domain name as set by your
148 system.  That would avoid using the buggy yp_bind routines in libc.
149
150
151 (9) *-linux (SuSE systems using unfsd)
152
153 The user-level nfsd (2.2beta44) on older SuSE Linux systems (and possibly
154 others) dies with a SEGV when amd tries to contact it for access to a volume
155 that does not exist, or one for which there is no permission to mount.
156
157
158 (10) *-*-hpux11
159
160 If you're using NFSv3, you must install HP patches PHNE_20344 and
161 PHNE_20371.  If you don't, and you try to use amd with NFSv3 over TCP, your
162 kernel will panic.
163
164
165 (11) *-linux* (any system using a 2.2.18+ kernel)
166
167 The Linux kernels don't support Amd's direct mounts very well, leading to
168 erratic behavior: shares that don't get remounted after the first timeout,
169 inability to restart Amd because its mount points cannot be unmounted, etc.
170 There are some kernel patches on the am-utils Web site, which solve these
171 problems.  See http://www.am-utils.org/patches/.
172
173 Later 2.4.x kernels completely disallow the hack amd was using for direct
174 mounts, so another solution will have to be found.
175
176 Note: the above is for the old-style amd mount_type = nfs. The autofs mounts
177 don't support direct mounts at all (due to lack of kernel support).
178
179 (12) *-aix5.1.0.0 and *-hpux9*
180
181 /bin/sh is broken and fails to run the configure script properly. You need
182 to use /bin/ksh instead. The buildall script will do it for you; if for some
183 reason you need to run configure directly, run it using 'ksh configure'
184 instead of just 'configure'.
185
186 [12A] *-aix5.2.*
187
188 Apparently there is an NFS client side bug in vmount() which causes amd to
189 hang when it starts (and tries to NFS-mount itself).  According to IBM
190 engineers, this has to do with partial support code for IPv6: the NFS kernel
191 code doesn't appear to recognize the sin_family of the amd vmount(),
192 although amd does the right thing.  The bug doesn't appear to be in 5.1 or
193 4.3.3.  A fix from IBM is available, APAR number IY41417.
194
195 A binary built on 4.3.3 will not work on 5.2, because the kernel ABIs have
196 changed.
197
198 [12C] *-aix*
199
200 It is important that you install bos.net.nfs.adt before configuring and
201 building am-utils.  If you don't, you will get compile-time or
202 configure-time errors, especially when configure tries to find AIX's
203 definition of struct nfs_args.
204
205 (13) *-linux and *-darwin6.0
206
207 Certain linux kernels (2.4.18+ are fine, 2.4.10- are probably bad, those in
208 between have not been tested) have a bug which causes them to reconnect
209 broken NFS/TCP connections using unprivileged ports (greater than 1024),
210 unlike the initial connections which do originate from privileged
211 ports.  This can upset quite a few NFS servers and causes accesses to the
212 mounted shares to fail with "Operation not permitted" (EPERM).
213
214 The darwin (MacOS X) kernel defaults to using unprivileged ports, but that
215 can be changed by setting the resvport mount flag (which amd sets by
216 default).  Nonetheless, if a TCP connection breaks, under certain unclear
217 circumstances the kernel might "forget" about that flag and start using
218 unprivileged ports, causing the same EPERM error above.
219
220 (14) Solaris
221
222 The line "%option" in *.l files may cause Solaris /usr/ccs/bin/lex to abort
223 with the error "missing translation value."  This is a bug in Solaris lex.
224
225 Moreover, both Solaris yacc and lex produce code that does not pass strict
226 compilation such as "gcc -Wall -Werror".
227
228 Use GNU Flex and Bison instead.  You can download ready-made binaries from
229 www.sunfreeware.com.  Note, however, that sometimes the binaries on
230 sunfreeware.com don't seem to work, often because they are built against an
231 older revision of Solaris or build tools.  In that case, build a fresh
232 version of GNU flex and/or bison from the latest stable sources.  See
233 http://www.gnu.org/software/flex/ and http://www.gnu.org/software/bison/.
234
235 (15) Solaris 8 + patch 10899[34]-xx (18 <= xx < 25) or patch 11260[56]-xx
236
237 With this patch, Sun updated the autofs kernel module and automountd
238 userspace daemon from version 3 to version 4.  They also updated the
239 /usr/include/rpcsvc/autofs_prot.x file, but forgot to regenerate the
240 autofs_prot.h file.  Thus, when amd is compiled, it uses the old header and
241 thinks it should use autofs version 3, when in fact the kernel now supports
242 (and expects) only version 4.
243
244 The workaround is to run 'rpcgen -C -h /usr/include/rpcsvc/autofs_prot.x >
245 /usr/include/rpcsvc/autofs_prot.h' and completely reconfigure and rebuild
246 am-utils (removing config.cache before running configure).
247
248 The problem is fixed in patch revisions 10899[34]-25 and up.
249
250
251 (16) Linux kernel 2.4+ and lofs mounts
252
253 Lofs mounts are not supported by the linux kernel, at all, but since 2.4.0
254 the kernel supports a similar type of mount called a bind mount.  Its
255 semantics are closer to those of a hardlink than to those of lofs, and one
256 of the results is that bind mounts ignore any mount options paseed to them.
257
258 Amd uses bind mounts internally to emulate lofs mounts, which means that
259 lofs mounts on linux will effectively ignore their mount parameters and
260 inherit whatever options the original filesystem mounted upon had.
261
262
263 (17) autoconf 2.57
264
265 If you see configure warnings of the following kind:
266
267 configure: WARNING: sys/proc.h: present but cannot be compiled
268 configure: WARNING: sys/proc.h: check for missing prerequisite headers?
269 configure: WARNING: sys/proc.h: proceeding with the preprocessor's result
270 configure: WARNING:     ## ------------------------------------ ##
271 configure: WARNING:     ## Report this to bug-autoconf@gnu.org. ##
272 configure: WARNING:     ## ------------------------------------ ##
273
274 please ignore them.  They are not real errors, and neither
275 bug-autoconf@gnu.org nor the am-utils maintainers are interested in hearing
276 about them.  Autoconf simply tries to do more than we need and attempts to
277 compile each header in isolation, which fails for many system headers.
278 That's ok, because we only need to know if a header file exists -- we know
279 how to use it properly ourselves.
280
281 While autoconf does offer a way to specify other files to be included with
282 the tested header, in order to avoid these warnings, using it would enlarge
283 the resulting configure script by an order of magnitude, and for no real
284 gain.  Configure is big enough as it is, we don't need any more useless
285 baggage in it.
286
287 (18) NetBSD 2.0.2, FreeBSD 5.4, OpenBSD 3.7, and quite possibly most other
288      BSDs and other OSs (as of September 2005)
289
290 Some BSD kernels don't have a way to turn off the NFS attribute cache.  They
291 don't have a 'noac' mount flag, and setting various cache timeout fields in
292 struct nfs_args doesn't turn off the attribute cache; instead, it sets the
293 attribute cache timeout to some internal hard-coded default (usually
294 anywhere from 5-30 seconds).  If Amd cannot turn off the NFS attribute
295 cache, under heavy Amd usage, users could get ESTALE errors from automounted
296 symlinks, or find that those symlinks point to the wrong place.  One
297 workaround which would minimize this effect is to set auto_attrcache=1 in
298 your amd.conf, but it doesn't eliminate the problem!  The best solutions are
299 (1) to use Amd in Autofs mode, if it's supported in your OS, and (2) talk to
300 your OS vendor to support a true "noac" flag.  See README.attrcache for more
301 details.
302
303 Erez & the am-utils team.