From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs 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 Message-ID: <86r0hr13eu.fsf@gnu.org> References: <87ttmnop61.fsf@uwo.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28861"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 68931@debbugs.gnu.org To: Dan Christensen , Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Feb 05 13:51:11 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rWyRK-0007G6-UW for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 05 Feb 2024 13:51:11 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rWyR4-0005lT-N1; Mon, 05 Feb 2024 07:50:54 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rWyR0-0005lC-Ie for bug-gnu-emacs@gnu.org; Mon, 05 Feb 2024 07:50:50 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rWyQz-0000mb-RP for bug-gnu-emacs@gnu.org; Mon, 05 Feb 2024 07:50:50 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rWyRC-0000qB-Bx for bug-gnu-emacs@gnu.org; Mon, 05 Feb 2024 07:51:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 05 Feb 2024 12:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 68931 X-GNU-PR-Package: emacs Original-Received: via spool by 68931-submit@debbugs.gnu.org id=B68931.17071374513201 (code B ref 68931); Mon, 05 Feb 2024 12:51:02 +0000 Original-Received: (at 68931) by debbugs.gnu.org; 5 Feb 2024 12:50:51 +0000 Original-Received: from localhost ([127.0.0.1]:50738 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rWyR0-0000pZ-Fv for submit@debbugs.gnu.org; Mon, 05 Feb 2024 07:50:51 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51938) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rWyQy-0000pK-S9 for 68931@debbugs.gnu.org; Mon, 05 Feb 2024 07:50:49 -0500 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rWyQg-0000g9-2B; Mon, 05 Feb 2024 07:50:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:References:Subject:In-Reply-To:To:From: Date; bh=ZUBdpOQT+GCW3DVVRk4vPBs03B4f8FDuDf9JTvnrh3g=; b=H75pI0YyupEKDgO9FPvY Ys7+bIpl5tUFO92BH69JUAJ4uFySxRFhXu6V1lcUEptg6b7OwpAbcU9QAMGqh+1z7dPbEnWmI4Fc0 IkkuytRhdY43CQ9peOHWfQUFG8JZLTnt0uKwWWkrmv051v0UDPxf4Basu2fTwxy2uhXOYNfei38kq zI72/R56QHh/x/RghhV6XFY2P5ZM8lQqLH09yreYcor46ZvVarA5oRYKZFcTFW5DLEjOE8VsjUBxa 2BTKSkatkDqeFzKBTKrrlknh1XZB/8+ZvU5uL8n3UmpEH7qjQTGxcxphlLv/SaTKmHhkTb5R3t38m ct0djQAT9eGBzg==; In-Reply-To: <87ttmnop61.fsf@uwo.ca> (message from Dan Christensen on Sun, 4 Feb 2024 22:11:34 +0000) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:279445 Archived-At: > From: Dan Christensen > Date: Sun, 4 Feb 2024 22:11:34 +0000 >=20 >=20 > 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 >=20 > (display . [not expire]) >=20 > 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. >=20 > Debugger entered--returning value: "Malformed function =E2=80=98#[0 \"\\3= 01\\300!\\207\" [expire gnus-article-marked-p] 2]=E2=80=99" > format-message("Malformed function `%S'" #f(compiled-function () #)) > * #f(compiled-function (form env extend func forms) #)(((#f(compiled-function () #))) (nil) (n= il) #f(compiled-function () #) nil) >=20 > An earlier call that could probably be used to reproduce this is: >=20 > * gnus-summary-display-make-predicate((not expire)) >=20 > The full stack trace is below, as is the text of the commit. >=20 > 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". >=20 > 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. >=20 > Dan >=20 > The commit that is causing trouble is: >=20 > https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3D8525be6d5eca0c75= 008ec1dc799cae537156feea >=20 > commit 8525be6d5eca0c75008ec1dc799cae537156feea (HEAD, refs/bisect/bad) > Author: Mattias Engdeg=C3=A5rd > Date: Wed Nov 29 17:51:46 2023 +0100 >=20 > Move malformed-function warning from byte-opt to cconv (bug#67483) >=20 > We shouldn't be warning inside the optimiser in the first place. >=20 > * 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. >=20 > The backtrace: >=20 > Debugger entered--returning value: "Malformed function =E2=80=98#[0 \"\\3= 01\\300!\\207\" [expire gnus-article-marked-p] 2]=E2=80=99" > format-message("Malformed function `%S'" #f(compiled-function () #)) > * #f(compiled-function (form env extend func forms) #)(((#f(compiled-function () #))) (nil) (n= il) #f(compiled-function () #) nil) > * cconv-convert((#f(compiled-function () #)) nil= nil) > * #f(compiled-function (form) #)((#f(compile= d-function () #))) > * mapcar(#f(compiled-function (form) #) ((#f= (compiled-function () #)))) > * #f(compiled-function (form env extend func forms) #)(((not (#f(compiled-function () #)))) (n= il) (nil) not ((#f(compiled-function () #)))) > * cconv-convert((not (#f(compiled-function () #)= )) nil nil) > * #f(compiled-function (form) #)((not (#f(com= piled-function () #)))) > * mapcar(#f(compiled-function (form) #) ((not= (#f(compiled-function () #))))) > * cconv--convert-funcbody(nil ((not (#f(compiled-function () #)))) nil #'(lambda nil (not (#f(compiled-function () #))))) > * cconv--convert-function(nil ((not (#f(compiled-function () #)))) nil #'(lambda nil (not (#f(compiled-function () #)))) nil) > * cconv-convert(#'(lambda nil (not (#f(compiled-function () #)))) nil nil) > * cconv-closure-convert(#'(lambda nil (not (#f(compiled-function () #)))) nil) > * byte-compile-preprocess((lambda nil (not (#f(compiled-function () #))))) > * #f(compiled-function (form) #)((lambda nil= (not (#f(compiled-function () #))))) > * byte-compile((lambda nil (not (#f(compiled-function () #))))) > * gnus-byte-compile((lambda nil (not (#f(compiled-function () #))))) > * gnus-category-make-function((not expire)) > * gnus-get-predicate((not expire)) > * gnus-summary-display-make-predicate((not expire)) > * (cond ((not (=3D 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq= display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-m= ake-predicate (mapcar #'identity display))) ((numberp display) (setq select= -articles (range-uncompress (cons (let ((tmp ...)) (if (> tmp 0) tmp 1)) (c= dr (gethash group gnus-active-hashtb))))) nil) (t nil)) > * (setq gnus-newsgroup-display (cond ((not (=3D 0 (or (car-safe read-all)= 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp dis= play) (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) (se= tq gnus-newsgroup-display (cond ((not (=3D 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 g= nus-summary-ignore-duplicates)) (info (nth 1 entry)) articles fetched-artic= les cached) (if (gnus-check-server (set (make-local-variable 'gnus-current-= select-method) (gnus-find-method-for-group group))) nil (error "Couldn't op= en server")) (or (and entry (not (eq (car entry) t))) (gnus-activate-group = group) (progn (if (derived-mode-p 'gnus-summary-mode) (progn (gnus-kill-buf= fer (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-buff= er)))) (error "Couldn't request group %s: %s" group (gnus-status-message gr= oup))) (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 grou= p) (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 (=3D 0 (= or ... 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arra= yp 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-new= sgroup-unreads (gnus-sorted-ndifference (gnus-sorted-ndifference gnus-newsg= roup-unreads gnus-newsgroup-marked) gnus-newsgroup-dormant)) (setq gnus-new= sgroup-processable nil) (gnus-update-read-articles group gnus-newsgroup-unr= eads t) (if info (progn (gnus-adjust-marked-articles info))) (if (setq arti= cles select-articles) (setq gnus-newsgroup-unselected (gnus-sorted-differen= ce gnus-newsgroup-unreads articles)) (setq articles (gnus-articles-to-read = group read-all))) (cond ((null articles) 'quit) ((eq articles 0) nil) (t (s= etq gnus-newsgroup-dependencies (gnus-make-hashtable (length articles))) (i= f (gnus-buffer-live-p gnus-group-buffer) (gnus-set-global-variables) (set-d= efault 'gnus-newsgroup-name gnus-newsgroup-name)) (setq gnus-newsgroup-head= ers (gnus-fetch-headers articles)) (if cached (progn (setq gnus-newsgroup-c= ached cached))) (if gnus-suppress-duplicates (progn (gnus-dup-suppress-arti= cles))) (setq gnus-newsgroup-limit (copy-sequence articles)) (setq fetched-= articles (mapcar #'mail-header-number gnus-newsgroup-headers)) (setq gnus-n= ewsgroup-articles fetched-articles) (setq gnus-newsgroup-unreads (gnus-sort= ed-nintersection gnus-newsgroup-unreads fetched-articles)) (gnus-compute-un= seen-list) (gnus-update-missing-marks (gnus-sorted-difference articles fetc= hed-articles)) (if (and gnus-fetch-old-headers (eq gnus-headers-retrieved-b= y '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-news= group-auto-expire (and (gnus-group-auto-expirable-p group) (not (gnus-group= -read-only-p group)))) (if (and gnus-single-article-buffer (equal gnus-arti= cle-buffer "*Article*")) nil (gnus-article-setup-buffer)) (if gnus-newsgrou= p-headers (progn (progn (setq gnus-newsgroup-begin (let* ... ...)) (setq gn= us-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.