From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos 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 17:12:04 -0500 Message-ID: <4047.1326406324@alphaville1> References: <20120106002125.GA32086@shi.workgroup> <8762gp3aqz.fsf@norang.ca> <20120112214110.GB29496@shi.workgroup> Reply-To: nicholas.dokos@hp.com Return-path: Received: from eggs.gnu.org ([140.186.70.92]:58935) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlTI9-0007Im-D5 for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 17:38:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RlTI7-0000SL-KI for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 17:38:41 -0500 Received: from g6t0186.atlanta.hp.com ([15.193.32.63]:9921) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlTI7-0000Ma-FP for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 17:38:39 -0500 Received: from g5t0029.atlanta.hp.com (g5t0029.atlanta.hp.com [16.228.8.141]) by g6t0186.atlanta.hp.com (Postfix) with ESMTP id BCB5A2C371 for ; Thu, 12 Jan 2012 22:12:05 +0000 (UTC) In-Reply-To: Message from Gregor Zattler of "Thu, 12 Jan 2012 22:41:11 +0100." <20120112214110.GB29496@shi.workgroup> 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 Cc: nicholas.dokos@hp.com Gregor Zattler wrote: > 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) This tries to get the 61st element of a vector that has at most 30 or so elements, hence the complaint. But of course, that's hardly enlightening. However, the backtrace shows that this code is inside the function org-clock-sum (in org-clock.el). And if you look at that function, you see (where I have elided large swathes of code): (let* (... (lmax 30) (ltimes (make-vector lmax 0)) ... So ltimes is a vector with *exactly* 30 elements. I would change that 30 to 100 or so (something greater than 61 in any case) and retest. If that fixes it, then we know the culprit and then we can dedice which is the unreasonable one: the code or your subtree :-) Nick > (> (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 > -... --- .-. . -.. ..--.. ...-.- >