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