Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Thu, 03 Feb 2005 09:04:44 -0700 From: Mark Paulus Subject: Re: FindNextFileA (fhandler_disk_file::readdir) Bizareness under NTFS - Resolved In-reply-to: <0I9700AKU030KR@pmismtp02.mcilink.com> To: "cygwin AT cygwin DOT com" Message-id: <0IBC002HSFBWL8@pmismtp01.mcilink.com> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7bit Priority: Normal X-IsSubscribed: yes I finally got enough time to track down this issue, and it comes down to a perl issue. Seems that a perl script is creating the file, but it isn't doing a close on the file, so it's making the file hang around a bit too long (like maybe it's a race condition of NTFS). Anyway, I patched the perl script with an appropriate close (IN....) statement, and the issue/bizareness goes away. On Thu, 23 Dec 2004 13:40:12 -0700, Mark Paulus wrote: >I have this really wierd/Bizarre situation, and wonder >if anyone else has stumbled upon this: >I have set /usr/src to be a managed link and it's located >at c:\cygmanaged\src >I have a directory /usr/src/cygwin-equivs/cygwin-base >and under it there are some additional directories. >the thing thats causing me some wierd grief is that >fhandler_disk_file::readdir is telling me about a file that it sees >that DOES NOT exist. And, it only does it when in a >grandparent directory. This causes find to exit with: > strace --mask=all --output=strace.out find . -type f -a \( -name \#\*\# >-o -name \*\~ -o -name DEADJOE -o -name \*.orig -o -name \*.rej -o -name \*.bak >-o -name .\*.orig -o -name .\*.rej -o -name .SUMS -o -name TAGS -o -name core -o > \( -path \*/.deps/\* -a -name \*.P \) \) -print >find: ./debian/README.Debian.in: No such file or directory >I have modified fhandler_disk_file::readdir to print an additional output >line, and here is the snippet that I'm referring to: > 42 1666103 [main] find 6456 fhandler_disk_file::opendir: 0x100B3DA8 = opendir (/usr/src/cygwin-equivs/cygwin-base/equivs/debian) > 192 1666295 [main] find 6456 fhandler_disk_file::readdir: actually got '.' > 49 1666344 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (.) > 66 1666410 [main] find 6456 fhandler_disk_file::readdir: actually got '..' > 38 1666448 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (..) > 44 1666492 [main] find 6456 fhandler_disk_file::readdir: actually got '%52%45%41%44%4D%45.%44ebian' > 41 1666533 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (%52%45%41%44%4D%45.%44ebian) > 41 1666574 [main] find 6456 fhandler_disk_file::readdir: actually got '%52%45%41%44%4D%45.%44ebian.in' > 40 1666614 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (%52%45%41%44%4D%45.%44ebian.in) > 159 1666773 [main] find 6456 fhandler_disk_file::readdir: actually got 'changelog' > 43 1666816 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (changelog) > 41 1666857 [main] find 6456 fhandler_disk_file::readdir: actually got 'control' > 38 1666895 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (control) > 40 1666935 [main] find 6456 fhandler_disk_file::readdir: actually got 'copyright' > 52 1666987 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (copyright) > 40 1667027 [main] find 6456 fhandler_disk_file::readdir: actually got 'docs' > 38 1667065 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (docs) > 40 1667105 [main] find 6456 fhandler_disk_file::readdir: actually got 'rules' > 38 1667143 [main] find 6456 fhandler_disk_file::readdir: 0x100B3DAC = readdir (0x100B3DA8) (rules) > 88 1667231 [main] find 6456 fhandler_disk_file::readdir: 0x0 = readdir (0x100B3DA8) > 44 1667275 [main] find 6456 fhandler_disk_file::closedir: 0 = closedir (0x100B3DA8) > 121 1667396 [main] find 6456 closedir: 0 = closedir (0x22EAA8) >What's so bizarre is that the file README.Debian.in DOES NOT exist. >C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian>dir > Volume in drive C has no label. > Volume Serial Number is B8DA-46B4 > Directory of C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian >12/23/2004 01:26 PM . >12/23/2004 01:26 PM .. >12/23/2004 01:26 PM 770 %52%45%41%44%4D%45.%44ebian >12/23/2004 01:26 PM 137 changelog >12/23/2004 01:26 PM 326 control >12/23/2004 01:26 PM 939 copyright >12/23/2004 01:26 PM 0 docs >12/23/2004 01:26 PM 1,100 rules > 6 File(s) 3,272 bytes > 2 Dir(s) 11,870,830,592 bytes free >C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian>attrib >A C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian\%52%45%41%44%4D%45.%44ebian >A C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian\changelog >A C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian\control >A C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian\copyright >A C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian\docs >A C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian\rules >C:\cygmanaged\src\cygwin-equivs\cygwin-base\equivs\debian> >Does anyone have any idea where FindNextFileA is getting this extra file from? >Oh yeah, if I do this very same command down one directory, it works as expected, and does not >return the extra file. Go Figure. >-- >Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple >Problem reports: http://cygwin.com/problems.html >Documentation: http://cygwin.com/docs.html >FAQ: http://cygwin.com/faq/ -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/