OpenSolaris

Printable Version Enter a New Search
Bug ID 6575513
Synopsis /bin/du -d in Solaris 10 hangs in pathconf on a symlink on stale NFS mount
State 10-Fix Delivered (Fix available in build)
Category:Subcategory utility:file
Keywords du | hang | pathconf | rtiq_reviewed
Responsible Engineer Cynthia Eastham
Reported Against solaris_10u3
Duplicate Of
Introduced In solaris_9
Commit to Fix snv_69
Fixed In snv_69
Release Fixed solaris_nevada(snv_69) , solaris_10u5(s10u5_01) (Bug ID:2151796)
Related Bugs 4354016
Submit Date 29-June-2007
Last Update Date 29-August-2007
Description
In Solaris 10 , "/bin/du -skd" on symlinks freezes it progress at a symlink
pointing to a stale NFS location.
"/bin/du -skd" is not expected to follow a symlink to a NFS location

truss shows that du hangs on pathconf syscall :

  -- snip --
  30378 6953/1@1:       15.4636 -> libc:telldir(0xff3a01c0, 0x7fffffff, 0x7ffffc00, 0x9)
  30379 6953/1:         15.4645 llseek(3, 0, SEEK_CUR)                          = 5120
  30380 6953/1@1:       15.4646 <- libc:telldir() = 4608
  30381 6953/1@1:       15.4650 -> libc:strchr(0x232b8, 0x0, 0x0, 0x0)
  30382 6953/1@1:       15.4655 <- libc:strchr() = 0x232c0
  30383 6953/1@1:       15.4661 -> libc:fstatat64(0xffd19553, 0x232ba, 0xffbfe948, 0x1000)
  30384 6953/1:         15.4667 fstatat64(-3041965, "export", 0xFFBFE948, 0x00001000) = 0
  30385 6953/1@1:       15.4669 <- libc:fstatat64() = 0
  30386 6953/1@1:       15.4673 -> libc:pathconf(0x232ba, 0x65, 0xa000, 0xffbfe948)
  30387 6953/1:         pathconf("export", 101)         (sleeping...)     
<<-- /bin/du interrupted with ^C
  30388 6953/1:         254.4238        pathconf("export", 101)                         Err#4 EINTR
  30389 6953/1:         254.4243            Received signal #2, SIGINT [default]


"/bin/du -skd" in Solaris 8 does not show this problem, as it does not use the pathconf syscall
  7392/1@1:        6.5090 <- libc:sprintf() = 7
  7392/1@1:        6.5095 -> libc:telldir(0xff3a01c0, 0x7fffffff, 0x7ffffc00, 0x80808080)
  7392/1:          6.5105 llseek(3, 0, SEEK_CUR)                          = 5120
  7392/1@1:        6.5106 <- libc:telldir() = 4608
  7392/1@1:        6.5110 -> libc:strchr(0x22f30, 0x0, 0x0, 0x0)
  7392/1@1:        6.5115 <- libc:strchr() = 0x22f38
  7392/1@1:        6.5121 -> libc:lstat64(0x22f32, 0xffbfe938, 0x0, 0x80808080)
  7392/1:          6.5126 lstat64("export", 0xFFBFE938)                   = 0
  7392/1@1:        6.5128 <- libc:lstat64() = 0
  7392/1@1:        6.5133 -> libc:readdir64(0xff3a01c0, 0x0, 0x22f38, 0x22f32)
  7392/1@1:        6.5138 <- libc:readdir64() = 0xff3a4890
Work Around
N/A
Comments
N/A