Mail Archives: cygwin/2008/07/29/09:47:52
On Jul 29 13:54, Sam Nelson wrote:
> On Mon, July 28, 2008 13:31, Corinna Vinschen wrote:
> > and right in front of the comment starting in line 1713 in
> > fhandler_disk_file.cc add
> >
> > if (!NT_SUCCESS (status))
> > debug_printf ("NtQueryDirectoryFile failed, status %p, win32 error
> > %lu",
> > status, RtlNtStatusToDosError (status));
> >
> > Add the same lines preceeding the closing brace in line 1728.
>
> OK, did that. With the `augmented' cygwin1.dll in place, my `strace ls'
> now says (excerpted):
>
> --------------------------------------------------------------------
> 1481 230803 [main] ls 5132 path_conv::check: this->path(h:\), has_acls(0)
> 562 231365 [main] ls 5132 build_fh_pc: fh 0x61168D40
> 7242 238607 [main] ls 5132 fhandler_disk_file::opendir: 0x6857F0 =
> opendir (/cygdrive/h)
> 934 239541 [main] ls 5132 fhandler_disk_file::readdir:
> NtQueryDirectoryFile failed, status 0xC00000BB, win32 error 50
> 526 240067 [main] ls 5132 fhandler_disk_file::readdir:
> NtQueryDirectoryFile failed, status 0xC00000BB, win32 error 50
That's weird. None of the calls work and the status code is actually
STATUS_NOT_SUPPORTED. That's ... weird. I have no idea what to think
about this. At least the FileBothDirectoryInformation info class is
really old and exists since at least NT 4 times.
Here's a question: Does TAS have a client side component? Do you
have to install a driver or something? Or does it work transparently
like Samba?
> and is otherwise as before, as far as I can tell. I trust that was
> required? I haven't tried running against a snapshot build yet, as
> suggested in your later response.
That might not change anything. The problem here is to figure out what
the underlying problem is and then how to workaround it. I don't know
how much time you want to invest, but if you want to, you will have to
dig deeper:
- First of all, disable setting dir->__flags |= dirent_get_d_ino in
fhandler_disk_file::opendir at line 1570. This disables the
FileIdBothDirectoryInformation call entirely, so only the
FileBothDirectoryInformation call is left.
Try again. Still status 0xC00000BB? Bummer.
Keep dirent_get_d_ino disabled so you can concentrate on a single
NtQueryDirectoryFile call, the second one.
- Replace FileBothDirectoryInformation with FileDirectoryInformation.
The readdir call will crash now at one point, but if you call
`strace ls' from cmd.exe, you get at least one of the above debug
strings. Still status 0xC00000BB? Try FileNamesInformation Still?
- Change the ninth parameter to NtQueryDirectoryFile from FALSE to TRUE.
Try again. Still? Try in combination with the different info classes.
- Change the NtOpenFile call in fhandler_disk_file::opendir to
use GENERIC_READ instead of FILE_LIST_DIRECTORY.
- Remove the FILE_OPEN_FOR_BACKUP_INTENT from NtOpenFile.
- Still? Then we're probably stuck if you can't get help from the
TAS guys.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
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/
- Raw text -