From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gregor Zattler Subject: Re: How to debug "org-clock-display: Args out of range: [48230 48230 48230 38618 38618 0 0 0 0 0 ...], 61" Date: Thu, 12 Jan 2012 22:41:11 +0100 Message-ID: <20120112214110.GB29496@shi.workgroup> References: <20120106002125.GA32086@shi.workgroup> <8762gp3aqz.fsf@norang.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([140.186.70.92]:55550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlSPA-0000h5-9O for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 16:41:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RlSP7-0007bu-ON for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 16:41:52 -0500 Received: from mailout-de.gmx.net ([213.165.64.22]:57266) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1RlSP7-0007bO-CD for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 16:41:49 -0500 Content-Disposition: inline In-Reply-To: <8762gp3aqz.fsf@norang.ca> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode Hi Bernt, org-mode developers, * Bernt Hansen [05. Jan. 2012]: > Gregor Zattler writes: >> I use org-mode to record my working time. If I want to know the >> total time worked on a project I do a M-X org-clock-display. >> >> But this suddenly gives me this error message: >> >> org-clock-display: Args out of range: [48230 48230 48230 38618 38618 0 0= 0 0 0 ...], 61 >> >> I checked the org file but do not find any irregularities in the >> clock tables. I even deleted all individual `=3D> HH:MM' time >> ranges but this did not help. With something like bisecting I narrowed the problem down to a few headlines consisting of subheadings, bullet lists, checkboxed lists a few inline tasks etc. All in all 253 lines of text. It looks totally harmless to me. >> This happens with emacs23.3, org-mode 6.33 as with Emacs-snapshot >> and newest org-mode so I assume it is something like a syntax >> error in my org file. In both cases I startet Emacs with -Q so this is not a configuration issue -- besides a few #+STARTUP lines at the beginning orf the org file. >> Any idea where to look for the cause of the error? >=20 > If you generate a backtrace with uncompiled org source files you should > get an indication of where the problem is. I did as you said but the backtrace is totally opaque to me: Debugger entered--Lisp error: (args-out-of-range [49569 49569 49569 39957 3= 9957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 61) aref([49569 49569 49569 39957 39957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0= 0 0 0 0 0 0] 61) (> (aref ltimes level) 0) (or (> t1 0) (> (aref ltimes level) 0)) (if (or (> t1 0) (> (aref ltimes level) 0)) (progn (when (or headline-inc= luded headline-forced) (if headline-included (loop for l from 0 to level do= (aset ltimes l (+ (aref ltimes l) t1)))) (setq time (aref ltimes level)) (= goto-char (match-beginning 0)) (put-text-property (point) (point-at-eol) :o= rg-clock-minutes time) (if headline-filter (save-excursion (save-match-data= (while (> ... 1) (outline-up-heading 1 t) (put-text-property ... ... :org-= clock-force-headline-inclusion t)))))) (setq t1 0) (loop for l from level t= o (1- lmax) do (aset ltimes l 0)))) (when (or (> t1 0) (> (aref ltimes level) 0)) (when (or headline-included= headline-forced) (if headline-included (loop for l from 0 to level do (ase= t ltimes l (+ (aref ltimes l) t1)))) (setq time (aref ltimes level)) (goto-= char (match-beginning 0)) (put-text-property (point) (point-at-eol) :org-cl= ock-minutes time) (if headline-filter (save-excursion (save-match-data (whi= le (> (funcall outline-level) 1) (outline-up-heading 1 t) (put-text-propert= y (point) (point-at-eol) :org-clock-force-headline-inclusion t)))))) (setq = t1 0) (loop for l from level to (1- lmax) do (aset ltimes l 0))) (let* ((headline-forced (get-text-property (point) :org-clock-force-headl= ine-inclusion)) (headline-included (or (null headline-filter) (save-excursi= on (save-match-data (funcall headline-filter)))))) (setq level (- (match-en= d 1) (match-beginning 1))) (when (or (> t1 0) (> (aref ltimes level) 0)) (w= hen (or headline-included headline-forced) (if headline-included (loop for = l from 0 to level do (aset ltimes l (+ (aref ltimes l) t1)))) (setq time (a= ref ltimes level)) (goto-char (match-beginning 0)) (put-text-property (poin= t) (point-at-eol) :org-clock-minutes time) (if headline-filter (save-excurs= ion (save-match-data (while (> ... 1) (outline-up-heading 1 t) (put-text-pr= operty ... ... :org-clock-force-headline-inclusion t)))))) (setq t1 0) (loo= p for l from level to (1- lmax) do (aset ltimes l 0)))) (cond ((match-end 2) (setq ts (match-string 2) te (match-string 3) ts (or= g-float-time (apply (quote encode-time) (org-parse-time-string ts))) te (or= g-float-time (apply (quote encode-time) (org-parse-time-string te))) ts (if= tstart (max ts tstart) ts) te (if tend (min te tend) te) dt (- te ts) t1 (= if (> dt 0) (+ t1 (floor (/ dt 60))) t1))) ((match-end 4) (setq t1 (+ t1 (s= tring-to-number (match-string 5)) (* 60 (string-to-number (match-string 4))= )))) (t (when (and org-clock-report-include-clocking-task (equal (org-clock= ing-buffer) (current-buffer)) (equal (marker-position org-clock-hd-marker) = (point)) tstart tend (>=3D (org-float-time org-clock-start-time) tstart) (<= =3D (org-float-time org-clock-start-time) tend)) (let ((time (floor (- ... = =2E..) 60))) (setq t1 (+ t1 time)))) (let* ((headline-forced (get-text-prop= erty (point) :org-clock-force-headline-inclusion)) (headline-included (or (= null headline-filter) (save-excursion (save-match-data ...))))) (setq level= (- (match-end 1) (match-beginning 1))) (when (or (> t1 0) (> (aref ltimes = level) 0)) (when (or headline-included headline-forced) (if headline-includ= ed (loop for l from 0 to level do (aset ltimes l ...))) (setq time (aref lt= imes level)) (goto-char (match-beginning 0)) (put-text-property (point) (po= int-at-eol) :org-clock-minutes time) (if headline-filter (save-excursion (s= ave-match-data ...)))) (setq t1 0) (loop for l from level to (1- lmax) do (= aset ltimes l 0)))))) (while (re-search-backward re nil t) (cond ((match-end 2) (setq ts (match= -string 2) te (match-string 3) ts (org-float-time (apply (quote encode-time= ) (org-parse-time-string ts))) te (org-float-time (apply (quote encode-time= ) (org-parse-time-string te))) ts (if tstart (max ts tstart) ts) te (if ten= d (min te tend) te) dt (- te ts) t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t= 1))) ((match-end 4) (setq t1 (+ t1 (string-to-number (match-string 5)) (* 6= 0 (string-to-number (match-string 4)))))) (t (when (and org-clock-report-in= clude-clocking-task (equal (org-clocking-buffer) (current-buffer)) (equal (= marker-position org-clock-hd-marker) (point)) tstart tend (>=3D (org-float-= time org-clock-start-time) tstart) (<=3D (org-float-time org-clock-start-ti= me) tend)) (let ((time (floor ... 60))) (setq t1 (+ t1 time)))) (let* ((hea= dline-forced (get-text-property (point) :org-clock-force-headline-inclusion= )) (headline-included (or (null headline-filter) (save-excursion ...)))) (s= etq level (- (match-end 1) (match-beginning 1))) (when (or (> t1 0) (> (are= f ltimes level) 0)) (when (or headline-included headline-forced) (if headli= ne-included (loop for l from 0 to level do ...)) (setq time (aref ltimes le= vel)) (goto-char (match-beginning 0)) (put-text-property (point) (point-at-= eol) :org-clock-minutes time) (if headline-filter (save-excursion ...))) (s= etq t1 0) (loop for l from level to (1- lmax) do (aset ltimes l 0))))))) (save-excursion (goto-char (point-max)) (while (re-search-backward re nil= t) (cond ((match-end 2) (setq ts (match-string 2) te (match-string 3) ts (= org-float-time (apply (quote encode-time) (org-parse-time-string ts))) te (= org-float-time (apply (quote encode-time) (org-parse-time-string te))) ts (= if tstart (max ts tstart) ts) te (if tend (min te tend) te) dt (- te ts) t1= (if (> dt 0) (+ t1 (floor ...)) t1))) ((match-end 4) (setq t1 (+ t1 (strin= g-to-number (match-string 5)) (* 60 (string-to-number ...))))) (t (when (an= d org-clock-report-include-clocking-task (equal (org-clocking-buffer) (curr= ent-buffer)) (equal (marker-position org-clock-hd-marker) (point)) tstart t= end (>=3D (org-float-time org-clock-start-time) tstart) (<=3D (org-float-ti= me org-clock-start-time) tend)) (let ((time ...)) (setq t1 (+ t1 time)))) (= let* ((headline-forced (get-text-property ... :org-clock-force-headline-inc= lusion)) (headline-included (or ... ...))) (setq level (- (match-end 1) (ma= tch-beginning 1))) (when (or (> t1 0) (> ... 0)) (when (or headline-include= d headline-forced) (if headline-included ...) (setq time ...) (goto-char ..= =2E) (put-text-property ... ... :org-clock-minutes time) (if headline-filte= r ...)) (setq t1 0) (loop for l from level to (1- lmax) do (aset ltimes l 0= ))))))) (setq org-clock-file-total-minutes (aref ltimes 0))) (let* ((bmp (buffer-modified-p)) (re (concat "^\\(\\*+\\)[ ]\\|^[ ]*" o= rg-clock-string "[ ]*\\(?:\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)\\|=3D>[ ]+\\([= 0-9]+\\):\\([0-9]+\\)\\)")) (lmax 30) (ltimes (make-vector lmax 0)) (t1 0) = (level 0) ts te dt time) (if (stringp tstart) (setq tstart (org-time-string= -to-seconds tstart))) (if (stringp tend) (setq tend (org-time-string-to-sec= onds tend))) (if (consp tstart) (setq tstart (org-float-time tstart))) (if = (consp tend) (setq tend (org-float-time tend))) (remove-text-properties (po= int-min) (point-max) (quote (:org-clock-minutes t :org-clock-force-headline= -inclusion t))) (save-excursion (goto-char (point-max)) (while (re-search-b= ackward re nil t) (cond ((match-end 2) (setq ts (match-string 2) te (match-= string 3) ts (org-float-time (apply ... ...)) te (org-float-time (apply ...= ...)) ts (if tstart (max ts tstart) ts) te (if tend (min te tend) te) dt (= - te ts) t1 (if (> dt 0) (+ t1 ...) t1))) ((match-end 4) (setq t1 (+ t1 (st= ring-to-number ...) (* 60 ...)))) (t (when (and org-clock-report-include-cl= ocking-task (equal ... ...) (equal ... ...) tstart tend (>=3D ... tstart) (= <=3D ... tend)) (let (...) (setq t1 ...))) (let* ((headline-forced ...) (he= adline-included ...)) (setq level (- ... ...)) (when (or ... ...) (when ...= ... ... ... ... ...) (setq t1 0) (loop for l from level to ... do ...)))))= ) (setq org-clock-file-total-minutes (aref ltimes 0))) (set-buffer-modified= -p bmp)) org-clock-sum() (let (time h m p) (org-clock-sum) (unless total-only (save-excursion (got= o-char (point-min)) (while (or (and (equal (setq p ...) (point-min)) (get-t= ext-property p :org-clock-minutes)) (setq p (next-single-property-change (p= oint) :org-clock-minutes))) (goto-char p) (when (setq time (get-text-proper= ty p :org-clock-minutes)) (org-clock-put-overlay time (funcall outline-leve= l)))) (setq h (/ org-clock-file-total-minutes 60) m (- org-clock-file-total= -minutes (* 60 h))) (when org-remove-highlights-with-change (org-add-hook (= quote before-change-functions) (quote org-clock-remove-overlays) nil (quote= local))))) (if org-time-clocksum-use-fractional (message (concat "Total fi= le time: " org-time-clocksum-fractional-format " (%d hours and %d minutes)"= ) (/ (+ (* h 60.0) m) 60.0) h m) (message (concat "Total file time: " org-t= ime-clocksum-format " (%d hours and %d minutes)") h m h m))) org-clock-display() call-interactively(org-clock-display t nil) execute-extended-command(nil) call-interactively(execute-extended-command nil nil) Any further ideas what to try next? Ciao, Gregor --=20 -... --- .-. . -.. ..--.. ...-.-