This is the mail archive of the
cygwin-developers
mailing list for the Cygwin project.
Re: 1.7.5: Occasional failure of CreatePipe or signal handing due to thread-unsafe code in cwdstuff::set
On Thu, Aug 12, 2010 at 04:38:34PM +0200, Corinna Vinschen wrote:
>On Aug 12 10:12, Christopher Faylor wrote:
>> On Thu, Aug 12, 2010 at 04:01:54PM +0200, Corinna Vinschen wrote:
>> >On Aug 12 09:54, Christopher Faylor wrote:
>> >> On Thu, Aug 12, 2010 at 03:30:08PM +0200, Corinna Vinschen wrote:
>> >> >On Aug 12 14:15, Andy Koppe wrote:
>> >> >> On 12 August 2010 13:50, Earnie wrote:
>> >> >> > Corinna Vinschen wrote:
>> >> >> >>
>> >> >> >> ??Or don't start the Win32 app at all if the path is not valid. However
>> >> >> >> ??we have to call SetCurrentDirectory at least once, for the first
>> >> >> >> ??Cygwin app, into a spot it doesn't block the aforementioned rmdir.
>> >> >>
>> >> >> Uh oh, that might cause additional aggro.
>> >> >>
>> >> >> >> ??C:\ comes to mind. ??It's the one directory which always exists and
>> >> >> >> ??it's not removable anyway.
>> >> >> >>
>> >> >> >
>> >> >> > That should be SYSTEMDRIVE and not a hard C:\. ??There is no guarantee that
>> >> >> > C: drive is present.
>> >> >>
>> >> >> Or the Cygwin base directory? Or /bin, i.e. the directory the DLL is
>> >> >> in? These couldn't be deleted anyway, and it'd be slighty less
>> >> >> catastrophic if things went wrong there ...
>> >> >
>> >> >Another advantage: We get the Cygwin root dir for free
>> >> >(shared.cc::installation_root).
>> >>
>> >> We are talking about just finding a place to cd to and not a place to put
>> >> random files when the path is too long right?
>> >
>> >We're talking about a place to always cd to.
>>
>> I guess it really doesn't matter.
>>
>> If we're talking about:
>>
>> chdir("/proc");
>> CreateFile ("foo", ...);
>
>No, as I mentioned in
>
> http://cygwin.com/ml/cygwin-developers/2010-08/msg00020.html
>
>the problem is that *any* cwd set by SetCurrentDirectory has the problem
>that the directory is not removable anymore due to the open flags used
>in the NtOpenFile call in RtlSetCurrentDirectory_U. Virtual Cygwin
>directories, long path names, and directories with restricted permissions
>are just additional problems.
I was just using an example which, I believe, was valid.
>> and you're proposing that foo should show up in c:\cygwin or
>> c:\cygwin\bin or c:\windows\system32 then I don't much like any of those
>> choices. Of course, in this case, the user did go out of their way to
>> go to a cygwin-specific location. In the case of cd'ing to a long
>> directory name they could have had no idea that the program was doing
>> anything wrong.
>>
>> I'm still very strongly opposed to the idea of having CreateFile put
>> files in random locations.
>
>That's what happens with the current code. If you call chdir to a virtual
>or too long path, the Windows CWD will stick to the last choice which
>worked.
I know that. Since we're talking about redesigning things I'd like to
go for something which doesn't surprise the user.
cgf