On Dec 4 22:42, Adam Dinwoodie wrote: > On Thu, Dec 04, 2014 at 04:27:51PM -0500, Dave Lindbergh wrote: > > You are more than welcome to read the strace output if that'll give > > you a clue (it doesn't give me one). All 1.7 MBytes of it are at > > http://nerdfever.com/files/strace.txt > > > > (That comes from "strace git clone > > https://github.com/nerdfever/pic32mx-bmf >strace.txt") > > > > I'm still stumped. > > Okay, I'm looking through this trace in the hope of finding something. > The below looks suspicious, but I'm not sufficiently familiar with > either Git or Cygwin internals to know (a) whether this is a problem at > all or (b) if it is a problem, whether it's a symptom of an earlier > problem I haven't spotted on my brief skim. > > 616 12330609 [main] git 2348 unlink_nt: Trying to delete > \??\Z:\pic32mx-bmf\.git\objects\30, isdir = 1 > 3190 12333799 [main] git 2348 unlink_nt: Setting delete disposition on > \??\Z:\pic32mx-bmf\.git\objects\30 failed, status = 0xC0000101 > 6362 12340161 [main] git 2348 unlink_nt: Try-to-bin > \??\Z:\pic32mx-bmf\.git\objects\30 > 24341 12364502 [main] git 2348 try_to_bin: > \??\Z:\pic32mx-bmf\.git\objects\30, return bin_status 3 > 645 12365147 [main] git 2348 unlink_nt: Try > \??\Z:\pic32mx-bmf\.git\objects\30 again > 12250 12377397 [main] git 2348 unlink_nt: Setting delete disposition on > \??\Z:\pic32mx-bmf\.git\objects\30 failed, status = 0xC0000101 > 22680 12400077 [main] git 2348 unlink_nt: Try > \??\Z:\pic32mx-bmf\.git\objects\30 again > 8487 12408564 [main] git 2348 unlink_nt: Setting delete disposition on > \??\Z:\pic32mx-bmf\.git\objects\30 failed, status = 0xC0000101 > 1903 12410467 [main] git 2348 unlink_nt: Try > \??\Z:\pic32mx-bmf\.git\objects\30 again > <above two lines repeated several more times>
First a sharing violation (not visible in the above snippet), then directory not empty. This seems to be the result of an earlier problem. What I found in the strace is this: - Create file Z:\pic32mx-bmf\.git\objects\30\tmp_obj_YljwNZ - open file, write something, close file. - link (Z:\pic32mx-bmf\.git\objects\30\tmp_obj_YljwNZ, Z:\pic32mx-bmf\.git\objects\30\0bdeb2fd209d24afb865584da10b78aa8fefc4) succeeds. - unlink (Z:\pic32mx-bmf\.git\objects\30\tmp_obj_YljwNZ) succeeds - Trying to open Z:\pic32mx-bmf\.git\objects\30\0bdeb2fd209d24afb865584da10b78aa8fefc4 but the file doesn't exist and NtCreateFile fails with status 0xC0000034, STATUS_OBJECT_NAME_NOT_FOUND --> ENOENT. - Subsequent unlink (Z:\pic32mx-bmf\.git\objects\30) fails with a STATUS_DIRECTORY_NOT_EMPTY --> ENOTEMPTY. - git seems to be prepared for such a case, the parent process calls opendir/readdir on the directory. Enumerating the files in Z:\pic32mx-bmf\.git\objects\30 shows the entries ".", ".." and "0bdeb2fd209d24afb865584da10b78aa8fefc4". - Then git calls lstat on the file, which results in NtOpenFile returning status STATUS_OBJECT_NAME_NOT_FOUND again. - From a POSIX POV this means "somebody else" deleted the file, so the dir is empty now. Git tries to delete the directory again, which again results in STATUS_DIRECTORY_NOT_EMPTY --> ENOTEMPTY and, internally, a sharing violation which disallows to move the directory out of the way. This looks suspiciously like a bug in the remote filesystem. Link succeeded, so there are two links to the same file in the directory. Unlinking link 1 succeeds, so there's still one link to the file in the directory, but link 2 is inaccessible as if the file has been deleted completely. Thus, a full POSIX git on this drive is broken. Can you please run /usr/lib/csih/getVolInfo /cygdrive/z and paste the output here? Maybe I can workaround this in the next Cygwin version. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
pgp4OooA8p6xN.pgp
Description: PGP signature