From: Johan Euphrosine <proppy@aminche.com>
To: bug-gnu-emacs@gnu.org
Cc: Cyril Bouthors <cyb@debian.org>,
Olin Shivers <shivers@cs.cmu.edu>, Simon Marshall <simon@gnu.org>
Subject: bug#4975: 23.1; comint.el: command line is sometimes echoed in the command output
Date: Thu, 19 Nov 2009 17:40:05 +0100 [thread overview]
Message-ID: <1258648805.4446.1.camel@pasokon> (raw)
[-- Attachment #1: Type: text/plain, Size: 9108 bytes --]
Hi,
I managed to reproduce
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=284727 with
comint-mode, and emacs23:
After running php -r 'fwrite(STDOUT, "stdout\n");' in a bash comint
buffer: every command is echoed twice.
emacs
M-x comint-run
/bin/bash
proppy@pasokon:~$ echo 'command is echoed once'
command is echoed once
proppy@pasokon:~$ php -r 'fwrite(STDOUT, "stdout\n");'
stdout
proppy@pasokon:~$ php -r 'fwrite(STDOUT, "stdout\n");'
php -r 'fwrite(STDOUT, "stdout\n");'
stdout
proppy@pasokon:~$ echo 'command is echoed twice'
echo 'command is echoed twice'
command is echoed twice
I found out that setting 'comint-process-echoes to 't' workaround
this issue:
emacs
(setq comint-process-echoes t)
M-x comint-run
/bin/bash
proppy@pasokon:~$ echo 'command is echoed once'
command is echoed once
proppy@pasokon:~$ php -r 'fwrite(STDOUT, "stdout\n");'
stdout
proppy@pasokon:~$ php -r 'fwrite(STDOUT, "stdout\n");'
stdout
proppy@pasokon:~$ echo 'command is *not* echoed twice'
command is *not* echoed twice
I ran strace on php -r 'fwrite(STDOUT, "stdout\n");' to find out if
there is something strange done with the file descriptors, that might
bother comint-mode:
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7720000
_llseek(0, 0, 0xbffad494, SEEK_CUR) = -1 ESPIPE (Illegal seek)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb771f000
_llseek(1, 0, 0xbffad494, SEEK_CUR) = -1 ESPIPE (Illegal seek)
fstat64(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat64(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
_llseek(2, 0, 0xbffad494, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(1, "stdout\n", 7stdout
) = 7
close(2) = 0
close(1) = 0
munmap(0xb771f000, 4096) = 0
close(0) = 0
munmap(0xb7720000, 4096) = 0
open("/dev/urandom", O_RDONLY) = 0
read(0, "\362\233\264#", 4) = 4
close(0) = 0
open("/dev/urandom", O_RDONLY) = 0
read(0, "\314R}\32", 4) = 4
close(0) = 0
open("/dev/urandom", O_RDONLY) = 0
read(0, "=\247\332f", 4) = 4
close(0) = 0
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
munmap(0x3c4000, 29352) = 0
munmap(0xea9000, 89020) = 0
gettimeofday({1258647750, 866613}, NULL) = 0
munmap(0x3aa000, 105232) = 0
munmap(0x39e000, 47616) = 0
munmap(0xfd9000, 2054564) = 0
exit_group(0) = ?
but when trying to mimic this behaviour with a simple c program:
#include <stdio.h>
#include <fcntl.h>
int main() {
int a;
llseek(0, 0, 0, SEEK_CUR);
llseek(1, 0, 0, SEEK_CUR);
llseek(2, 0, 0, SEEK_CUR);
write(1, "stdout\n", 7);
close(2);
close(1);
close(0);
open("/dev/urandom", O_RDONLY);
read(0, "\34\256\nY", 4);
close(0);
open("/dev/urandom", O_RDONLY);
read(0, "\34\256\nY", 4);
close(0);
open("/dev/urandom", O_RDONLY);
read(0, "\34\256\nY", 4);
close(0);
return 0;
}
_llseek(0, 0, 0xbfd27570, SEEK_CUR) = -1 ESPIPE (Illegal seek)
_llseek(1, 0, 0xbfd27570, SEEK_CUR) = -1 ESPIPE (Illegal seek)
_llseek(2, 0, 0xbfd27570, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(1, "stdout\n", 7stdout
) = 7
close(2) = 0
close(1) = 0
close(0) = 0
open("/dev/urandom", O_RDONLY) = 0
read(0, 0x8048705, 4) = -1 EFAULT (Bad address)
close(0) = 0
open("/dev/urandom", O_RDONLY) = 0
read(0, 0x8048705, 4) = -1 EFAULT (Bad address)
close(0) = 0
open("/dev/urandom", O_RDONLY) = 0
read(0, 0x8048705, 4) = -1 EFAULT (Bad address)
close(0) = 0
exit_group(0) = ?
It do not trigger the issue in comint:
emacs
M-x comint-run
/bin/bash
proppy@pasokon:~$ echo 'command is echoed once'
command is echoed once
proppy@pasokon:~$ /tmp/a
stdout
proppy@pasokon:~$ echo 'command is *not* echoed twice'
command is *not* echoed twice
proppy@pasokon:~$ php -r 'fwrite(STDOUT, "stdout\n");'
stdout
proppy@pasokon:~$ echo 'command is echoed twice'
echo 'command is echoed twice'
command is echoed twice
proppy@pasokon:~$
Do you have suggestion on how to debug this issue further ?
Let me know if you need more information.
Thanks in advance.
If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
`bt full' and `xbacktrace'.
If you would like to further debug the crash, please read the file
/usr/share/emacs/23.1/etc/DEBUG for instructions.
In GNU Emacs 23.1.1 (i486-pc-linux-gnu, GTK+ Version 2.18.3)
of 2009-11-10 on vernadsky, modified by Debian
Windowing system distributor `The X.Org Foundation', version
11.0.10604000
configured using `configure '--build=i486-linux-gnu'
'--host=i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib'
'--libexecdir=/usr/lib' '--localstatedir=/var/lib'
'--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes'
'--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.1/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.1/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''
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.UTF-8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default-enable-multibyte-characters: t
Major mode: Emacs-Lisp
Minor modes in effect:
rcirc-track-minor-mode: t
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
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
M-p M-p M-p M-p M-p M-p M-n M-n <return> <prior> <next>
<prior> <down> <down> <down> C-x b <return> <up> <down>
0 , SPC <down> <left> <left> <left> 0 , SPC <down>
<left> <left> <left> 0 , SPC C-x C-s M-x c o m p i
l e <return> <return> C-x b <return> M-> M-p M-p <return>
C-x 1 <prior> <up> <up> <up> <up> C-x b <return> <up>
<up> <left> <left> <left> M-d M-d 0 <down> <left> M-d
M-d 0 <down> <left> M-d M-d 0 C-x C-s M-x c o m p i
l e <return> <return> C-x b <return> M-> M-p <return>
C-x 1 <prior> <down> <down> <down> M-> l s <return>
C-x k <return> M-x M-p M-p C-a C-g C-g M-x s h e l
l <return> <return> <return> <return> <return> M-p
M-p <return> l s <return> l s <return> l s SPC - a
l <return> C-x 1 <prior> <down> <down> <return> <return>
C-x b <return> C-x b c o <tab> <return> M-< <next>
<prior> <prior> <down-mouse-1> <mouse-movement> <mouse-movement>
<drag-mouse-1> <help-echo> <help-echo> <tool-bar> <copy>
<help-echo> M-x r e p o <tab> t <tab> <backspace> r
t <tab> <return> c o m i n t SPC C-x o C-s p r o c
e s C-x o C-x b C-g C-x b b u <tab> <return> M-< <next>
<prior> <down> <down> <up> <up> <up> <up> <up> <up>
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up>
<up> <up> <up> <up> <up> <down> <down> <down> <up>
<up> M-f M-f C-x b <return> M-x M-p M-p C-g C-g C-x
b <return> <down> <up> M-f <right> <right> C-SPC C-e
M-w M-w C-x b <return> M-x c o m <tab> i <tab> C-g
M-x r e p o <tab> <tab> t <tab> - <backspace> <backspace>
r t - e <tab> <return>
Recent messages:
call-interactively: Beginning of buffer
Making completion list...
read-buffer-to-switch: Command attempted to use minibuffer while in
minibuffer
Quit [2 times]
Mark set
Quit [2 times]
Mark set
Making completion list...
Quit
Making completion list...
--
Johan Euphrosine <proppy@aminche.com>
Development and services around Free Software
http://aminche.com/
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
next reply other threads:[~2009-11-19 16:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-19 16:40 Johan Euphrosine [this message]
2016-07-14 4:20 ` bug#4975: 23.1; comint.el: command line is sometimes echoed in the command output Andrew Hyatt
2016-07-14 6:10 ` Cyril Bouthors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1258648805.4446.1.camel@pasokon \
--to=proppy@aminche.com \
--cc=4975@emacsbugs.donarmstrong.com \
--cc=bug-gnu-emacs@gnu.org \
--cc=cyb@debian.org \
--cc=shivers@cs.cmu.edu \
--cc=simon@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.