From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/58572 Path: main.gmane.org!not-for-mail From: Ralf Angeli Newsgroups: gmane.emacs.gnus.general Subject: Re: Gnus losing information about what has been read Date: Fri, 24 Sep 2004 18:30:08 +0200 Sender: ding-owner@lists.math.uh.edu Message-ID: References: Reply-To: angeli@iwi.uni-sb.de NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1096043335 2937 80.91.229.6 (24 Sep 2004 16:28:55 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 24 Sep 2004 16:28:55 +0000 (UTC) Original-X-From: ding-owner+M7110=ding+2Daccount=gmane.org@lists.math.uh.edu Fri Sep 24 18:28:31 2004 Return-path: Original-Received: from malifon.math.uh.edu ([129.7.128.13] ident=mail) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1CAsvu-0003ph-00 for ; Fri, 24 Sep 2004 18:28:30 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu ident=lists) by malifon.math.uh.edu with smtp (Exim 3.20 #1) id 1CAsvt-00080b-01 for ding-account@gmane.org; Fri, 24 Sep 2004 11:28:29 -0500 Original-Received: from util2.math.uh.edu ([129.7.128.23]) by malifon.math.uh.edu with esmtp (Exim 3.20 #1) id 1CAsvk-00080S-00 for ding@lists.math.uh.edu; Fri, 24 Sep 2004 11:28:20 -0500 Original-Received: from justine.libertine.org ([66.139.78.221] ident=postfix) by util2.math.uh.edu with esmtp (Exim 4.30) id 1CAsvi-0002WO-21 for ding@lists.math.uh.edu; Fri, 24 Sep 2004 11:28:18 -0500 Original-Received: from main.gmane.org (main.gmane.org [80.91.229.2]) by justine.libertine.org (Postfix) with ESMTP id AF2BE3A01F6 for ; Fri, 24 Sep 2004 11:28:13 -0500 (CDT) Original-Received: from list by main.gmane.org with local (Exim 3.35 #1 (Debian)) id 1CAsvb-0007nc-00 for ; Fri, 24 Sep 2004 18:28:11 +0200 Original-Received: from iwi190.iwi.uni-sb.de ([134.96.72.190]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 24 Sep 2004 18:28:11 +0200 Original-Received: from angeli by iwi190.iwi.uni-sb.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 24 Sep 2004 18:28:11 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: ding@gnus.org Original-To: ding@gnus.org Original-Lines: 143 Original-X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: iwi190.iwi.uni-sb.de Mail-Copies-To: nobody Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEUAAAD7+vVSPEL+/v79 /v1rDy/y7uQtAhK3tbD99doDAALV08n////+//78/fw7ARdgBieLg4LQmlLpAAACPklEQVR4nK2V 27KrMAiGTUCC0OLi/V92kRitp73HziwuOq3m4+cQ6PD60oY/AVCZEzwHkBXZ6Tmgikmc7yVuAGQD UOLHCqgEL7DnCpCYEFUfK1TCs9tz4AXokvEL4AUq5RuFF5DIF30IwES+SLoSRZ73Ifyri+To3xMA AMxlkDCPjsMZugLEWYZmkp3p/wAaeRl2JsXJENDwCgBgXKAiMhyIkMk5+zYeGwBG7J4P/ltYzYPk lfgAfD7bFSQEQpfxBCSpb6+Aa6SQONMZsOxK6VOifn6ZiigG2xEA1Vp0SOR7Ii/NI+d1PlbAFg+Y i+5z8SWQuO3GR6A7AM/Jd0A/FQrYR3YD+m02xF1MkQL0Htk/gKbfzvbrtD6lUw601hksWlVy9LBW XxT603OVMHZjfQfI4XeKLZCdtEgmeLfz5z7U3WJtFMKvTrnGw1OMReHaHd4i3t0lj2LzEk98cVeN 4ntDM8IFiLzbK9cprH0spl52ue+BGLTC05252/sGwJTp9vw0MV2Aeo/IWwjcTav58t1OOcTgx6YY R47jyqafFFRtV6INqLM8VvMIim2fCZsnvABA42pRTdoB5DEJ7yMQs/8535iltDUbrx4OC60BqcYT TSg/4425nUIC4Hhc2kzLDeJ4DimNTaBviZD5mRs3N8VMh3+KCqwC22IRiQfzOEvfsEcgbt1HYNuQ s5RwUtdYOQFv06reHB/2V/1dgXWGVmAVCFdyPF+ntMQK8RNAY6/pvKUd80AxERXKsZsOwC94/1VQ /4fx6QAAAABJRU5ErkJggg== User-Agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3.50 (gnu/linux) Cancel-Lock: sha1:NCV2jKu5v0ErZR0eTzieLsqJBNI= Precedence: bulk Xref: main.gmane.org gmane.emacs.gnus.general:58572 X-Report-Spam: http://spam.gmane.org/gmane.emacs.gnus.general:58572 * Kevin Greiner (2004-09-24) writes: > Are you willing/able to do a little lisp debugging for me? Sure. (c: > If so, > please do the following: > 1) Run gnus as you've described up to the point where you've seen > the 'Added to ... agent.lib/flags' message. > 2) Start a new emacs process. I suppose that involves closing Gnus and Emacs and starting both again. > 3) Do M-x load-librarygnus-agent.el > 4) Do M-x debug-on-entrygnus-agent-possibly-synchronize-flags > 5) Do M-x gnus > > The questions that I need you to answer are: Below you can find the contents of the debugging window at the various stages. If I got them wrong please tell me and I'll try to provide the right ones. Note that the backtraces for questions 1) and 2) are from a different session than the ones for questions 3) and 4). As the problem didn't change, I hope it is not significant. I just had to try several times until I got it right. > 1) Is gnus-agent-possibly-synchronize-flags being called? That is, do > you ever drop into the debugger? Yes. Debugger entered--entering a function: * gnus-agent-possibly-synchronize-flags() (cond ((eq set-to gnus-plugged) nil) (set-to (setq gnus-plugged set-to) (gnus-run-hooks ...) (setcar ... ...) (gnus-agent-go-online gnus-agent-go-online) (gnus-agent-possibly-synchronize-flags)) (t (gnus-agent-close-connections) (setq gnus-plugged set-to) (gnus-run-hooks ...) (setcar ... ...))) gnus-agent-toggle-plugged(t) (let ((init-plugged gnus-plugged) (gnus-agent-go-online nil)) (setq gnus-plugged :unknown) (gnus-agent-toggle-plugged init-plugged)) (progn (let (... ...) (setq gnus-plugged :unknown) (gnus-agent-toggle-plugged init-plugged))) (if (eq major-mode (quote gnus-group-mode)) (progn (let ... ... ...))) (when (eq major-mode (quote gnus-group-mode)) (let (... ...) (setq gnus-plugged :unknown) (gnus-agent-toggle-plugged init-plugged))) (let* ((buffer ...) (mode ...)) (set (make-local-variable ...) t) (set mode nil) (set (make-local-variable mode) t) (when (gnus-visual-p ... ...) (funcall ...)) (unless (assq ... minor-mode-alist) (push gnus-agent-mode-status minor-mode-alist)) (unless (assq mode minor-mode-map-alist) (push ... minor-mode-map-alist)) (when (eq major-mode ...) (let ... ... ...)) (gnus-run-hooks (quote gnus-agent-mode-hook) (intern ...))) gnus-agent-mode() run-hooks(gnus-group-mode-hook) apply(run-hooks gnus-group-mode-hook) gnus-run-hooks(gnus-group-mode-hook) gnus-group-mode() gnus-group-setup-buffer() gnus-group-list-groups(nil) [byte-code stripped] gnus-1(nil nil nil) gnus(nil) call-interactively(gnus) execute-extended-command(nil) call-interactively(execute-extended-command) > 2) As you step through the execution. You should see where gnus > checks for the existence of the agent.lib/flags file. There's one > file for each server. Does gnus check specifically for the > news.gmane.org server's file? I tested with news.individual.net: Debugger entered--returning value: "/home/angeli/News/agent/nntp/news.individual.net/agent.lib/flags" expand-file-name("flags" "/home/angeli/News/agent/nntp/news.individual.net/agent.lib/") * gnus-agent-lib-file("flags") * (file-exists-p (gnus-agent-lib-file "flags")) * (if (file-exists-p (gnus-agent-lib-file "flags")) (progn (gnus-agent-possibly-synchronize-flags-server gnus-command-method))) * (when (file-exists-p (gnus-agent-lib-file "flags")) (gnus-agent-possibly-synchronize-flags-server gnus-command-method)) * (while --dolist-temp--21402 (setq gnus-command-method (car --dolist-temp--21402)) (when (file-exists-p ...) (gnus-agent-possibly-synchronize-flags-server gnus-command-method)) (setq --dolist-temp--21402 (cdr --dolist-temp--21402))) * (let ((--dolist-temp--21402 ...) gnus-command-method) (while --dolist-temp--21402 (setq gnus-command-method ...) (when ... ...) (setq --dolist-temp--21402 ...)) nil) * (catch (quote --cl-block-nil--) (let (... gnus-command-method) (while --dolist-temp--21402 ... ... ...) nil)) * (cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil))) * (block nil (let (... gnus-command-method) (while --dolist-temp--21402 ... ... ...) nil)) * (dolist (gnus-command-method (gnus-agent-covered-methods)) (when (file-exists-p ...) (gnus-agent-possibly-synchronize-flags-server gnus-command-method))) * (save-excursion (dolist (gnus-command-method ...) (when ... ...))) * gnus-agent-possibly-synchronize-flags() > 3) If the file is found, gnus will attempt to open the server. Does > that open succeed? Debugger entered--returning value: open process-status(#) * nntp-open-server("news.individual.net" nil) [byte-code stripped] * gnus-open-server((nntp "news.individual.net")) [byte-code stripped] * gnus-check-server((nntp "news.individual.net")) * (null (gnus-check-server gnus-command-method)) * (cond ((null gnus-plugged) (gnus-message 1 "You must be plugged to synchronize flags with server %s" ...)) ((null ...) (gnus-message 1 "Couldn't open server %s" ...)) (t (while ... ...) (delete-file ...))) * (progn (set-buffer (get-buffer-create " *Gnus Agent flag synchronize*")) (erase-buffer) (nnheader-insert-file-contents (gnus-agent-lib-file "flags")) (cond (... ...) (... ...) (t ... ...)) (kill-buffer nil)) * (if (file-exists-p (gnus-agent-lib-file "flags")) (progn (set-buffer ...) (erase-buffer) (nnheader-insert-file-contents ...) (cond ... ... ...) (kill-buffer nil))) * (when (file-exists-p (gnus-agent-lib-file "flags")) (set-buffer (get-buffer-create " *Gnus Agent flag synchronize*")) (erase-buffer) (nnheader-insert-file-contents (gnus-agent-lib-file "flags")) (cond (... ...) (... ...) (t ... ...)) (kill-buffer nil)) * (let ((gnus-command-method method) (gnus-agent nil)) (when (file-exists-p ...) (set-buffer ...) (erase-buffer) (nnheader-insert-file-contents ...) (cond ... ... ...) (kill-buffer nil))) * gnus-agent-synchronize-flags-server((nntp "news.individual.net")) * (progn (gnus-agent-synchronize-flags-server method)) * (if (or (and gnus-agent-synchronize-flags ...) (and ... ...)) (progn (gnus-agent-synchronize-flags-server method))) * (when (or (and gnus-agent-synchronize-flags ...) (and ... ...)) (gnus-agent-synchronize-flags-server method)) * gnus-agent-possibly-synchronize-flags-server((nntp "news.individual.net")) * (progn (gnus-agent-possibly-synchronize-flags-server gnus-command-method)) * (if (file-exists-p (gnus-agent-lib-file "flags")) (progn (gnus-agent-possibly-synchronize-flags-server gnus-command-method))) * (when (file-exists-p (gnus-agent-lib-file "flags")) (gnus-agent-possibly-synchronize-flags-server gnus-command-method)) * (while --dolist-temp--20402 (setq gnus-command-method (car --dolist-temp--20402)) (when (file-exists-p ...) (gnus-agent-possibly-synchronize-flags-server gnus-command-method)) (setq --dolist-temp--20402 (cdr --dolist-temp--20402))) * (let ((--dolist-temp--20402 ...) gnus-command-method) (while --dolist-temp--20402 (setq gnus-command-method ...) (when ... ...) (setq --dolist-temp--20402 ...)) nil) * (catch (quote --cl-block-nil--) (let (... gnus-command-method) (while --dolist-temp--20402 ... ... ...) nil)) * (cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil))) * (block nil (let (... gnus-command-method) (while --dolist-temp--20402 ... ... ...) nil)) * (dolist (gnus-command-method (gnus-agent-covered-methods)) (when (file-exists-p ...) (gnus-agent-possibly-synchronize-flags-server gnus-command-method))) * (save-excursion (dolist (gnus-command-method ...) (when ... ...))) * gnus-agent-possibly-synchronize-flags() > 4) Finally, a (eval (read (current-buffer))) expression is performed > several times. Does it seem to return normally or does it signal > an error? Nope. Here are some partial backtraces at various stages of execution: Debugger entered--returning value: (nntp-request-set-mark "comp.text.tex" (quote ((((311807 . 311810)) add (read)))) "news.individual.net") read(#) * (eval (read (current-buffer))) * (null (eval (read ...))) * (if (null (eval ...)) (gnus-delete-line) (write-file (gnus-agent-lib-file "flags")) (error "Couldn't set flags from file %s" (gnus-agent-lib-file "flags"))) * (while (not (eobp)) (if (null ...) (gnus-delete-line) (write-file ...) (error "Couldn't set flags from file %s" ...))) ...later... Debugger entered--beginning evaluation of function call form: * (nntp-request-set-mark "comp.text.tex" (quote (...)) "news.individual.net") * eval((nntp-request-set-mark "comp.text.tex" (quote (...)) "news.individual.net")) * (null (eval (read ...))) * (if (null (eval ...)) (gnus-delete-line) (write-file (gnus-agent-lib-file "flags")) (error "Couldn't set flags from file %s" (gnus-agent-lib-file "flags"))) * (while (not (eobp)) (if (null ...) (gnus-delete-line) (write-file ...) (error "Couldn't set flags from file %s" ...))) ...even later... Debugger entered--returning value: t null(nil) * (if (null (eval ...)) (gnus-delete-line) (write-file (gnus-agent-lib-file "flags")) (error "Couldn't set flags from file %s" (gnus-agent-lib-file "flags"))) * (while (not (eobp)) (if (null ...) (gnus-delete-line) (write-file ...) (error "Couldn't set flags from file %s" ...))) -- Ralf