Bug in rm -r with locked files

Chris January chris@atomice.net
Thu Jan 23 15:12:00 GMT 2003


> On Tue, Jan 21, 2003 at 11:25:19AM -0800, Randall R Schulz wrote:
> >Shankar,
> >
> >At 11:05 2003-01-21, Shankar Unni wrote:
> >>lhall@pop.ma.ultranet.com wrote:
> >>>You may find the 'handle' utility from www.sysinternal.com a handy
> >>>(no pun intended :-) ) tool for determining which files are opened
> >>>by which processes.
> >>
> >>I don't think that was the primary issue.  The issue was that
> if a process
> >>is using a directory as its working directory (chdir()'ed into it), "rm
> >>-rf" goes into an infinite loop attempting to remove the
> directory (rather
> >>than print an error and move on).
> >>
> >>Definitely a bug, and still a bug.
> >
> >
> >That, in fact, is a presumption. The Cygwin principals are aware of this
> >behavior and it is not new. It is a trade-off required to get POSIX-like
> >behavior from the "unlink" system call as emulated by Cygwin.
> >
> >Please review the discussions under the subject "Infinite Loop
> In "rm -fr"
> >When Busy File Encountered" on April 6, 2002 and "REPOST: unlink
> semantics"
> >from April 10, 2002.
> >
> >I'm not an expert, but this has come up more than once (I initiated the
> >April 6 round of discussions) and the upshot is that given the
> mismatch of
> >API semantics between Windows and POSIX, this is the best that
> can be done.
>
> Correct.  I knew that if I waited long enough Randall would
> probably reply.
> :-)
>
> It's not a completely intractable problem.  I think that someone (Chris
> January?) provided a workaround at one point.  "cygserver" could also
> provide a possible solution someday.

The best solution, IIRC, was to move the locked files elsewhere on the same
volume (which should be allowed) if they can't be unlinked, and then unlink
them later. So there would be a directory of files waiting to die if you
like :) Obviously you'd have to give them unique names, but you can just use
random numbers.

Chris


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list