GNU bug report logs - #332
accept-process-output hangs (incompatibility)

Previous Next

Package: emacs;

Reported by: Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>

Date: Wed, 28 May 2008 11:40:04 UTC

Severity: normal

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 332 in the body.
You can then email your comments to 332 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#332; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>
To: bug-gnu-emacs <at> gnu.org
Subject: accept-process-output hangs (incompatibility)
Date: Wed, 28 May 2008 13:33:01 +0200
--text follows this line--

Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.

Your bug report will be posted to the bug-gnu-emacs <at> gnu.org mailing list,
and to the gnu.emacs.bug news group.

Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:

Note: I reported that bug yesterday for an intermediary pre 22.2
version.  The same problem occurs in 22.2 and is incompatible with
previous versions:

C-x C-e the following two expressions

(progn
  (setq my-process
        (start-process "mine" "mine" "sleep" "1h"))
  (list-processes))

(accept-process-output my-process nil 400)

We create a process mine, that sleeps for an hour.
accept-process-output will hang, whereas it should return after 400
milliseconds.  However, if argument SECONDS is replaced by 0 it will
eval as expected.

In GNU Emacs 22.2.1 (i686-pc-linux-gnu, X toolkit)
 of 2008-05-28 on gupu.complang.tuwien.ac.at
Windowing system distributor `The XFree86 Project, Inc', version 11.0.4003
configured using `configure  '--without-toolkit-scroll-bars' '--prefix' '/opt/gupu' '--with-git=no''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US
  locale-coding-system: iso-8859-1
  default-enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  tooltip-mode: t
  tool-bar-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  unify-8859-on-encoding-mode: t
  utf-translate-cjk-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent input:
<help-echo> <help-echo> <help-echo> <down-mouse-1> 
<mouse-1> M-x C-g C-x C-f ~ / l f t <tab> e m <tab> 
a <tab> <tab> <tab> / <tab> <tab> e <tab> <return> 
<down> <down> C-x C-g <down> C-k <down> <down> <down> 
<down> <down> <down> <down> <down> <down> C-y C-a <up> 
<up> <up> <up> <up> <up> <up> <up> C-SPC <up> <up> 
<up> C-w C-k C-k C-k C-k C-x C-s <down> <down> <down> 
<down> C-x C-e C-w <down> C-x C-g C-/ <down> C-x C-e 
C-g <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<menu-bar> <help-menu> <send-emacs-bug-report>

Recent messages:
Loading help-mode...done
Making completion list... [2 times]
Mark set [2 times]
Wrote /home/ulrich/lftp/emacs/e19.el
nil
Undo!
Quit [2 times]
Loading emacsbug...
Loading regexp-opt...done
Loading emacsbug...done





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#332; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #10 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>
Cc: 332 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
Subject: Re: bug#332: accept-process-output hangs (incompatibility)
Date: Thu, 29 May 2008 10:07:24 -0400
> Note: I reported that bug yesterday for an intermediary pre 22.2
> version.  The same problem occurs in 22.2 and is incompatible with
> previous versions:

Which previous versions accepted this form?
The current behavior is in accordance with the docstring:

   Non-nil second arg seconds and third arg millisec are number of
   seconds and milliseconds to wait; return after that much time whether

> We create a process mine, that sleeps for an hour.
> accept-process-output will hang, whereas it should return after 400
> milliseconds.  However, if argument SECONDS is replaced by 0 it will
> eval as expected.

BTW, I recommend you don't use the milliseconds argument at all.


        Stefan





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#332; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#332; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #20 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>
To: monnier <at> iro.umontreal.ca, ulrich <at> complang.tuwien.ac.at
Cc: 332 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
Subject: Re: bug#332: accept-process-output hangs (incompatibility)
Date: Thu, 29 May 2008 16:18:15 +0200
> which previous versions accepted this form?
GNU Emacs 21.3.50.1 (i686-pc-linux-gnu, X toolkit) of 2003-11-26 on gupu.complang.tuwien.ac.at
GNU Emacs 21.2.50.2 (i686-pc-linux-gnu, X toolkit) of 2002-04-07 on gupu.complang.tuwien.ac.at
GNU Emacs 20.7.1 (i386-redhat-linux-gnu, X toolkit) of Fri Mar 16 2001 on porky.devel.redhat.com
 
... and definitely many more.
I never had any such problem ever since xemacs (not the Lucid successor, but
the first tentative X versions of the real Emacs ~ 1992).

All *.50.1 versions habe probably been pulled from cvs-archives at that time.

Best regards,
Ulrich





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#332; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#332; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #30 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>
To: monnier <at> iro.umontreal.ca, ulrich <at> complang.tuwien.ac.at
Cc: 332 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
Subject: Re: bug#332: accept-process-output hangs (incompatibility)
Date: Thu, 29 May 2008 17:02:36 +0200
One further remark concerning the docstring:
in 20.7 it read more or less the same:

Non-nil second arg TIMEOUT and third arg TIMEOUT-MSECS are number of
seconds and microseconds to wait; return after that much time whether
or not there is input.





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#332; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Reply sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
You have taken responsibility. Full text and rfc822 format available.

Notification sent to Ulrich Neumerkel <ulrich <at> complang.tuwien.ac.at>:
bug acknowledged by developer. Full text and rfc822 format available.

Message #40 received at 332-close <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 332-close <at> debbugs.gnu.org
Subject: Re: bug#332: accept-process-output hangs (incompatibility)
Date: Thu, 29 May 2008 12:57:57 -0400
>> which previous versions accepted this form?
> GNU Emacs 21.3.50.1 (i686-pc-linux-gnu, X toolkit) of 2003-11-26 on gupu.complang.tuwien.ac.at
> GNU Emacs 21.2.50.2 (i686-pc-linux-gnu, X toolkit) of 2002-04-07 on gupu.complang.tuwien.ac.at
> GNU Emacs 20.7.1 (i386-redhat-linux-gnu, X toolkit) of Fri Mar 16 2001 on porky.devel.redhat.com
 
I've installed the patch below, which should fix your problem (note
that the interpretation of the `millisec' argument has changed since
Emacs-21 where it was a microseconds count).


        Stefan


--- process.c.~1.542.~	2008-05-22 17:12:27.000000000 -0400
+++ process.c	2008-05-29 12:52:17.000000000 -0400
@@ -3896,6 +3896,7 @@
 seconds and milliseconds to wait; return after that much time whether
 or not there is input.  If SECONDS is a floating point number,
 it specifies a fractional number of seconds to wait.
+The MILLISEC argument is obsolete and should be avoided.
 
 If optional fourth arg JUST-THIS-ONE is non-nil, only accept output
 from PROCESS, suspending reading output from other processes.
@@ -3911,6 +3912,18 @@
   else
     just_this_one = Qnil;
 
+  if (!NILP (millisec))
+    { /* Obsolete calling convention using integers rather than floats.  */
+      CHECK_NUMBER (millisec);
+      if (NILP (seconds))
+	seconds = make_float (XINT (millisec) / 1000.0);
+      else
+	{
+	  CHECK_NUMBER (seconds);
+	  seconds = make_float (XINT (millisec) / 1000.0 + XINT (seconds));
+	}
+    }
+
   if (!NILP (seconds))
     {
       if (INTEGERP (seconds))
@@ -3924,19 +3937,6 @@
       else
 	wrong_type_argument (Qnumberp, seconds);
 
-      if (INTEGERP (millisec))
-	{
-	  int carry;
-	  usecs += XINT (millisec) * 1000;
-	  carry = usecs / 1000000;
-	  secs += carry;
-	  if ((usecs -= carry * 1000000) < 0)
-	    {
-	      secs--;
-	      usecs += 1000000;
-	    }
-	}
-
       if (secs < 0 || (secs == 0 && usecs == 0))
 	secs = -1, usecs = 0;
     }




bug archived. Request was from Debbugs Internal Request <don <at> donarmstrong.com> to internal_control <at> emacsbugs.donarmstrong.com. (Fri, 27 Jun 2008 14:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 17 years and 53 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.