Skip site navigation (1)Skip section navigation (2)
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>