Subject: bug#70415: 30.0.50; [Cygwin] `lock-file' creates a symlink with funny name

From: Eli Zaretskii <[email-masked]>
Date: Tue, 16 Apr 2024 16:32:17 +0300

> Date: Tue, 16 Apr 2024 21:33:07 +0900
> From: Katsumi Yamaoka <[email-masked]>
> 
> As you know, Emacs creates a lock file when start editing a FILE
> by default, it is a symbolic link that is linked to a name
> looking like this:
> 
> .#FILE -> [email-masked]
> 
> Where 1234 is Emacs' pid.  It will be removed after saving
> the FILE.  Even if the lock file is left, Emacs will remove it
> when opening the FILE for the next time.  However, recently lock
> files no longer got deleted on at least the latest Cygwin on
> Windows 11.  It is (probably) because Emacs came to create lock
> files with a funny name like this:
> 
> .#FILE -> [email-masked]:-11644473599
> 
> For that case `(unlock-file "FILE")' issues this warning:
> 
> Warning (unlock-file): Unlocking file: Invalid argument, FILE, ignored

Does Cygwin support file names with a colon, such as the above?

The part after the colon is the system boot time, and is used on all
Posix hosts.  I don't know why it prints as a negative value on
Cygwin, but the question is: does Cygwin support such file names?  If
not, what are the restrictions on Cygwin file names that we need to
observe when we create lock files?  This is likely a question for the
Cygwin mailing list, or maybe you already know the answer.

Several internal functions in filelock.c know about the
[email-masked]:BOOT_TIME format of the lock file names, so if there are
any Cygwin-specific restrictions, they will all need to be patched
accordingly.

> I don't know what ":-11644473599" is, but I did the bisection
> and found that it started with this change:
> 
> ,----
> | commit 393f58c85aeb78f814866ccaad9ae7efd3fa6766
> | Author: Adam Porter <[email-masked]>
> | Date:   Fri Mar 8 23:43:14 2024 -0600
> |
> |     'vtable-update-object' can now be called with one argument

This is extremely unlikely to have caused the problem.  It is more
likely that some change in Cygwin and/or in the Gnulib's boot-time
module causes this now.

Also, do you see this in "emacs -Q"?  If not, perhaps some local
customizations cause this?