emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs gets stuck in wait_reading_process_output sometimes


From: joakim
Subject: emacs gets stuck in wait_reading_process_output sometimes
Date: Wed, 11 Jun 2008 21:09:34 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

#0  0x00110422 in __kernel_vsyscall ()
#1  0x00cb85bd in ___newselect_nocancel () from /lib/libc.so.6
#2  0x081adc25 in select_wrapper (n=-514, rfd=0x0, wfd=0xbfd5a178, xfd=0x0, 
tmo=0xbfd5a2a8) at process.c:4204
#3  0x081b0e3f in wait_reading_process_output (time_limit=0, microsecs=10000, 
read_kbd=0, do_display=0, wait_for_cell=137764129, wait_proc=0xb819ca0, 
just_wait_proc=0) at process.c:4587
#4  0x081b2de7 in Faccept_process_output (process=193043620, seconds=0, 
millisec=80, just_this_one=137764129) at process.c:3946

This only happens sometimes.

I have a small elisp wrapper for fetchmail, and I think the stuckness
might happen when fetchmail exits, but I'm not sure.

Any hints how to debug this better when it happens?


;jvfetchmail.el
;
;jvfetchmail calls fetchmail. After fetchmail is run, gnus is updated.
;
;my particular mail setup looks like this:
; - get mail via imap with fetchmail
; - filter mail with sieve, using dovecot local delivery agent
; - read mail using gnus from a local dovecot imapd instance on my laptop
;this looks complicated but is surprisingly efficient
;
;jvfetchmail also tries to help you not to obsess over email.
;
;jvfetchmail was only tested on emacs 23

;address@hidden
;call fetchmail and stuff


(defvar jvfetchmail-last-called nil
  "when jvfetvhmail was last called")

(defvar jvfetchmail-in-progress nil)

;TODO process might fail, reset "in-progress" flag
;TODO gnus might fail at end, reset "in-progress" flag
;TODO some way of resetting the flag
(provide 'jvfetchmail)
(defun jvfetchmail-sentinel (process event)
  (setq jvfetchmail-in-progress nil) ;should rather be called lat but currently 
gnus might fail
  (let*
      ((msg (format "fetchmail %s"  event)))
    (save-excursion
      (set-buffer (get-buffer-create "*fetchmail*"))
      
      (gnus-group-get-new-news)
      (insert msg))
    (princ msg)))
                                        ;if no mail : exited abnormally with 
code 1
                                        ;otherwise: finished

(defun jvfetchmail ()
  "run fetchmail and stuff"
  (interactive)
  (if jvfetchmail-in-progress
      (message "jvfetchmail is running already, dont be obsessive")
    (progn
      (if jvfetchmail-last-called
          (progn
            (message "jvfetchmail last called %s, %s minutes ago"
                     (format-time-string "%H:%M" jvfetchmail-last-called) 
                     (round (/ (float-time (time-subtract (current-time) 
jvfetchmail-last-called)) 60))))
        (message "jvfetchmail 1st run this session"))
      (setq jvfetchmail-last-called (current-time))
      (setq jvfetchmail-in-progress t)
      (save-excursion
    
        (set-buffer (get-buffer-create "*jvfetchmail*"))
        (erase-buffer )
        (let*
            ((fetchmail-process (start-process "fetchmail" "*jvfetchmail*" 
"fetchmail")))
          (set-process-sentinel fetchmail-process 'jvfetchmail-sentinel)
          )
        )
      )
    ))
  
(global-set-key (kbd "<f9> m") 'jvfetchmail)

-- 
Joakim Verona




reply via email to

[Prev in Thread] Current Thread [Next in Thread]