bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#332: marked as done (accept-process-output hangs (incompatibility))


From: Emacs bug Tracking System
Subject: bug#332: marked as done (accept-process-output hangs (incompatibility))
Date: Thu, 29 May 2008 10:05:06 -0700

Your message dated Thu, 29 May 2008 12:57:57 -0400
with message-id <jwvskw1aw2s.fsf-monnier+emacsbugreports@gnu.org>
and subject line Re: bug#332: accept-process-output hangs (incompatibility)
has caused the Emacs bug report #332,
regarding accept-process-output hangs (incompatibility)
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact don@donarmstrong.com
immediately.)


-- 
332: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=332
Emacs Bug Tracking System
Contact don@donarmstrong.com with problems
--- Begin Message --- 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@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




--- End Message ---
--- Begin Message --- Subject: Re: bug#332: accept-process-output hangs (incompatibility) Date: Thu, 29 May 2008 12:57:57 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)
>> 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;
     }


--- End Message ---

reply via email to

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