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: Eli Zaretskii
Subject: bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
Date: Mon, 05 Feb 2024 14:50:01 +0200

> From: Dan Christensen <jdc@uwo.ca>
> Date: Sun, 4 Feb 2024 22:11:34 +0000
> 
> 
> 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)

Adding Mattias.





reply via email to

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