This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: (call-process ...) hangs in emacs


On Aug 26 18:12, Ken Brown wrote:
> On 8/26/2014 2:55 PM, Achim Gratz wrote:
> >Ken Brown writes:
> >>It looks like my idea is going to work, but it needs testing to make
> >>sure I've implemented it correctly.  If anyone is willing to test it,
> >>you can download emacs-24.3.93-2 from my personal Cygwin repository:
> >>
> >>   http://sanibeltranquility.com/cygwin/
> >>
> >>Instructions can be found at that URL.
> >
> >I've switched to this version today.
> >
> >I've noticed that two bugs are still present at least in the emacs-w32
> >version:
> >
> >1) When showing the Windows desktop with Win-D and then restoring it
> >(including Emacs) with Win-D again, the cursor becomes a hollow
> >rectangle that doesn't blink.  To get the normal cursor behaviour back
> >you have to minimize and restore the Emacs window in the "normal" way.
> 
> This one has nothing to do with emacs.  I see the same thing in mintty, with
> just a shell prompt (bash in my case).
> 
> >2) Files that have no POSIX permissions (filemode 0000) and where access
> >is granted via ACL only get always opened as "read-only" and you have to
> >C-x C-q them before saving.  It appears that this is Cygwin specific
> >since on Linux the same version copes with that situation correctly
> >(however, the mask bits in the ACL get displayed in the group portion of
> >the file mode, which I've never seen happen on Cygwin, so this may be
> >something that Cygwin needs to do -- maybe that'd even solve the
> >problems that Perl has in the same situation).
> 
> AFAICT, emacs decides whether the file is writable via the system call
> faccessat.  (See the function 'check_writable' in src/fileio.c.)  This is
> not Cygwin specific.  So faccessat must be returning failure in the scenario
> you described.  I don't know if that's a Cygwin bug or not.

faccessat/access/eaccess don't try to be intelligent by themselves.
Rather they just call a Windows function if the filesystem is mounted
with "acl" mount flags:

- Fetch file's security descriptor
- Create process impersonation token.
- Call NtAccessCheck
- If NtAccessCheck returns "not allowed", check for backup/restore
  privileges via NtPrivilegeCheck.

In "noacl" mode or on filesystems not supporting ACLs, access uses the
st_mode flags from stat() to figure out the permissions.

The relevant parts of the implementation are the check_file_access and
subsequently called check_access functions in security.cc.

If you see a bug there, please let me know.

> BTW, emacs on Cygwin doesn't directly check ACLs, because the relevant
> configure test fails.

Works for vim.  Does the Emacs configure test only check for POSIX
ACL functions and not for Solaris ACL functions, by any chance?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: pgpXtqTgFakMf.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]