unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#50246: 28.0.50; persist.el will incorrectly serialize a symbol's value... sometimes
@ 2021-08-29  4:01 Felipe Lema
  2021-08-29 19:39 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 2+ messages in thread
From: Felipe Lema @ 2021-08-29  4:01 UTC (permalink / raw)
  To: 50246

[-- Attachment #1: Type: text/plain, Size: 25669 bytes --]

Hello, there

I've been using persist.el for quite a while (through frecentf.el from MELPA) and it seems that sometimes persist will truncate hash tables (as described in `print-length` 's documentation, using ellipsis).
This ends up in Emacs erroring out at startup due to the serialization being un-hash-table-ish (due to the (quote ...) ).

Unfortunately, I haven't been able to reproduce this problem consistently.

However, I do have a fix for this problem and I've attached it as a patch. It's basically ensuring that printing / serializing a symbol uses the safest configuration possible (no limit for elements, no problems with special characters such as '\0', etc).

The `let` bindings were developed by experience and I'm already using this "safe serialization" config in another package I maintain ( session-async.el ).

Thanks y'all for maintaining Emacs. It's a very useful tool and I use it every day at work.

Felipe

In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, cairo version 1.15.10)
 of 2021-08-28 built on felipe-ThinkPad-X200
Repository revision: 692da8c6a82f8de376a2eec9304773b3e85205f3
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Trisquel GNU/Linux Etiona (9.0)

Configured using:
 'configure --without-native-compilation --with-x-toolkit=no
 --without-xpm --without-gnutls'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GSETTINGS HARFBUZZ JPEG LCMS2 LIBXML2
MODULES NOTIFY INOTIFY OLDXMENU PDUMPER PNG SECCOMP SOUND THREADS TIFF
X11 XDBE XIM ZLIB

Important settings:
  value of $LC_ALL: 
  value of $LC_MESSAGES: en_DK.UTF-8
  value of $LC_MONETARY: en_DK.UTF-8
  value of $LC_NUMERIC: en_DK.UTF-8
  value of $LC_TIME: en_DK.UTF-8
  value of $LANG: en_DK.UTF-8
  locale-coding-system: utf-8-unix

Major mode: DOOM v3.0.0-alpha

Minor modes in effect:
  gcmh-mode: t
  global-hl-line-mode: t
  hl-line-mode: t
  winner-mode: t
  show-paren-mode: t
  smartparens-global-mode: t
  ws-butler-global-mode: t
  global-undo-fu-session-mode: t
  undo-fu-session-mode: t
  undo-fu-mode: t
  global-flycheck-mode: t
  which-key-mode: t
  better-jumper-mode: t
  better-jumper-local-mode: t
  global-company-mode: t
  company-mode: t
  vertico-mode: t
  marginalia-mode: t
  evil-goggles-mode: t
  evil-escape-mode: t
  evil-snipe-override-mode: t
  evil-snipe-mode: t
  evil-snipe-override-local-mode: t
  evil-snipe-local-mode: t
  global-git-commit-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  savehist-mode: t
  solaire-global-mode: t
  solaire-mode: t
  doom-modeline-mode: t
  persp-mode: t
  shell-dirtrack-mode: t
  evil-mode: t
  evil-local-mode: t
  windmove-mode: t
  +popup-mode: t
  general-override-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org-contrib/ox-koma-letter hides /home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-koma-letter
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-lint hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package-lint
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-jump hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package-jump
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-ensure hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package-ensure
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-diminish hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package-diminish
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-delight hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package-delight
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-core hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package-core
/home/felipe/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-bind-key hides /home/felipe/.emacs.d/.local/straight/repos/use-package/use-package-bind-key
/home/felipe/.emacs.d/.local/straight/build-28.0.50/bind-key/bind-key hides /home/felipe/.emacs.d/.local/straight/repos/use-package/bind-key
/home/felipe/.emacs.d/.local/straight/build-28.0.50/straight/straight hides /home/felipe/.emacs.d/.local/straight/repos/straight.el/straight
/home/felipe/.emacs.d/.local/straight/build-28.0.50/straight/straight-x hides /home/felipe/.emacs.d/.local/straight/repos/straight.el/straight-x
/home/felipe/.emacs.d/.local/straight/repos/straight.el/indent hides /usr/local/share/emacs/28.0.50/lisp/indent
/home/felipe/.emacs.d/.local/straight/build-28.0.50/transient/transient hides /usr/local/share/emacs/28.0.50/lisp/transient
/home/felipe/.emacs.d/.local/straight/build-28.0.50/project/project hides /usr/local/share/emacs/28.0.50/lisp/progmodes/project
/home/felipe/.emacs.d/.local/straight/build-28.0.50/xref/xref hides /usr/local/share/emacs/28.0.50/lisp/progmodes/xref
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-ruby hides /usr/local/share/emacs/28.0.50/lisp/org/ob-ruby
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-info hides /usr/local/share/emacs/28.0.50/lisp/org/ol-info
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-clojure hides /usr/local/share/emacs/28.0.50/lisp/org/ob-clojure
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-emacs-lisp hides /usr/local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-css hides /usr/local/share/emacs/28.0.50/lisp/org/ob-css
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-eshell hides /usr/local/share/emacs/28.0.50/lisp/org/ob-eshell
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-irc hides /usr/local/share/emacs/28.0.50/lisp/org/ol-irc
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-texinfo hides /usr/local/share/emacs/28.0.50/lisp/org/ox-texinfo
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-datetree hides /usr/local/share/emacs/28.0.50/lisp/org/org-datetree
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-ctags hides /usr/local/share/emacs/28.0.50/lisp/org/org-ctags
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-indent hides /usr/local/share/emacs/28.0.50/lisp/org/org-indent
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-table hides /usr/local/share/emacs/28.0.50/lisp/org/org-table
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-perl hides /usr/local/share/emacs/28.0.50/lisp/org/ob-perl
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-plantuml hides /usr/local/share/emacs/28.0.50/lisp/org/ob-plantuml
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-protocol hides /usr/local/share/emacs/28.0.50/lisp/org/org-protocol
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-agenda hides /usr/local/share/emacs/28.0.50/lisp/org/org-agenda
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-org hides /usr/local/share/emacs/28.0.50/lisp/org/ox-org
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-capture hides /usr/local/share/emacs/28.0.50/lisp/org/org-capture
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-md hides /usr/local/share/emacs/28.0.50/lisp/org/ox-md
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-ocaml hides /usr/local/share/emacs/28.0.50/lisp/org/ob-ocaml
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-org hides /usr/local/share/emacs/28.0.50/lisp/org/ob-org
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-core hides /usr/local/share/emacs/28.0.50/lisp/org/ob-core
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-goto hides /usr/local/share/emacs/28.0.50/lisp/org/org-goto
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-J hides /usr/local/share/emacs/28.0.50/lisp/org/ob-J
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-odt hides /usr/local/share/emacs/28.0.50/lisp/org/ox-odt
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-bbdb hides /usr/local/share/emacs/28.0.50/lisp/org/ol-bbdb
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-groovy hides /usr/local/share/emacs/28.0.50/lisp/org/ob-groovy
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-gnuplot hides /usr/local/share/emacs/28.0.50/lisp/org/ob-gnuplot
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-inlinetask hides /usr/local/share/emacs/28.0.50/lisp/org/org-inlinetask
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-picolisp hides /usr/local/share/emacs/28.0.50/lisp/org/ob-picolisp
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-src hides /usr/local/share/emacs/28.0.50/lisp/org/org-src
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-forth hides /usr/local/share/emacs/28.0.50/lisp/org/ob-forth
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-footnote hides /usr/local/share/emacs/28.0.50/lisp/org/org-footnote
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-bibtex hides /usr/local/share/emacs/28.0.50/lisp/org/ol-bibtex
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-octave hides /usr/local/share/emacs/28.0.50/lisp/org/ob-octave
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-element hides /usr/local/share/emacs/28.0.50/lisp/org/org-element
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-gnus hides /usr/local/share/emacs/28.0.50/lisp/org/ol-gnus
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-C hides /usr/local/share/emacs/28.0.50/lisp/org/ob-C
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-ebnf hides /usr/local/share/emacs/28.0.50/lisp/org/ob-ebnf
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-ascii hides /usr/local/share/emacs/28.0.50/lisp/org/ox-ascii
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-calc hides /usr/local/share/emacs/28.0.50/lisp/org/ob-calc
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-tangle hides /usr/local/share/emacs/28.0.50/lisp/org/ob-tangle
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-lilypond hides /usr/local/share/emacs/28.0.50/lisp/org/ob-lilypond
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-mobile hides /usr/local/share/emacs/28.0.50/lisp/org/org-mobile
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-rmail hides /usr/local/share/emacs/28.0.50/lisp/org/ol-rmail
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-macro hides /usr/local/share/emacs/28.0.50/lisp/org/org-macro
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-hledger hides /usr/local/share/emacs/28.0.50/lisp/org/ob-hledger
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-sed hides /usr/local/share/emacs/28.0.50/lisp/org/ob-sed
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-attach hides /usr/local/share/emacs/28.0.50/lisp/org/org-attach
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-sqlite hides /usr/local/share/emacs/28.0.50/lisp/org/ob-sqlite
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-sass hides /usr/local/share/emacs/28.0.50/lisp/org/ob-sass
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-scheme hides /usr/local/share/emacs/28.0.50/lisp/org/ob-scheme
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-ref hides /usr/local/share/emacs/28.0.50/lisp/org/ob-ref
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-exp hides /usr/local/share/emacs/28.0.50/lisp/org/ob-exp
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-lisp hides /usr/local/share/emacs/28.0.50/lisp/org/ob-lisp
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-vala hides /usr/local/share/emacs/28.0.50/lisp/org/ob-vala
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-fortran hides /usr/local/share/emacs/28.0.50/lisp/org/ob-fortran
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-mhe hides /usr/local/share/emacs/28.0.50/lisp/org/ol-mhe
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-man hides /usr/local/share/emacs/28.0.50/lisp/org/ox-man
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-coq hides /usr/local/share/emacs/28.0.50/lisp/org/ob-coq
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-awk hides /usr/local/share/emacs/28.0.50/lisp/org/ob-awk
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob hides /usr/local/share/emacs/28.0.50/lisp/org/ob
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-shen hides /usr/local/share/emacs/28.0.50/lisp/org/ob-shen
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-eshell hides /usr/local/share/emacs/28.0.50/lisp/org/ol-eshell
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-matlab hides /usr/local/share/emacs/28.0.50/lisp/org/ob-matlab
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-R hides /usr/local/share/emacs/28.0.50/lisp/org/ob-R
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-macs hides /usr/local/share/emacs/28.0.50/lisp/org/org-macs
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-timer hides /usr/local/share/emacs/28.0.50/lisp/org/org-timer
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-clock hides /usr/local/share/emacs/28.0.50/lisp/org/org-clock
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-haskell hides /usr/local/share/emacs/28.0.50/lisp/org/ob-haskell
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-crypt hides /usr/local/share/emacs/28.0.50/lisp/org/org-crypt
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-lua hides /usr/local/share/emacs/28.0.50/lisp/org/ob-lua
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-abc hides /usr/local/share/emacs/28.0.50/lisp/org/ob-abc
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-refile hides /usr/local/share/emacs/28.0.50/lisp/org/org-refile
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-id hides /usr/local/share/emacs/28.0.50/lisp/org/org-id
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-dot hides /usr/local/share/emacs/28.0.50/lisp/org/ob-dot
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-num hides /usr/local/share/emacs/28.0.50/lisp/org/org-num
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox hides /usr/local/share/emacs/28.0.50/lisp/org/ox
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-publish hides /usr/local/share/emacs/28.0.50/lisp/org/ox-publish
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-makefile hides /usr/local/share/emacs/28.0.50/lisp/org/ob-makefile
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-mscgen hides /usr/local/share/emacs/28.0.50/lisp/org/ob-mscgen
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-lint hides /usr/local/share/emacs/28.0.50/lisp/org/org-lint
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-attach-git hides /usr/local/share/emacs/28.0.50/lisp/org/org-attach-git
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-screen hides /usr/local/share/emacs/28.0.50/lisp/org/ob-screen
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-processing hides /usr/local/share/emacs/28.0.50/lisp/org/ob-processing
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-list hides /usr/local/share/emacs/28.0.50/lisp/org/org-list
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-tempo hides /usr/local/share/emacs/28.0.50/lisp/org/org-tempo
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-js hides /usr/local/share/emacs/28.0.50/lisp/org/ob-js
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol hides /usr/local/share/emacs/28.0.50/lisp/org/ol
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-sql hides /usr/local/share/emacs/28.0.50/lisp/org/ob-sql
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org hides /usr/local/share/emacs/28.0.50/lisp/org/org
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-maxima hides /usr/local/share/emacs/28.0.50/lisp/org/ob-maxima
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-docview hides /usr/local/share/emacs/28.0.50/lisp/org/ol-docview
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-table hides /usr/local/share/emacs/28.0.50/lisp/org/ob-table
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-beamer hides /usr/local/share/emacs/28.0.50/lisp/org/ox-beamer
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-loaddefs hides /usr/local/share/emacs/28.0.50/lisp/org/org-loaddefs
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-plot hides /usr/local/share/emacs/28.0.50/lisp/org/org-plot
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-shell hides /usr/local/share/emacs/28.0.50/lisp/org/ob-shell
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-python hides /usr/local/share/emacs/28.0.50/lisp/org/ob-python
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-version hides /usr/local/share/emacs/28.0.50/lisp/org/org-version
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-html hides /usr/local/share/emacs/28.0.50/lisp/org/ox-html
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-faces hides /usr/local/share/emacs/28.0.50/lisp/org/org-faces
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-habit hides /usr/local/share/emacs/28.0.50/lisp/org/org-habit
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-archive hides /usr/local/share/emacs/28.0.50/lisp/org/org-archive
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-comint hides /usr/local/share/emacs/28.0.50/lisp/org/ob-comint
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-eww hides /usr/local/share/emacs/28.0.50/lisp/org/ol-eww
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-pcomplete hides /usr/local/share/emacs/28.0.50/lisp/org/org-pcomplete
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-latex hides /usr/local/share/emacs/28.0.50/lisp/org/ox-latex
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-stan hides /usr/local/share/emacs/28.0.50/lisp/org/ob-stan
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-ditaa hides /usr/local/share/emacs/28.0.50/lisp/org/ob-ditaa
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-colview hides /usr/local/share/emacs/28.0.50/lisp/org/org-colview
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-latex hides /usr/local/share/emacs/28.0.50/lisp/org/ob-latex
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-duration hides /usr/local/share/emacs/28.0.50/lisp/org/org-duration
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-eval hides /usr/local/share/emacs/28.0.50/lisp/org/ob-eval
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ol-w3m hides /usr/local/share/emacs/28.0.50/lisp/org/ol-w3m
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-io hides /usr/local/share/emacs/28.0.50/lisp/org/ob-io
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-asymptote hides /usr/local/share/emacs/28.0.50/lisp/org/ob-asymptote
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-ledger hides /usr/local/share/emacs/28.0.50/lisp/org/ob-ledger
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-keys hides /usr/local/share/emacs/28.0.50/lisp/org/org-keys
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-compat hides /usr/local/share/emacs/28.0.50/lisp/org/org-compat
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-java hides /usr/local/share/emacs/28.0.50/lisp/org/ob-java
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-entities hides /usr/local/share/emacs/28.0.50/lisp/org/org-entities
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-install hides /usr/local/share/emacs/28.0.50/lisp/org/org-install
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ox-icalendar hides /usr/local/share/emacs/28.0.50/lisp/org/ox-icalendar
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/ob-lob hides /usr/local/share/emacs/28.0.50/lisp/org/ob-lob
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-feed hides /usr/local/share/emacs/28.0.50/lisp/org/org-feed
/home/felipe/.emacs.d/.local/straight/build-28.0.50/org/org-mouse hides /usr/local/share/emacs/28.0.50/lisp/org/org-mouse

Features:
(shadow sort disp-table whitespace flycheck-popup-tip
evil-collection-popup popup vi-tilde-fringe display-line-numbers gcmh
hl-line winner paren smartparens-config smartparens-text smartparens
ws-butler undo-fu-session undo-fu flycheck-package package-lint
evil-collection-finder finder finder-inf lisp-mnt
evil-collection-flycheck flycheck mail-extr emacsbug sendmail mule-util
vertico-repeat cursor-sensor evil-collection-which-key which-key
better-jumper company-capf company vertico orderless marginalia
evil-goggles pulse color evil-easymotion avy evil-escape evil-snipe
org-capture org-agenda org-refile evil-collection-magit-todos
magit-todos pcre2el rxt re-builder hl-todo async evil-collection-grep
grep evil-collection-compile compile orgit smartparens-org org-yt
org-element avl-tree generator org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list
org-faces org-entities noutline outline org-version ob-emacs-lisp
ob-core ob-eval org-table ol org-keys oc org-cite org-compat org-macs
org-loaddefs find-func evil-collection-calendar cal-menu calendar
cal-loaddefs github-review ghub-graphql treepy gsexp ghub url-http
url-gw nsm url-auth gnutls deferred a evil-collection-magit
magit-autoloads magit-submodule magit-obsolete magit-popup magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log which-func evil-collection-imenu imenu magit-diff
smerge-mode diff evil-collection-diff-mode diff-mode magit-core
magit-autorevert magit-margin magit-transient magit-process magit-mode
core-packages package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util mailcap
url-handlers url-parse url-vars git-commit transient format-spec
evil-collection-log-edit log-edit message rmc puny evil-collection-dired
dired dired-loaddefs rfc822 mml mml-sec evil-collection-epa epa epg
epg-config gnus-util rmail rmail-loaddefs auth-source password-cache
json map text-property-search time-date mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log magit-git
magit-section magit-utils crm eieio eieio-core eieio-loaddefs
with-editor doom-snippets doom-snippets-lib yasnippet
evil-collection-elisp-mode evil-collection-custom cus-edit cus-start
cus-load evil-collection-comint evil-collection annalist elisp-mode
savehist recentf tree-widget wid-edit server autorevert filenotify
dtrt-indent doom-themes-ext-org solaire-mode face-remap doom-one-theme
doom-themes doom-themes-base doom-modeline doom-modeline-segments
doom-modeline-env doom-modeline-core shrink-path rx f s all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons dash persp-mode let-alist
evil evil-integration evil-maps evil-commands reveal flyspell ispell
evil-jumps evil-command-window evil-types evil-search shell pcomplete
comint ansi-color evil-macros evil-repeat evil-states evil-core advice
evil-common windmove calc calc-loaddefs calc-macs thingatpt rect
evil-digraphs evil-vars ring derived edmacro kmacro core-editor
core-projects core-ui easy-mmode core-keybinds pp general cl-extra
help-mode seq byte-opt cl-seq use-package-core bytecomp byte-compile
cconv core-modules core core-lib pcase cl-macs gv cl-loaddefs cl-lib
subr-x iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo x multi-tty make-network-process emacs)

Memory information:
((conses 16 587619 800008)
 (symbols 48 57496 132)
 (strings 32 143994 58963)
 (string-bytes 1 4531494)
 (vectors 16 62829)
 (vector-slots 8 946917 532203)
 (floats 8 953 1827)
 (intervals 56 882 467)
 (buffers 992 11))

[-- Attachment #2: persist-fix.patch --]
[-- Type: text/x-patch, Size: 753 bytes --]

diff --git a/persist.el b/persist.el
index 091e428..0bd3845 100644
--- a/persist.el
+++ b/persist.el
@@ -139,8 +139,15 @@ variables persist automatically when Emacs exits."
             (persist--file-location symbol))))
       (unless (file-exists-p dir-loc)
         (mkdir dir-loc)))
+
     (with-temp-buffer
-      (print (symbol-value symbol) (current-buffer))
+      (let (print-level
+            print-length
+            print-quoted
+            (print-escape-control-characters t)
+            (print-escape-nonascii t)
+            (print-circle t))
+        (print (symbol-value symbol) (current-buffer)))
       (write-region (point-min) (point-max)
                     (persist--file-location symbol)
                     nil 'quiet))))

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* bug#50246: 28.0.50; persist.el will incorrectly serialize a symbol's value... sometimes
  2021-08-29  4:01 bug#50246: 28.0.50; persist.el will incorrectly serialize a symbol's value... sometimes Felipe Lema
@ 2021-08-29 19:39 ` Lars Ingebrigtsen
  0 siblings, 0 replies; 2+ messages in thread
From: Lars Ingebrigtsen @ 2021-08-29 19:39 UTC (permalink / raw)
  To: Felipe Lema; +Cc: 50246, Phillip Lord

Felipe Lema <felipelema@mortemale.org> writes:

> The `let` bindings were developed by experience and I'm already using
> this "safe serialization" config in another package I maintain (
> session-async.el ).

Thanks; looks good to me, so I've now applied it to the persist package
(but haven't bumped the version number in case Phillip has other changes
planned).

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-08-29 19:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-29  4:01 bug#50246: 28.0.50; persist.el will incorrectly serialize a symbol's value... sometimes Felipe Lema
2021-08-29 19:39 ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).