GNU bug report logs - #75209
30.0.93; Emacs reader failed to read data in "/home/nlj/.cache/org-persist/gc-lock.eld"

Previous Next

Package: emacs;

Reported by: "N. Jackson" <njackson <at> posteo.net>

Date: Mon, 30 Dec 2024 18:49:01 UTC

Severity: normal

Found in version 30.0.93

Full log


View this message in rfc822 format

From: Ihor Radchenko <yantar92 <at> posteo.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 75209 <at> debbugs.gnu.org, njackson <at> posteo.net
Subject: bug#75209: 30.0.93; Emacs reader failed to read data in "/home/nlj/.cache/org-persist/gc-lock.eld"
Date: Sat, 15 Mar 2025 12:55:22 +0000
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:

> Could the code which writes the file do it in atomic fashion,
> i.e. write a temporary file, then rename the original file, then move
> the new to the original's name, then delete the original file?
>
> (On Posix filesystems moving a file to the original name is an atomic
> operation, but not on MS-Windows, which is why I suggest a slightly
> more complicated procedure.)

See the attached diff.
It should be applied on top of previous patches (or on top of the latest
Org main).

[test.diff (text/x-patch, inline)]
diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index a639699d93..202c5e645b 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -506,7 +506,12 @@ (defun org-persist--write-elisp-file
             (let ((pp-use-max-width nil)) ; Emacs bug#58687
               (pp data (current-buffer)))
           (prin1 data (current-buffer))))
-      (rename-file tmp-file file 'overwrite)
+      (let ((tmp-file-2 (make-temp-file "org-persist-")))
+        ;; Just renaming may still not be atomic on Windows, so we do
+        ;; a bit more complex juggle.
+        (rename-file file tmp-file-2)
+        (rename-file tmp-file file)
+        (delete-file tmp-file-2))
       (org-persist--display-time
        (- (float-time) start-time)
        "Writing to %S" file))))
[Message part 3 (text/plain, inline)]
-- 
Ihor Radchenko // yantar92,
Org mode maintainer,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

This bug report was last modified 2 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.