[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#557248: Further details



Petr Salinger pointed me at freebsd-hackedutils, which allows me to
decode a ktrace and report that my suspicions as to the cause are
correct.  Here's the behavior of remove() under kfreebsd:

10316 tester    CALL unlink(0x6dae88)
10316 tester    NAMI
"/home/zack/monotone/monotone-0.45/tester_dir/tester-tests/cleanup-1/emptyhomedir"
10316 tester   RET  unlink -1 errno 1 Operation not permitted
10316 tester   CALL write(0x2,0x7fffffffba50,0xa9)
10316 tester   GIO  fd 2 wrote 169 bytes
      "[...]error: could not remove '[...]/emptyhomedir': Operation
not permitted"

Contrast what strace tells me under linux:

unlink("/home/zack/monotone/monotone-0.45/tester_dir/tester-tests/cleanup-1/emptyhomedir")
= -1 EISDIR (Is a directory)
rmdir("/home/zack/monotone/monotone-0.45/tester_dir/tester-tests/cleanup-1/emptyhomedir")
= 0

So, you basically just need to patch remove() in libc to try rmdir()
on EPERM as well as EISDIR.

zw



Reply to: