cvs commit: src/bin/rm

walt wa1ter at myrealbox.com
Wed Oct 6 17:32:33 PDT 2004



On Wed, 6 Oct 2004, Matthew Dillon wrote:

>    ...We really don't support mergemaster anymore.
>    ...it isn't a high priority at the moment.

I agree that supporting mergemaster is not important, but it did work
perfectly as recently as two days ago.  Seems to me that the error
message from 'rm' is important aside from mergemaster unless I'm the
only one seeing it  -- I just don't know how to demonstrate the error
any other way at the moment.

I ran a ktrace on mergemaster to try to figure out what's wrong.
I can see the first 'rm -rf' traversing the tree and removing
lots of stuff, then hitting the 'directory not empty' then
chflags being called, and that's where this begins:

  3600 sh       NAMI  "/bin/chflags"
  3600 chflags  RET   execve 0
  3600 chflags  CALL  readlink(0x8056494,0xbfbffbb4,0x3f)
  3600 chflags  NAMI  "/etc/malloc.conf"
  3600 chflags  RET   readlink -1 errno 2 No such file or directory
  3600 chflags  CALL  mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
  3600 chflags  RET   mmap 671444992/0x28057000
  3600 chflags  CALL  break(0x805b000)
  3600 chflags  RET   break 0
  3600 chflags  CALL  break(0x805c000)
  3600 chflags  RET   break 0
  3600 chflags  CALL  break(0x805d000)
  3600 chflags  RET   break 0
  3600 chflags  CALL  break(0x805e000)
  3600 chflags  RET   break 0
  3600 chflags  CALL  lstat(0x805d140,0x805d154)
  3600 chflags  NAMI  "/var/tmp/temproot"
  3600 chflags  RET   lstat 0
  3600 chflags  CALL  open(0x80554af,0,0)
  3600 chflags  NAMI  "."
  3600 chflags  NAMI  "."
  3600 chflags  RET   open 3
  3600 chflags  CALL  fchdir(0x3)
  3600 chflags  RET   fchdir -1 errno 20 Not a directory
  3600 chflags  CALL  write(0x2,0xbfbff36c,0x9)
  3600 chflags  GIO   fd 2 wrote 9 bytes
       "chflags: "
  3600 chflags  RET   write 9
  3600 chflags  CALL  write(0x2,0xbfbff38c,0x8)
  3600 chflags  GIO   fd 2 wrote 8 bytes
       "fts_read"
  3600 chflags  RET   write 8
  3600 chflags  CALL  write(0x2,0xbfbff35c,0x2)
  3600 chflags  GIO   fd 2 wrote 2 bytes
       ": "
  3600 chflags  RET   write 2
  3600 chflags  CALL  write(0x2,0xbfbff35c,0x10)
  3600 chflags  GIO   fd 2 wrote 16 bytes
       "Not a directory
       "
  3600 chflags  RET   write 16/0x10
  3600 chflags  CALL  exit(0x1)
  2216 sh       RET   wait4 3600/0xe10
  2216 sh       CALL  fork
  2216 sh       RET   fork 3601/0xe11
  2216 sh       CALL  getpgrp
  2216 sh       RET   getpgrp 2216/0x8a8
  2216 sh       CALL  wait4(0xffffffff,0xbfbff7ec,0x2,0)
  3601 sh       RET   fork 0
  3601 sh       CALL  close(0xa)
  3601 sh       RET   close 0
  3601 sh       CALL  execve(0x80c364c,0x80c3604,0x80c3614)
  3601 sh       NAMI  "/bin/rm"
  3601 rm       RET   execve 0
  3601 rm       CALL  geteuid
  3601 rm       RET   geteuid 0
  3601 rm       CALL  ioctl(0,TIOCGETA,0xbfbffc64)
  3601 rm       RET   ioctl 0
  3601 rm       CALL  readlink(0x806d9f4,0xbfbffbb0,0x3f)
  3601 rm       NAMI  "/etc/malloc.conf"
  3601 rm       RET   readlink -1 errno 2 No such file or directory
  3601 rm       CALL  mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
  3601 rm       RET   mmap 671547392/0x28070000
  3601 rm       CALL  break(0x807a000)
  3601 rm       RET   break 0
  3601 rm       CALL  break(0x807b000)
  3601 rm       RET   break 0
  3601 rm       CALL  break(0x807c000)
  3601 rm       RET   break 0
  3601 rm       CALL  break(0x807d000)
  3601 rm       RET   break 0
  3601 rm       CALL  lstat(0x807c140,0x807c154)
  3601 rm       NAMI  "/var/tmp/temproot"
  3601 rm       RET   lstat 0
  3601 rm       CALL  open(0x806c9d2,0,0)
  3601 rm       NAMI  "."
  3601 rm       NAMI  "."
  3601 rm       RET   open 3
  3601 rm       CALL  fchdir(0x3)
  3601 rm       RET   fchdir -1 errno 20 Not a directory
  3601 rm       CALL  write(0x2,0xbfbff518,0x4)
  3601 rm       GIO   fd 2 wrote 4 bytes
       "rm: "
  3601 rm       RET   write 4
  3601 rm       CALL  write(0x2,0xbfbff538,0x8)
  3601 rm       GIO   fd 2 wrote 8 bytes
       "fts_read"
  3601 rm       RET   write 8
  3601 rm       CALL  write(0x2,0xbfbff508,0x2)
  3601 rm       GIO   fd 2 wrote 2 bytes
       ": "
  3601 rm       RET   write 2
  3601 rm       CALL  write(0x2,0xbfbff508,0x10)
  3601 rm       GIO   fd 2 wrote 16 bytes
       "Not a directory
       "
  3601 rm       RET   write 16/0x10
  3601 rm       CALL  exit(0x1)
  2216 sh       RET   wait4 3601/0xe11
  2216 sh       CALL  exit(0x1)

Does this give any worthwhile information?

BTW I did recompile world/kernel before doing this.





More information about the Commits mailing list