GNU bug report logs -
#13149
24.3.50; Emacs thinks file was changed outside Emacs, but it was not
Previous Next
Reported by: "Drew Adams" <drew.adams <at> oracle.com>
Date: Tue, 11 Dec 2012 21:53:02 UTC
Severity: normal
Tags: moreinfo, unreproducible
Found in version 24.3.50
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #52 received at 13149 <at> debbugs.gnu.org (full text, mbox):
On 01/15/13 14:11, Dmitry Gutov wrote:
> Here you go:
Sorry, what scenario are you using for that?
Here's what I get when I run "src/emacs -Q /tmp/r" and type "a C-x C-s b".
In this transcript I indicate exactly when I typed each character.
fileio.c:3573: stat_mtime=1358285891.979499498
fileio.c:3573: stat_mtime=1358185278.123368557
dired.c:958: stat_mtime=1358285832.923323363
dired.c:958: stat_mtime=1358285832.923323363
fileio.c:3573: stat_mtime=1339474634.000000000
fileio.c:3573: stat_mtime=1357144798.955079131
lread.c:1228: stat_mtime=1357144798.939079049
lread.c:1228: stat_mtime=1358185424.004185658
dired.c:958: stat_mtime=1358288328.739209633
dired.c:958: stat_mtime=1358288328.739209633
fileio.c:3573: stat_mtime=1358288328.739209633
fileio.c:3363: stat_mtime=1358288328.739209633
fileio.c:3363: stat_mtime=1358288344.827280766
a
fileio.c:5350: stat_mtime=1358288328.739209633
C-x C-s
fileio.c:5350: stat_mtime=1358288328.739209633
fileio.c:5350: stat_mtime=1358288328.739209633
fileio.c:5011: stat_mtime=1358288369.760392065
dired.c:958: stat_mtime=1358288369.760392065
b
fileio.c:5350: stat_mtime=1358288369.760392065
You're evidently getting different behavior, since you don't see
lread.c at all, for example. If I'm guessing right, I think the key
sequence in your transcript is here:
fileio.c:5359: stat_mtime=1358287604.023708900
fileio.c:5020: stat_mtime=1358287610.000000000
dired.c:958: stat_mtime=1358287613.927966600
fileio.c:5359: stat_mtime=1358287613.927966600
and that this corresponds to the last 5 lines of my transcript.
What happens if you apply the following patch as well?
Does it cause Emacs to output "fstat and lstat disagree!"?
=== modified file 'src/fileio.c'
--- src/fileio.c 2013-01-15 10:14:31 +0000
+++ src/fileio.c 2013-01-15 22:35:57 +0000
@@ -5017,6 +5017,20 @@ This calls `write-region-annotate-functi
if (emacs_close (desc) < 0)
ok = 0, save_errno = errno;
+ if (ok && visiting)
+ {
+ struct stat st1;
+ EMACS_TIME modtime1;
+ if (lstat (fn, &st1) != 0)
+ perror (fn);
+ else
+ {
+ modtime1 = get_stat_mtime (&st1);
+ if (! EMACS_TIME_EQ (modtime, modtime1))
+ fprintf (stderr, "fstat and lstat disagree!\n");
+ }
+ }
+
/* Discard the unwind protect for close_file_unwind. */
specpdl_ptr = specpdl + count1;
This bug report was last modified 11 years and 102 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.