unofficial mirror of emacs-orgmode@gnu.org
 help / color / mirror / code / Atom feed
* Bug: clock-in from org-agenda freezes thread when enforce + todo keywords [9.4.4 (release_9.4.4 @ /usr/local/share/emacs/28.0.50/lisp/org/)]
@ 2021-06-10 23:27 Tory S. Anderson
  2021-06-22 12:14 ` Ihor Radchenko
  0 siblings, 1 reply; 2+ messages in thread
From: Tory S. Anderson @ 2021-06-10 23:27 UTC (permalink / raw)
  To: emacs-orgmode

After long bisection and suffering for a while from this issue, I have narrowed down an issue that is breaking my workflow. I noticed that some time recently orgmode has begun freezing my system (as an exwm user, this is serious) when I attempt to clock in to certain tasks from the agenda. Clocking in from their actual orgmode file works just fine, but sometimes then even checking the agenda causes thread freezing (I see my CPU spike to maximum on that thread, and emacs becomes unresponsive). In my minimal reproducable version, no packages are loaded other than org-mode and use-package. Here is my current version, although I've been encountering this problem for longer than I've been using this version, probably.

Besides all the details included below by the bug report, Here is the use-package declaration that produces the frozen thread when you attempt to clock in to the "parent" item in your agenda (it may be important that the dates/deadlines are "today"; I don't know). In this toy example you can recover with C-g a time or two, but in my full setup even c-g can take up to 30 seconds to register.

Steps to reproduce:

1. load emacs with the use-package declaration below
2. visit =M-x org-agenda<RET>a3. Clock in to the "Parent" item on the agenda by highlighting it and doing =C-c C-x <TAB>   -- thread will freeze indefinitely, although in toy example you can break free with C-g

#+begin_src lisp
  (use-package org
      :straight (:type built-in)
      :demand t
      :custom
      (org-enforce-todo-dependencies t)

      (org-agenda-files
       '("~/org/nested.org"))

      (org-todo-keywords
       '((type "TODO(t)" "STARTED(s)" "UNSTARTED(u)" "|" "DONE(d)")
	 (type "PENDING(p)" "HOLD(h)" "ONGOING(o)" "|" "DONE(d)")
	 (sequence "|" "CANCELED(c)" "ABSTAINED(a)"))))
#+end_src

Here is nested.org : https://gitlab.com/-/snippets/2133558


------------------------------------------------------------------------
Emacs  : GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.29, cairo version 1.16.0)
 of 2021-06-03
Package: Org mode version 9.4.4 (release_9.4.4 @ /usr/local/share/emacs/28.0.50/lisp/org/)

current state:
=============(setq
 org-link-elisp-confirm-function 'yes-or-no-p
 org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 "\n\n(fn ENTRY)"]
 org-agenda-files '("~/org/nested.org")
 org-export-before-parsing-hook '(org-attach-expand-links)
 org-archive-hook '(org-attach-archive-delete-maybe)
 org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines org-optimize-window-after-visibility-change)
 org-mode-hook '(#[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-show-all append local] 5]
		 #[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-babel-show-result-all append local] 5] org-babel-result-hide-spec
		 org-babel-hide-all-hashes)
 org-confirm-shell-link-function 'yes-or-no-p
 outline-isearch-open-invisible-function 'outline-isearch-open-invisible
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer)
 org-confirm-elisp-link-function 'yes-or-no-p
 org-todo-keywords '((type "TODO(t)" "STARTED(s)" "UNSTARTED(u)" "|" "DONE(d)") (type "PENDING(p)" "HOLD(h)" "ONGOING(o)" "|" "DONE(d)")
		     (sequence "|" "CANCELED(c)" "ABSTAINED(a)"))
 org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
 org-blocker-hook '(org-block-todo-from-children-or-siblings-or-parent)
 org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate)
 org-enforce-todo-dependencies t
 org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand)
 org-link-shell-confirm-function 'yes-or-no-p
 org-babel-pre-tangle-hook '(save-buffer)
 org-agenda-loop-over-headlines-in-active-region nil
 org-occur-hook '(org-first-headline-recenter)
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-link-parameters '(("attachment" :follow org-attach-follow :complete org-attach-complete-link) ("id" :follow org-id-open)
		       ("eww" :follow org-eww-open :store org-eww-store-link) ("rmail" :follow org-rmail-open :store org-rmail-store-link)
		       ("mhe" :follow org-mhe-open :store org-mhe-store-link) ("irc" :follow org-irc-visit :store org-irc-store-link :export org-irc-export)
		       ("info" :follow org-info-open :export org-info-export :store org-info-store-link)
		       ("gnus" :follow org-gnus-open :store org-gnus-store-link)
		       ("docview" :follow org-docview-open :export org-docview-export :store org-docview-store-link)
		       ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link)
		       ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete org-bbdb-complete-link :store org-bbdb-store-link)
		       ("w3m" :store org-w3m-store-link) ("file+sys") ("file+emacs") ("shell" :follow org-link--open-shell)
		       ("news" :follow #[514 "\301\300\302Q\"\207" ["news" browse-url ":"] 6 "\n\n(fn URL ARG)"])
		       ("mailto" :follow #[514 "\301\300\302Q\"\207" ["mailto" browse-url ":"] 6 "\n\n(fn URL ARG)"])
		       ("https" :follow #[514 "\301\300\302Q\"\207" ["https" browse-url ":"] 6 "\n\n(fn URL ARG)"])
		       ("http" :follow #[514 "\301\300\302Q\"\207" ["http" browse-url ":"] 6 "\n\n(fn URL ARG)"])
		       ("ftp" :follow #[514 "\301\300\302Q\"\207" ["ftp" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("help" :follow org-link--open-help)
		       ("file" :complete org-link-complete-file) ("elisp" :follow org-link--open-elisp) ("doi" :follow org-link--open-doi))
 org-metaup-hook '(org-babel-load-in-session-maybe)
 )


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Bug: clock-in from org-agenda freezes thread when enforce + todo keywords [9.4.4 (release_9.4.4 @ /usr/local/share/emacs/28.0.50/lisp/org/)]
  2021-06-10 23:27 Bug: clock-in from org-agenda freezes thread when enforce + todo keywords [9.4.4 (release_9.4.4 @ /usr/local/share/emacs/28.0.50/lisp/org/)] Tory S. Anderson
@ 2021-06-22 12:14 ` Ihor Radchenko
  0 siblings, 0 replies; 2+ messages in thread
From: Ihor Radchenko @ 2021-06-22 12:14 UTC (permalink / raw)
  To: Tory S. Anderson; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 394 bytes --]

webdev@toryanderson.com (Tory S. Anderson) writes:
> Steps to reproduce:
>
> 1. load emacs with the use-package declaration below
> 2. visit =M-x org-agenda<RET>a3. Clock in to the "Parent" item on the agenda by highlighting it and doing =C-c C-x <TAB>   -- thread will freeze indefinitely, although in toy example you can break free with C-g   

Confirmed

The patch is attached.

Best,
Ihor


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Avoid-infinite-loop-in-org-agenda-dim-blocked-tasks.patch --]
[-- Type: text/x-diff, Size: 1265 bytes --]

From 5c4a699e5a8d9ce6045d0ce710dcf14b9a92d2d8 Mon Sep 17 00:00:00 2001
Message-Id: <5c4a699e5a8d9ce6045d0ce710dcf14b9a92d2d8.1624364038.git.yantar92@gmail.com>
From: Ihor Radchenko <yantar92@gmail.com>
Date: Tue, 22 Jun 2021 20:10:16 +0800
Subject: [PATCH] Avoid infinite loop in org-agenda-dim-blocked-tasks

* lisp/org-agenda.el (org-agenda-dim-blocked-tasks): When the blocked
task is the last line in agenda buffer and no trailing newline is
present, (move-beginning-of-line 2) would not move the point causing
infinite loop.  Now, such case is handled correctly.
---
 lisp/org-agenda.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 44acd035a..b5fc0179a 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -4107,7 +4107,9 @@ (defun org-agenda-dim-blocked-tasks (&optional _invisible)
 	    (overlay-put ov 'face 'org-agenda-dimmed-todo-face))
 	  (when invisible
 	    (org-agenda-filter-hide-line 'todo-blocked)))
-	(move-beginning-of-line 2))))
+        (if (= (point-max) (line-end-position))
+            (goto-char (point-max))
+	  (move-beginning-of-line 2)))))
   (when (called-interactively-p 'interactive)
     (message "Dim or hide blocked tasks...done")))
 
-- 
2.31.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-06-22 12:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-10 23:27 Bug: clock-in from org-agenda freezes thread when enforce + todo keywords [9.4.4 (release_9.4.4 @ /usr/local/share/emacs/28.0.50/lisp/org/)] Tory S. Anderson
2021-06-22 12:14 ` Ihor Radchenko

unofficial mirror of emacs-orgmode@gnu.org

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/orgmode/0 orgmode/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 orgmode orgmode/ https://yhetil.org/orgmode \
		emacs-orgmode@gnu.org
	public-inbox-index orgmode

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.emacs.orgmode
	nntp://news.gmane.io/gmane.emacs.orgmode


code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

AGPL code for this site: git clone http://ou63pmih66umazou.onion/public-inbox.git