Subject: bug#31978: 26.1.50; "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular structure being printed"

From: Tom Tromey <[email-masked]>
Date: Tue, 26 Jun 2018 08:23:59 -0600

I am using Gnus in Emacs 26.

When I "s" in the *Group* buffer, I sometimes get this error:

eieio-override-prin1: Apparently circular structure being printed

I got it again today, so I enabled debug-on-error and got this stack
trace.

I can't always reproduce this, but once gnus gets into this state it
seems to be stuck.  Last time, IIRC, I worked around it by removing the
registry and killing Emacs.

Debugger entered--Lisp error: (error "Apparently circular structure being printed")
  prin1(#<hash-table eql 4/100 0x2229a85>)
  eieio-override-prin1(#<hash-table eql 4/100 0x14cafc5>)
  #f(compiled-function (this &optional comment) "Write object THIS out to the current stream.\nThis writes out the vector version of this object.  Complex and recursive\nobject are discouraged from being written.\n  If optional COMMENT is non-nil, include comments when outputting\nthis object." #<bytecode 0x56a7ed>)(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  apply(#f(compiled-function (this &optional comment) "Write object THIS out to the current stream.\nThis writes out the vector version of this object.  Complex and recursive\nobject are discouraged from being written.\n  If optional COMMENT is non-nil, include comments when outputting\nthis object." #<bytecode 0x56a7ed>) (#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT"))
  #f(compiled-function (&rest cnm-args) #<bytecode 0x2229a79>)(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  #f(compiled-function (cl--cnm this &optional comment) "Write persistent object THIS out to the current stream.\nOptional argument COMMENT is a header line comment." #<bytecode 0x151f105>)(#f(compiled-function (&rest cnm-args) #<bytecode 0x2229a79>) #<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  apply(#f(compiled-function (cl--cnm this &optional comment) "Write persistent object THIS out to the current stream.\nOptional argument COMMENT is a header line comment." #<bytecode 0x151f105>) #f(compiled-function (&rest cnm-args) #<bytecode 0x2229a79>) (#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT"))
  #f(compiled-function (&rest args) #<bytecode 0xf219c9>)(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  apply(#f(compiled-function (&rest args) #<bytecode 0xf219c9>) #<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  object-write(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  #f(compiled-function (this &optional file) "Save persistent object THIS to disk.\nOptional argument FILE overrides the file name specified in the object\ninstance." #<bytecode 0x151f179>)(#<registry-db registry-db> "~/.gnus.registry.eieio")
  apply(#f(compiled-function (this &optional file) "Save persistent object THIS to disk.\nOptional argument FILE overrides the file name specified in the object\ninstance." #<bytecode 0x151f179>) #<registry-db registry-db> "~/.gnus.registry.eieio")
  eieio-persistent-save(#<registry-db registry-db> "~/.gnus.registry.eieio")
  gnus-registry-save()
  run-hooks(gnus-save-newsrc-hook)
  apply(run-hooks gnus-save-newsrc-hook)
  gnus-run-hooks(gnus-save-newsrc-hook)
  gnus-save-newsrc-file(nil)
  gnus-group-save-newsrc(nil)
  funcall-interactively(gnus-group-save-newsrc nil)
  call-interactively(gnus-group-save-newsrc nil nil)
  command-execute(gnus-group-save-newsrc)

In GNU Emacs 26.1.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
 of 2018-06-25 built on pokyo
Repository revision: 826e8d1f12b014617c8899936730a740a09fefb1
Windowing system distributor 'Fedora Project', version 11.0.11906000
System Description:	Fedora release 28 (Twenty Eight)

Recent messages:
Expiring articles...done
Save the BBDB now? (y or n) y
 
Saving file /home/tromey/DotEmacs/.bbdb...
Wrote /home/tromey/DotEmacs/.bbdb
Saving Gnus registry (918 entries) to ~/.gnus.registry.eieio...
eieio-override-prin1: Apparently circular structure being printed
Quit
C-z C-g is undefined
s runs the command gnus-group-save-newsrc
Quit
Configured using:
 'configure --prefix=/home/tromey/Emacs/install --with-modules'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 MODULES THREADS LIBSYSTEMD LCMS2

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  diff-auto-refine-mode: t
  gnus-topic-mode: t
  gnus-undo-mode: t
  shell-dirtrack-mode: t
  which-function-mode: t
  erc-services-mode: t
  erc-networks-mode: t
  savehist-mode: t
  tooltip-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
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/26.1.50/lisp/play/bubbles

Features:
(shadow add-log emacsbug url-http url url-proxy url-privacy url-history
url-auth url-cookie url-domsuf url-gw url-expand url-methods mailalias
bbdb-sc supercite regi mail-hist nnir flow-fill bbdb-gui bbdb-hooks
bbdb-rmail rmailsum vc-mtn vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs sort gnus-cite smiley shr-color shr svg dom
browse-url mm-archive gnus-async gnus-bcklg qp gnus-ml disp-table
misearch multi-isearch gnus-topic nndraft nnmh nnfolder utf-7 bbdb-gnus
bbdb-snarf mail-extr bbdb-com network-stream nsm starttls gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache
gnus-registry registry eieio-base gnus-art mm-uu mml2015 mm-view
mml-smime smime dig mailcap gnus-sum gnus-group gnus-undo smtpmail
sendmail gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7
netrc nnoo gnus-spec gnus-int gnus-range message rmc puny rfc822 mml
mml-sec epa derived epg mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr
elec-pair flyspell ispell diminish appt diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs tramp tramp-compat tramp-loaddefs
trampver ucs-normalize shell pcomplete parse-time which-func imenu
autorevert filenotify desktop frameset cus-start cus-load git-link
url-util erc-track erc-notify erc-desktop-notifications erc-match
erc-services erc-networks notifications dbus xml erc-hl-nicks easy-mmode
color erc-button erc-fill erc-stamp wid-edit erc-goodies erc erc-backend
erc-compat format-spec thingatpt pp dired-aux dired-x dired
dired-loaddefs warnings advice vc-dir ewoc vc vc-dispatcher flycheck
cl-extra json map find-func help-mode rx subr-x dash cc-styles cc-align
cc-engine cc-vars cc-defs bbdb cl timezone ange-ftp comint ansi-color
ring server savehist finder-inf bbdb-autoloads lisppaste-autoloads
pydoc-info-autoloads info-look info package easymenu epg-config
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib time-date mule-util 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 elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 1316874 39038)
 (symbols 48 104412 2)
 (miscs 40 24587 955)
 (strings 32 344935 31498)
 (string-bytes 1 8232441)
 (vectors 16 122264)
 (vector-slots 8 2433340 238614)
 (floats 8 462 909)
 (intervals 56 1649 596)
 (buffers 992 35))