bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not exp


From: Dan Christensen
Subject: bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
Date: Sun, 4 Feb 2024 22:11:34 +0000
User-agent: Gnus/5.13 (Gnus v5.13)


I'm using Gnus with git emacs, and noticed that since commit 8525be6d
from Nov 29, 2023 (see below), Gnus isn't honouring my group parameter

  (display . [not expire])

No error is raised (the setting appears to be silently ignored), but
when using the debugger I do see an error involving byte-compilation.
Here's the top of the output, with the rest below.

Debugger entered--returning value: "Malformed function ‘#[0 
\"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
  format-message("Malformed function `%S'" #f(compiled-function () #<bytecode 
0x1980828eb86e>))
* #f(compiled-function (form env extend func forms) #<bytecode 
0x11fbce68545d80cf>)(((#f(compiled-function () #<bytecode 0x1980828eb86e>))) 
(nil) (nil) #f(compiled-function () #<bytecode 0x1980828eb86e>) nil)

An earlier call that could probably be used to reproduce this is:

* gnus-summary-display-make-predicate((not expire))

The full stack trace is below, as is the text of the commit.

On the ding list, someone else was able to reproduce the error.  For
them, an error was raised.  I also checked that (display . [expire])
*does* seem to work correctly, so I think it is a problem specifically
with "not".

I don't know if commit 8525be6d introduces a bug, or if it reveals an
existing bug in the way Gnus byte-compiles these predicates, or
something else.

Dan

The commit that is causing trouble is:

https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8525be6d5eca0c75008ec1dc799cae537156feea

commit 8525be6d5eca0c75008ec1dc799cae537156feea (HEAD, refs/bisect/bad)
Author: Mattias Engdegård <mattiase@acm.org>
Date:   Wed Nov 29 17:51:46 2023 +0100

    Move malformed-function warning from byte-opt to cconv (bug#67483)

    We shouldn't be warning inside the optimiser in the first place.

    * lisp/emacs-lisp/byte-opt.el (byte-optimize-form):
    Remove byte-compile-form-stack manipulation.
    (byte-optimize-form-code-walker): Move malformed function warning
    from here...
    * lisp/emacs-lisp/cconv.el: ...to here.

The backtrace:

Debugger entered--returning value: "Malformed function ‘#[0 
\"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
  format-message("Malformed function `%S'" #f(compiled-function () #<bytecode 
0x1980828eb86e>))
* #f(compiled-function (form env extend func forms) #<bytecode 
0x11fbce68545d80cf>)(((#f(compiled-function () #<bytecode 0x1980828eb86e>))) 
(nil) (nil) #f(compiled-function () #<bytecode 0x1980828eb86e>) nil)
* cconv-convert((#f(compiled-function () #<bytecode 0x1980828eb86e>)) nil nil)
* #f(compiled-function (form) #<bytecode 
0x17f2bb4623db6b39>)((#f(compiled-function () #<bytecode 0x1980828eb86e>)))
* mapcar(#f(compiled-function (form) #<bytecode 0x17f2bb4623db6b39>) 
((#f(compiled-function () #<bytecode 0x1980828eb86e>))))
* #f(compiled-function (form env extend func forms) #<bytecode 
0x11fbce68545d80cf>)(((not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))) (nil) (nil) not ((#f(compiled-function () #<bytecode 
0x1980828eb86e>))))
* cconv-convert((not (#f(compiled-function () #<bytecode 0x1980828eb86e>))) nil 
nil)
* #f(compiled-function (form) #<bytecode 0x428b1114056ca6a>)((not 
(#f(compiled-function () #<bytecode 0x1980828eb86e>))))
* mapcar(#f(compiled-function (form) #<bytecode 0x428b1114056ca6a>) ((not 
(#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* cconv--convert-funcbody(nil ((not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))) nil #'(lambda nil (not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))))
* cconv--convert-function(nil ((not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))) nil #'(lambda nil (not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))) nil)
* cconv-convert(#'(lambda nil (not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))) nil nil)
* cconv-closure-convert(#'(lambda nil (not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))) nil)
* byte-compile-preprocess((lambda nil (not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))))
* #f(compiled-function (form) #<bytecode 0x1493bc771fcd2c44>)((lambda nil (not 
(#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* byte-compile((lambda nil (not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))))
* gnus-byte-compile((lambda nil (not (#f(compiled-function () #<bytecode 
0x1980828eb86e>)))))
* gnus-category-make-function((not expire))
* gnus-get-predicate((not expire))
* gnus-summary-display-make-predicate((not expire))
* (cond ((not (= 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq display 
'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate 
(mapcar #'identity display))) ((numberp display) (setq select-articles 
(range-uncompress (cons (let ((tmp ...)) (if (> tmp 0) tmp 1)) (cdr (gethash 
group gnus-active-hashtb))))) nil) (t nil))
* (setq gnus-newsgroup-display (cond ((not (= 0 (or (car-safe read-all) 0))) 
#'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) 
(gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp 
display) (setq select-articles (range-uncompress (cons (let (...) (if ... tmp 
1)) (cdr (gethash group gnus-active-hashtb))))) nil) (t nil)))
  (let ((display (gnus-group-find-parameter group 'display))) (debug) (setq 
gnus-newsgroup-display (cond ((not (= 0 (or (car-safe read-all) 0))) 
#'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) 
(gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp 
display) (setq select-articles (range-uncompress (cons (let ... ...) (cdr 
...)))) nil) (t nil))))
  (let* ((entry (gethash group gnus-newsrc-hashtb)) 
(gnus-summary-ignore-duplicates (if (eq (car (gnus-find-method-for-group 
group)) 'nnvirtual) t gnus-summary-ignore-duplicates)) (info (nth 1 entry)) 
articles fetched-articles cached) (if (gnus-check-server (set 
(make-local-variable 'gnus-current-select-method) (gnus-find-method-for-group 
group))) nil (error "Couldn't open server")) (or (and entry (not (eq (car 
entry) t))) (gnus-activate-group group) (progn (if (derived-mode-p 
'gnus-summary-mode) (progn (gnus-kill-buffer (current-buffer)))) (error 
"Couldn't activate group %s: %s" group (gnus-status-message group)))) (if 
(gnus-request-group group t nil info) nil (if (derived-mode-p 
'gnus-summary-mode) (progn (gnus-kill-buffer (current-buffer)))) (error 
"Couldn't request group %s: %s" group (gnus-status-message group))) (if (and 
gnus-agent (gethash group gnus-active-hashtb)) (progn 
(gnus-agent-possibly-alter-active group (gethash group gnus-active-hashtb) 
info) (setq gnus-summary-use-undownloaded-faces (gnus-agent-find-parameter 
group 'agent-enable-undownloaded-faces)))) (progn (setq gnus-newsgroup-name 
group) (setq gnus-newsgroup-unselected nil) (setq gnus-newsgroup-unreads 
(gnus-list-of-unread-articles group))) (let ((display 
(gnus-group-find-parameter group 'display))) (debug) (setq 
gnus-newsgroup-display (cond ((not (= 0 (or ... 0))) #'gnus-not-ignore) ((eq 
display 'all) #'gnus-not-ignore) ((arrayp display) 
(gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp 
display) (setq select-articles (range-uncompress (cons ... ...))) nil) (t 
nil)))) (gnus-summary-setup-default-charset) (if (gnus-virtual-group-p group) 
(progn (setq cached gnus-newsgroup-cached))) (setq gnus-newsgroup-unreads 
(gnus-sorted-ndifference (gnus-sorted-ndifference gnus-newsgroup-unreads 
gnus-newsgroup-marked) gnus-newsgroup-dormant)) (setq 
gnus-newsgroup-processable nil) (gnus-update-read-articles group 
gnus-newsgroup-unreads t) (if info (progn (gnus-adjust-marked-articles info))) 
(if (setq articles select-articles) (setq gnus-newsgroup-unselected 
(gnus-sorted-difference gnus-newsgroup-unreads articles)) (setq articles 
(gnus-articles-to-read group read-all))) (cond ((null articles) 'quit) ((eq 
articles 0) nil) (t (setq gnus-newsgroup-dependencies (gnus-make-hashtable 
(length articles))) (if (gnus-buffer-live-p gnus-group-buffer) 
(gnus-set-global-variables) (set-default 'gnus-newsgroup-name 
gnus-newsgroup-name)) (setq gnus-newsgroup-headers (gnus-fetch-headers 
articles)) (if cached (progn (setq gnus-newsgroup-cached cached))) (if 
gnus-suppress-duplicates (progn (gnus-dup-suppress-articles))) (setq 
gnus-newsgroup-limit (copy-sequence articles)) (setq fetched-articles (mapcar 
#'mail-header-number gnus-newsgroup-headers)) (setq gnus-newsgroup-articles 
fetched-articles) (setq gnus-newsgroup-unreads (gnus-sorted-nintersection 
gnus-newsgroup-unreads fetched-articles)) (gnus-compute-unseen-list) 
(gnus-update-missing-marks (gnus-sorted-difference articles fetched-articles)) 
(if (and gnus-fetch-old-headers (eq gnus-headers-retrieved-by 'nov)) (progn (if 
(eq gnus-fetch-old-headers 'invisible) (gnus-build-all-threads) 
(gnus-build-old-threads)))) (if gnus-agent (progn 
(gnus-agent-get-undownloaded-list))) (gnus-summary-remove-list-identifiers) 
(setq gnus-newsgroup-auto-expire (and (gnus-group-auto-expirable-p group) (not 
(gnus-group-read-only-p group)))) (if (and gnus-single-article-buffer (equal 
gnus-article-buffer "*Article*")) nil (gnus-article-setup-buffer)) (if 
gnus-newsgroup-headers (progn (progn (setq gnus-newsgroup-begin (let* ... ...)) 
(setq gnus-newsgroup-end (let* ... ...))))) (or gnus-newsgroup-headers t))))
  gnus-select-newsgroup("nnimap+rocky:INBOX" 9 nil)
  gnus-summary-read-group-1("nnimap+rocky:INBOX" 9 t nil nil nil)
  gnus-summary-read-group("nnimap+rocky:INBOX" 9 t nil nil nil nil)
  gnus-group-read-group(9 t "nnimap+rocky:INBOX")
  jdc-gnus-group-select-inbox(9)
  funcall-interactively(jdc-gnus-group-select-inbox 9)
  call-interactively(jdc-gnus-group-select-inbox nil nil)
  command-execute(jdc-gnus-group-select-inbox)



In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.33, cairo version 1.16.0) of 2024-01-31 built on snowy
Repository revision: 8525be6d5eca0c75008ec1dc799cae537156feea
Repository branch: HEAD
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Ubuntu 22.04.3 LTS

Configured using:
 'configure --with-native-compilation=no CC=gcc-12'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_CA.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  xterm-mouse-mode: t
  gnus-undo-mode: t
  TeX-PDF-mode: t
  TeX-source-correlate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/elpa-src/ps-ccrypt-1.11/ps-ccrypt-pkg hides 
/usr/share/emacs/site-lisp/elpa/ps-ccrypt-1.11/ps-ccrypt-pkg
/usr/share/emacs/site-lisp/elpa-src/ps-ccrypt-1.11/ps-ccrypt hides 
/usr/share/emacs/site-lisp/elpa/ps-ccrypt-1.11/ps-ccrypt
/usr/share/emacs/site-lisp/elpa-src/ps-ccrypt-1.11/ps-ccrypt-autoloads hides 
/usr/share/emacs/site-lisp/elpa/ps-ccrypt-1.11/ps-ccrypt-autoloads
~/emacs/lisp/bib-cite hides /home/jdc/.emacs.d/elpa/auctex-13.3.0/bib-cite
/home/jdc/.emacs.d/elpa/transient-20240131.1612/transient hides 
/scratch/emacs-bug/lisp/transient
~/emacs/lisp/org-mouse hides /scratch/emacs-bug/lisp/org/org-mouse

Features:
(shadow sort gnus-cite flyspell ispell mail-extr emacsbug gnus-topic
utf-7 nnfolder network-stream nsm gnus-delay gnus-draft gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-cache gnus-msg nndraft
nnmh gnus-registry registry eieio-base diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs gnus-demon nntp gnus-summary-ext gnus-dired
nnmairix nnml mozmail server edit-server agda2 vc-git diff-mode
easy-mmode vc-dispatcher etags fileloop generator xref advice ob-python
python project compat treesit ob ob-tangle ol rx org-src ob-ref ob-lob
ob-table ob-exp ob-comint comint ansi-osc ansi-color ring ob-core
org-cycle org-fold org-fold-core ob-eval org-keys oc org-compat
org-version org-macs format-spec xt-mouse gnus-art mm-uu mml2015 mm-view
mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg
dom gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail
mail-source utf7 nnoo parse-time iso8601 gnus-spec gnus-int gnus-range
gnus-win gnus nnheader range wid-edit cc-styles cc-align cc-engine
cc-vars cc-defs ido tex dbus xml crm texmathp ultex-setup bufcomp light
message sendmail yank-media puny rfc822 mml mml-sec epa derived epg
rfc6068 epg-config gnus-util 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
ps-ccrypt allout dired-x dired dired-loaddefs finder-inf
auctex-autoloads tex-site company-autoloads f-autoloads
flycheck-autoloads forge-autoloads closql-autoloads emacsql-autoloads
ghub-autoloads magit-autoloads pcase git-commit-autoloads
magit-section-autoloads dash-autoloads markdown-mode-autoloads
proof-general-autoloads proof-site proof-autoloads transient-autoloads
treepy-autoloads with-editor-autoloads info compat-autoloads
yaml-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp
byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
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 nadvice seq
simple cl-generic indonesian philippine 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 emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process emacs)

Memory information:
((conses 16 629485 143566) (symbols 48 31395 3)
 (strings 32 271780 11064) (string-bytes 1 8919757) (vectors 16 48500)
 (vector-slots 8 1132628 48495) (floats 8 250 163)
 (intervals 56 508 0) (buffers 984 21))

reply via email to

[Prev in Thread] Current Thread [Next in Thread]