Date: Fri, 15 Feb 2008 11:31:40 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-alpha@freebsd.org Cc: Christian Weisgerber <naddy@mips.inka.de> Subject: Re: rpc.statd: msync() failed Message-ID: <200802151131.40995.jhb@freebsd.org> In-Reply-To: <fp4ddf$17a$1@kemoauc.mips.inka.de> References: <fp4ddf$17a$1@kemoauc.mips.inka.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 15 February 2008 11:08:15 am Christian Weisgerber wrote: > $ uname -srm > FreeBSD 5.5-STABLE alpha > > Whenever I boot the machine into multi-user mode, this error shows > up: > > rpc.statd: msync() failed: Invalid argument > > I've finally bothered to ktrace the rpc.statd invocation and the > problem remains mysterious. rpc.statd mmaps its status file, > daemonizes, syslogs a startup messages, reads something from a UDP > socket, msyncs the mmaped region--error! None of the documented > reasons for msync(2) to fail with EINVAL apply. > > [...] > 375 rpc.statd CALL open(0x1200032bc,0x2,0x160258b2a) > 375 rpc.statd NAMI "/var/db/statd.status" > 375 rpc.statd RET open 3 > 375 rpc.statd CALL mmap(0,0x10000000,0x3,0x1,0x3,0,0) > 375 rpc.statd RET mmap 1613389824/0x1602a6000 > 375 rpc.statd CALL lseek(0x3,0,0,0x2) > 375 rpc.statd RET lseek 256/0x100 > 375 rpc.statd CALL sigaction(0x1,0x11ffed68,0x11ffed48) > 375 rpc.statd RET sigaction 0 > 375 rpc.statd CALL fork > 375 rpc.statd RET fork 376/0x178 > 376 rpc.statd RET fork 0 > 375 rpc.statd CALL exit(0) > 376 rpc.statd CALL setsid > 376 rpc.statd RET setsid 376/0x178 > 376 rpc.statd CALL sigaction(0x1,0x11ffed48,0) > 376 rpc.statd RET sigaction 0 > 376 rpc.statd CALL chdir(0x16025b956) > 376 rpc.statd NAMI "/" > 376 rpc.statd RET chdir 0 > 376 rpc.statd CALL open(0x160256c93,0x2,0) > 376 rpc.statd NAMI "/dev/null" > 376 rpc.statd RET open 8 > 376 rpc.statd CALL dup2(0x8,0) > 376 rpc.statd RET dup2 0 > 376 rpc.statd CALL dup2(0x8,0x1) > 376 rpc.statd RET dup2 1 > 376 rpc.statd CALL dup2(0x8,0x2) > 376 rpc.statd RET dup2 2 > 376 rpc.statd CALL close(0x8) > 376 rpc.statd RET close 0 > 376 rpc.statd CALL gettimeofday(0x11ffdfd8,0) > 376 rpc.statd RET gettimeofday 0 > 376 rpc.statd CALL access(0x16025d455,0x4) > 376 rpc.statd NAMI "/etc/localtime" > 376 rpc.statd RET access 0 > 376 rpc.statd CALL open(0x16025d455,0,0x1) > 376 rpc.statd NAMI "/etc/localtime" > 376 rpc.statd RET open 8 > 376 rpc.statd CALL fstat(0x8,0x11ffb618) > 376 rpc.statd RET fstat 0 > 376 rpc.statd CALL read(0x8,0x11ffbaa8,0x249c) > 376 rpc.statd GIO fd 8 read 837 bytes > [... TZ data omitted ...] > 376 rpc.statd RET read 837/0x345 > 376 rpc.statd CALL close(0x8) > 376 rpc.statd RET close 0 > 376 rpc.statd CALL socket(0x1,0x2,0) > 376 rpc.statd RET socket 8 > 376 rpc.statd CALL fcntl(0x8,0x2,0x1) > 376 rpc.statd RET fcntl 0 > 376 rpc.statd CALL connect(0x8,0x11ffdf78,0x6a) > 376 rpc.statd NAMI "/var/run/logpriv" > 376 rpc.statd RET connect 0 > 376 rpc.statd CALL sendto(0x8,0x11ffe048,0x27,0,0,0) > 376 rpc.statd GIO fd 8 wrote 39 bytes > "<30>Feb 15 16:25:31 rpc.statd: Starting" > 376 rpc.statd RET sendto 39/0x27 > 376 rpc.statd CALL sigaction(0x14,0x11ffedb8,0) > 376 rpc.statd RET sigaction 0 > 376 rpc.statd CALL select(0x8,0x11ffec78,0,0,0x11ffed78) > 376 rpc.statd RET select 1 > 376 rpc.statd CALL recvfrom(0x4,0x120034000,0x2260,0,0x11ffe608,0x11ffe688) > 376 rpc.statd GIO fd 4 read 64 bytes > 0x0000 47ba b599 0000 0000 0000 0002 0001 86b8 |G...............| > 0x0010 0000 0001 0000 0004 0000 0000 0000 0000 |................| > 0x0020 0000 0000 0000 0000 0000 0007 4e46 5320 |............NFS | > 0x0030 4e4c 4d00 0000 0000 0000 0000 0000 0000 |NLM.............| > 376 rpc.statd RET recvfrom 64/0x40 > 376 rpc.statd CALL msync(0x1602a6000,0,0) > 376 rpc.statd RET msync -1 errno 22 Invalid argument > 376 rpc.statd CALL gettimeofday(0x11ffd868,0) > 376 rpc.statd RET gettimeofday 0 > 376 rpc.statd CALL sendto(0x8,0x11ffd8d8,0x3f,0,0,0) > 376 rpc.statd GIO fd 8 wrote 63 bytes > "<27>Feb 15 16:25:32 rpc.statd: msync() failed: Invalid argument" > 376 rpc.statd RET sendto 63/0x3f > [...] I would add some printfs to msync() to see which EINVAL case is being triggered and go from there. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802151131.40995.jhb>