GNU bug report logs - #51877
27.2; term: error in process filter

Previous Next

Package: emacs;

Reported by: Christopher Howard <christopher <at> librehacker.com>

Date: Mon, 15 Nov 2021 19:11:02 UTC

Severity: normal

Tags: moreinfo

Found in version 27.2

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

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 51877 in the body.
You can then email your comments to 51877 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-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Mon, 15 Nov 2021 19:11:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Christopher Howard <christopher <at> librehacker.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 15 Nov 2021 19:11:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.2; term: error in process filter
Date: Mon, 15 Nov 2021 10:10:38 -0900
Conditions: Computer with a /dev/ttyUSB0 character source which
generates
garbage output characters in the form of a long list of \371 bytes. In
my case, was connected via sterm to an ESP8266 microcontroller.

1) M-x term (leave it in char mode)
2) sterm -n /dev/ttyUSB0 -s 115200
3) cause the garbage output to be generated
4) while the cursor is still at the end of the garbage line, try to
type
in a normal character.

The character will get sent to sterm, but the echoed back character
will
not appear in the emacs terminal, and an error will appear containing
the character (see below).

Pressing enter to begin a new line will clear the error.

Perhaps this error could be duplicated by those not having my
microcontroller setup, but filling a file with some \371 or other
garbage characters, and cat'ing that file into the emacs terminal. The
issue is that garbage characters somehow confuses the process filter,
whatever that is.


In GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24,
cairo version 1.16.0)
Windowing system distributor 'The X.Org Foundation', version
11.0.12011000
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Quit
error in process filter: term-emulate-terminal: Args out of range: "F",
0, -11
error in process filter: Args out of range: "F", 0, -11
error in process filter: term-emulate-terminal: Args out of range:
"^[x", 0, -11
error in process filter: Args out of range: "^[x", 0, -11
Quit [2 times]
Making completion list... [2 times]

Configured using:
 'configure
 CONFIG_SHELL=/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-
5.0.16/bin/bash
 SHELL=/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-
5.0.16/bin/bash
 --prefix=/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-27.2
 --enable-fast-install --with-modules --with-cairo
 --disable-build-details'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS JSON PDUMPER
GMP

Important settings:
  value of $EMACSLOADPATH: /home/christopher/.guix-
profile/share/emacs/site-
lisp:/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Term

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-agenda hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-agenda
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-bbdb hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-bbdb
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-lisp hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-lisp
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-haskell hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-haskell
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-attach hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-attach
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-dot hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-dot
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-scheme hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-scheme
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-irc hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-irc
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-emacs-lisp hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-emacs-lisp
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-processing hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-processing
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-ocaml hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-ocaml
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-sql hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-sql
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-id hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-id
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-refile hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-refile
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-ctags hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-ctags
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-lilypond hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-lilypond
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-core hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-core
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-comint hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-comint
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-awk hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-awk
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-element hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-element
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-plantuml hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-plantuml
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-R hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-R
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-js hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-js
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-mobile hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-mobile
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-entities hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-entities
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-eshell hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-eshell
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-w3m hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-w3m
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-archive hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-archive
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-org hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-org
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-faces hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-faces
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-lua hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-lua
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-maxima hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-maxima
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-css hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-css
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-python hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-python
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-C hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-C
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-tempo hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-tempo
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-keys hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-keys
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-mhe hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-mhe
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-fortran hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-fortran
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-lint hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-lint
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-html hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-html
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-attach-git hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-attach-git
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-indent hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-indent
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-beamer hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-beamer
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-java hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-java
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-macs hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-macs
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-pcomplete hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-pcomplete
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-clock hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-clock
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-screen hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-screen
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-num hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-num
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-list hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-list
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-man hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-man
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-ditaa hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-ditaa
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-makefile hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-makefile
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-eww hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-eww
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-timer hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-timer
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-table hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-table
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-latex hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-latex
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-perl hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-perl
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-ascii hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-ascii
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-mouse hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-mouse
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-goto hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-goto
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-inlinetask hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-inlinetask
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-matlab hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-matlab
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-texinfo hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-texinfo
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-gnus hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-gnus
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-capture hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-capture
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-forth hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-forth
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-crypt hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-crypt
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-octave hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-octave
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-bibtex hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-bibtex
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-publish hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-publish
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-sed hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-sed
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-src hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-src
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-duration hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-duration
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-feed hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-feed
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-sass hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-sass
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-plot hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-plot
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-exp hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-exp
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-latex hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-latex
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-eval hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-eval
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-colview hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-colview
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-icalendar hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-icalendar
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-version hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-version
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-rmail hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-rmail
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-calc hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-calc
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-clojure hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-clojure
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-datetree hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-datetree
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-sqlite hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-sqlite
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-lob hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-lob
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-ref hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-ref
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-footnote hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-footnote
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-md hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-md
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-tangle hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-tangle
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-compat hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-compat
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-org hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-org
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-gnuplot hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-gnuplot
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-info hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-info
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-loaddefs hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-loaddefs
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-shell hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-shell
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-protocol hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-protocol
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-macro hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-macro
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-habit hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-habit
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ol-docview hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ol-docview
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-ruby hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-ruby
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ox-odt hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ox-odt
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-groovy hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-groovy
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/org-table hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/org-table
/gnu/store/qhqhlclxnqsxazs88wrmqz2vi5abcgm0-emacs-org-
9.5/share/emacs/site-lisp/org-9.5/ob-eshell hides
/gnu/store/ymvcv4shwva26r3k9mxh5d38hsbrygpb-emacs-
27.2/share/emacs/27.2/lisp/org/ob-eshell

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml mml-sec password-cache epa derived epg epg-
config
gnus-util rmail rmail-loaddefs text-property-search time-date subr-x
seq
byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils term
disp-table easymenu comint ansi-color ehelp ring tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-
readable
backquote threads dbusbind inotify dynamic-setting system-font-setting
font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 50626 7205)
 (symbols 48 6693 1)
 (strings 32 17512 1398)
 (string-bytes 1 618078)
 (vectors 16 10663)
 (vector-slots 8 138277 11008)
 (floats 8 20 39)
 (intervals 56 352 7)
 (buffers 1000 13))
-- 
Christopher Howard
Gemini capsule: gemini://gem.librehacker.com
Web viewer: https://portal.mozz.us/gemini/gem.librehacker.com







Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Mon, 15 Nov 2021 19:15:02 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: 27.2; term: error in process filter
Date: Mon, 15 Nov 2021 10:14:04 -0900
I simply wanted to add that the garbage character was \377, not \371,
in case that makes a difference.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Mon, 15 Nov 2021 19:21:01 GMT) Full text and rfc822 format available.

Message #11 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Mon, 15 Nov 2021 21:19:54 +0200
> From: Christopher Howard <christopher <at> librehacker.com>
> Date: Mon, 15 Nov 2021 10:10:38 -0900
> 
> Conditions: Computer with a /dev/ttyUSB0 character source which
> generates
> garbage output characters in the form of a long list of \371 bytes. In
> my case, was connected via sterm to an ESP8266 microcontroller.
> 
> 1) M-x term (leave it in char mode)
> 2) sterm -n /dev/ttyUSB0 -s 115200
> 3) cause the garbage output to be generated
> 4) while the cursor is still at the end of the garbage line, try to
> type
> in a normal character.
> 
> The character will get sent to sterm, but the echoed back character
> will
> not appear in the emacs terminal, and an error will appear containing
> the character (see below).
> 
> Pressing enter to begin a new line will clear the error.
> 
> Perhaps this error could be duplicated by those not having my
> microcontroller setup, but filling a file with some \371 or other
> garbage characters, and cat'ing that file into the emacs terminal. The
> issue is that garbage characters somehow confuses the process filter,
> whatever that is.

What is the value of process-coding-system in this case?  If a process
generates binary garbage, its output should be decoded as raw-text,
whereas the Emacs defaults are set for a program which sends
human-readable text.  So Emacs tries to decode your garbage as if it
were UTF-8, and chokes.

IOW, I think this is a cockpit error.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Mon, 15 Nov 2021 19:34:01 GMT) Full text and rfc822 format available.

Message #14 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Mon, 15 Nov 2021 10:33:07 -0900
Thank you, I used `set-terminal-coding-system' to set it to raw mode,
and the error went away.

I am used to Gnome-terminal, where garbage unicode is outputted as the
unicode replacement character (0xfffd, the diamond with the question
mark) and there are no other errors reported, or disruptions in the
output. I am not sure what is best for Emacs, but I should think that
at least some kind of exception handling or better error message would
be appropriate.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Mon, 15 Nov 2021 22:38:01 GMT) Full text and rfc822 format available.

Message #17 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Mon, 15 Nov 2021 13:36:52 -0900
With further testing, I see that setting the terminal encoding to raw-
text does not always fix the problem - often I still get the error.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Tue, 16 Nov 2021 03:25:02 GMT) Full text and rfc822 format available.

Message #20 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Tue, 16 Nov 2021 05:23:56 +0200
> From: Christopher Howard <christopher <at> librehacker.com>
> Cc: 51877 <at> debbugs.gnu.org
> Date: Mon, 15 Nov 2021 13:36:52 -0900
> 
> With further testing, I see that setting the terminal encoding to raw-
> text does not always fix the problem - often I still get the error.

Then please set debug-on-error to a non-nil value and post the
backtrace from such errors.

Thanks.




Added tag(s) moreinfo. Request was from Stefan Kangas <stefan <at> marxist.se> to control <at> debbugs.gnu.org. (Fri, 03 Dec 2021 01:28:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Sat, 15 Jan 2022 13:13:02 GMT) Full text and rfc822 format available.

Message #25 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Christopher Howard <christopher <at> librehacker.com>, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Sat, 15 Jan 2022 14:12:11 +0100
Eli Zaretskii <eliz <at> gnu.org> writes:

>> With further testing, I see that setting the terminal encoding to raw-
>> text does not always fix the problem - often I still get the error.
>
> Then please set debug-on-error to a non-nil value and post the
> backtrace from such errors.

This was two months ago -- Christopher, have you tried this?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Sun, 16 Jan 2022 06:15:02 GMT) Full text and rfc822 format available.

Message #28 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Sat, 15 Jan 2022 21:14:01 -0900
I can't remember now, to be honest, but can try it on Monday.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Mon, 17 Jan 2022 19:31:02 GMT) Full text and rfc822 format available.

Message #31 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Mon, 17 Jan 2022 10:30:32 -0900
Here is the debugger output:

```
Debugger entered--Lisp error: (args-out-of-range "l \3\220\33\22no\4\216s$" 0 -52)
  substring("l \3\220\33\22no\4\216s$" 0 -52)
  term-emulate-terminal(#<process terminal> "l\0l\234\276\217\2\214#\3\342n\4\f\f\204\fd\344\f#|\217\202\237\354\22\223r\222#\204\fc\204\373on\276\0$no\334\342\344\4b\34p...")
```

This is with the encoding set to raw-text and with the terminal set to char mode.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Thu, 20 Jan 2022 09:41:01 GMT) Full text and rfc822 format available.

Message #34 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Thu, 20 Jan 2022 10:39:59 +0100
Christopher Howard <christopher <at> librehacker.com> writes:

> Here is the debugger output:
>
> ```
> Debugger entered--Lisp error: (args-out-of-range "l
> \3\220\33\22no\4\216s$" 0 -52)
>   substring("l \3\220\33\22no\4\216s$" 0 -52)
>   term-emulate-terminal(#<process terminal>
> "l\0l\234\276\217\2\214#\3\342n\4\f\f\204\fd\344\f#|\217\202\237\354\22\223r\222#\204\fc\204\373on\276\0$no\334\342\344\4b\34p...")
> ```
>
> This is with the encoding set to raw-text and with the terminal set to
> char mode.

Thanks.  There have been a number of fixes in this function to handle
ANSI sequences and the like since Emacs 27.2, and it's possible that
this has been fixed as a result, too.  Would it be possible for you to
build the development version of Emacs and check whether this problem is
still present there?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Thu, 20 Jan 2022 17:41:01 GMT) Full text and rfc822 format available.

Message #37 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Thu, 20 Jan 2022 08:39:47 -0900
The package emacs-next-28.0.50-0.2ea3466 is available in my current checkout of Guix. I seem to get the same results:

```
Debugger entered--Lisp error: (args-out-of-range "$ \2\220\22\33nN\4\216" 0 -42)
  term-emulate-terminal(#<process terminal> "l\0l\234\236|\0\214l\340|\2\f\f\f\204\4l\354\4#|\216\203\3\344\22\262\337|\33b\204\fb\214\362oo\337lNo\234\343\344\f#\34p...")
```

Is that new enough?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Thu, 20 Jan 2022 17:47:01 GMT) Full text and rfc822 format available.

Message #40 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Thu, 20 Jan 2022 18:46:12 +0100
Christopher Howard <christopher <at> librehacker.com> writes:

> The package emacs-next-28.0.50-0.2ea3466 is available in my current
> checkout of Guix. I seem to get the same results:
>
> ```
> Debugger entered--Lisp error: (args-out-of-range "$ \2\220\22\33nN\4\216" 0 -42)
>   term-emulate-terminal(#<process terminal>
> "l\0l\234\236|\0\214l\340|\2\f\f\f\204\4l\354\4#|\216\203\3\344\22\262\337|\33b\204\fb\214\362oo\337lNo\234\343\344\f#\34p...")
> ```
>
> Is that new enough?

Yes, thanks for checking -- then this means that those ANSI-related
fixed in that function didn't fix this issue.  I'll try to reproduce
myself...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Thu, 20 Jan 2022 17:55:02 GMT) Full text and rfc822 format available.

Message #43 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: larsi <at> gnus.org, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Thu, 20 Jan 2022 19:54:46 +0200
> Date: Thu, 20 Jan 2022 08:39:47 -0900
> From: Christopher Howard <christopher <at> librehacker.com>
> Cc: Eli Zaretskii <eliz <at> gnu.org>, 51877 <at> debbugs.gnu.org
> 
> The package emacs-next-28.0.50-0.2ea3466 is available in my current checkout of Guix. I seem to get the same results:
> 
> ```
> Debugger entered--Lisp error: (args-out-of-range "$ \2\220\22\33nN\4\216" 0 -42)
>   term-emulate-terminal(#<process terminal> "l\0l\234\236|\0\214l\340|\2\f\f\f\204\4l\354\4#|\216\203\3\344\22\262\337|\33b\204\fb\214\362oo\337lNo\234\343\344\f#\34p...")
> ```
> 
> Is that new enough?

No, that is from 1.5 years ago.

Can you tell how you set the encoding to raw-text?  I see that the
process filter function which barfs use locale-coding-system to decode
the process output -- did you change that to use 'raw-text' by
modifying the code of term.el?  If not, what did you do?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Thu, 20 Jan 2022 19:07:02 GMT) Full text and rfc822 format available.

Message #46 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: larsi <at> gnus.org, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Thu, 20 Jan 2022 10:06:04 -0900
switch temporarily to line mode (using the mouse menu)
M-x set-terminal-coding-system raw-text




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Thu, 20 Jan 2022 20:03:02 GMT) Full text and rfc822 format available.

Message #49 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: larsi <at> gnus.org, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Thu, 20 Jan 2022 22:02:10 +0200
> X-Spam-Status: No, score=-1.9 tagged_above=-10 required=5
> 	tests=[BAYES_00=-1.9] autolearn=ham autolearn_force=no
> Date: Thu, 20 Jan 2022 10:06:04 -0900
> From: Christopher Howard <christopher <at> librehacker.com>
> Cc: larsi <at> gnus.org, 51877 <at> debbugs.gnu.org
> 
> switch temporarily to line mode (using the mouse menu)
> M-x set-terminal-coding-system raw-text

I don't think this would help.  Can you manually modify the function
term-emulate-terminal to use 'raw-text instead of
locale-coding-system, and then re-run the scenario in which you get
these problems?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Thu, 20 Jan 2022 22:02:02 GMT) Full text and rfc822 format available.

Message #52 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: larsi <at> gnus.org, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Thu, 20 Jan 2022 13:01:12 -0900
On Thu, Jan 20, 2022 at 10:02:10PM +0200, Eli Zaretskii wrote:
> I don't think this would help.  Can you manually modify the function
> term-emulate-terminal to use 'raw-text instead of
> locale-coding-system, and then re-run the scenario in which you get
> these problems?

This seems to generate the same result, except with more elaborate debugger output:

```
Debugger entered--Lisp error: (args-out-of-range "l \3\220\0332Nn\f\217" 0 -48)
  substring("l \3\220\0332Nn\f\217" 0 -48)
  (insert (substring decoded-substring 0 (- term-width old-column)))
  (while (> (+ (length decoded-substring) old-column) term-width) (insert (substring decoded-substring 0 (- term-width old-column))) (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- (term-current-column))) (add-text-properties (1- (point)) (point) '(term-line-wrap t rear-nonsticky t)) (setq decoded-substring (substring decoded-substring (- term-width old-column))) (setq old-column 0))
  (if term-suppress-hard-newline nil (while (> (+ (length decoded-substring) old-column) term-width) (insert (substring decoded-substring 0 (- term-width old-column))) (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- (term-current-column))) (add-text-properties (1- (point)) (point) '(term-line-wrap t rear-nonsticky t)) (setq decoded-substring (substring decoded-substring (- term-width old-column))) (setq old-column 0)))
  (let ((old-column (term-horizontal-column)) (old-point (point)) columns) (if term-suppress-hard-newline nil (while (> (+ (length decoded-substring) old-column) term-width) (insert (substring decoded-substring 0 (- term-width old-column))) (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- (term-current-column))) (add-text-properties (1- (point)) (point) '(term-line-wrap t rear-nonsticky t)) (setq decoded-substring (substring decoded-substring (- term-width old-column))) (setq old-column 0))) (insert decoded-substring) (setq term-current-column (current-column) columns (- term-current-column old-column)) (if (not (or (eobp) term-insert-mode)) (progn (let ((pos (point))) (term-move-columns columns) (delete-region pos (point)) (setq term-current-column nil)))) (if term-insert-mode (progn (let ((pos (point))) (end-of-line) (if (> (current-column) term-width) (progn (delete-region (- ... ...) (point)))) (goto-char pos)))) (put-text-property old-point (point) 'font-lock-face term-current-face))
  (progn (if term-do-line-wrapping (progn (term-down 1 t) (term-move-to-column 0) (setq term-do-line-wrapping nil))) (setq decoded-substring (decode-coding-string (substring str i funny) 'raw-text t)) (if (= funny str-length) (progn (let ((partial 0) (count (length decoded-substring))) (while (and (< partial count) (eq (char-charset ...) 'eight-bit)) (setq partial (1+ partial))) (if (> count partial 0) (progn (setq term-terminal-undecoded-bytes (substring decoded-substring ...)) (setq decoded-substring (substring decoded-substring 0 ...)) (setq str-length (- str-length partial)) (setq funny (- funny partial))))))) (let ((old-column (term-horizontal-column)) (old-point (point)) columns) (if term-suppress-hard-newline nil (while (> (+ (length decoded-substring) old-column) term-width) (insert (substring decoded-substring 0 (- term-width old-column))) (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- (term-current-column))) (add-text-properties (1- (point)) (point) '(term-line-wrap t rear-nonsticky t)) (setq decoded-substring (substring decoded-substring (- term-width old-column))) (setq old-column 0))) (insert decoded-substring) (setq term-current-column (current-column) columns (- term-current-column old-column)) (if (not (or (eobp) term-insert-mode)) (progn (let ((pos (point))) (term-move-columns columns) (delete-region pos (point)) (setq term-current-column nil)))) (if term-insert-mode (progn (let ((pos (point))) (end-of-line) (if (> (current-column) term-width) (progn (delete-region ... ...))) (goto-char pos)))) (put-text-property old-point (point) 'font-lock-face term-current-face)) (if (eq (term-current-column) term-width) (progn (term-move-columns -1) (setq term-do-line-wrapping (point)))) (setq term-current-column nil) (setq i funny))
  (if (> funny i) (progn (if term-do-line-wrapping (progn (term-down 1 t) (term-move-to-column 0) (setq term-do-line-wrapping nil))) (setq decoded-substring (decode-coding-string (substring str i funny) 'raw-text t)) (if (= funny str-length) (progn (let ((partial 0) (count (length decoded-substring))) (while (and (< partial count) (eq ... ...)) (setq partial (1+ partial))) (if (> count partial 0) (progn (setq term-terminal-undecoded-bytes ...) (setq decoded-substring ...) (setq str-length ...) (setq funny ...)))))) (let ((old-column (term-horizontal-column)) (old-point (point)) columns) (if term-suppress-hard-newline nil (while (> (+ (length decoded-substring) old-column) term-width) (insert (substring decoded-substring 0 (- term-width old-column))) (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- (term-current-column))) (add-text-properties (1- (point)) (point) '(term-line-wrap t rear-nonsticky t)) (setq decoded-substring (substring decoded-substring (- term-width old-column))) (setq old-column 0))) (insert decoded-substring) (setq term-current-column (current-column) columns (- term-current-column old-column)) (if (not (or (eobp) term-insert-mode)) (progn (let ((pos ...)) (term-move-columns columns) (delete-region pos (point)) (setq term-current-column nil)))) (if term-insert-mode (progn (let ((pos ...)) (end-of-line) (if (> ... term-width) (progn ...)) (goto-char pos)))) (put-text-property old-point (point) 'font-lock-face term-current-face)) (if (eq (term-current-column) term-width) (progn (term-move-columns -1) (setq term-do-line-wrapping (point)))) (setq term-current-column nil) (setq i funny)))
  (let ((ctl-params (and funny (match-string 1 str))) (ctl-params-end (and funny (match-end 1))) (ctl-end (if funny (match-end 0) (setq funny (string-match term-control-seq-prefix-regexp str i)) (if funny (setq term-terminal-undecoded-bytes (substring str funny)) (setq funny str-length)) (1+ str-length)))) (if (> funny i) (progn (if term-do-line-wrapping (progn (term-down 1 t) (term-move-to-column 0) (setq term-do-line-wrapping nil))) (setq decoded-substring (decode-coding-string (substring str i funny) 'raw-text t)) (if (= funny str-length) (progn (let ((partial 0) (count ...)) (while (and ... ...) (setq partial ...)) (if (> count partial 0) (progn ... ... ... ...))))) (let ((old-column (term-horizontal-column)) (old-point (point)) columns) (if term-suppress-hard-newline nil (while (> (+ ... old-column) term-width) (insert (substring decoded-substring 0 ...)) (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- ...)) (add-text-properties (1- ...) (point) '...) (setq decoded-substring (substring decoded-substring ...)) (setq old-column 0))) (insert decoded-substring) (setq term-current-column (current-column) columns (- term-current-column old-column)) (if (not (or (eobp) term-insert-mode)) (progn (let (...) (term-move-columns columns) (delete-region pos ...) (setq term-current-column nil)))) (if term-insert-mode (progn (let (...) (end-of-line) (if ... ...) (goto-char pos)))) (put-text-property old-point (point) 'font-lock-face term-current-face)) (if (eq (term-current-column) term-width) (progn (term-move-columns -1) (setq term-do-line-wrapping (point)))) (setq term-current-column nil) (setq i funny))) (let* ((val (and (<= ctl-end str-length) (aref str i)))) (cond ((eql val 9) (let ((col (term-current-column))) (term-move-to-column (min (1- term-width) (+ col 8 ...))))) ((eql val 13) (funcall term-vertical-motion 0) (setq term-current-column term-start-line-column)) ((eql val 10) (if (and term-kill-echo-list (term-check-kill-echo-list)) nil (term-down 1 t))) ((eql val 8) (term-move-columns -1)) ((eql val 7) (beep t)) ((eql val 26) (funcall term-command-function (decode-coding-string (substring str (1+ i) (- ctl-end ...)) locale-coding-system t))) ((eql val 27) (let* ((val (aref str ...))) (cond ((eql val 91) (if ... ...)) ((eql val 68) (term-handle-deferred-scroll) (term-down 1 t)) ((eql val 77) (if ... ... ...)) ((eql val 55) (term-handle-deferred-scroll) (setq term-saved-cursor ...)) ((eql val 56) (if term-saved-cursor ...)) ((eql val 99) (term-reset-terminal)) ((eql val 65) (term-handle-ansi-terminal-messages ...)) (t nil)))) ((memql val '(nil 15 14 0)) nil) (t (let ((x0 val)) (error "No clause matching `%S'" x0))))) (if (eq term-do-line-wrapping (point)) nil (setq term-do-line-wrapping nil)) (if term-pager-old-local-map (progn (if (> (% (current-column) term-width) 0) (setq term-terminal-undecoded-bytes (substring str i)) (if (= 0 i) (setq term-terminal-undecoded-bytes (concat "\15" (substring str i))) (setq term-terminal-undecoded-bytes (substring str (1- i))) (aset term-terminal-undecoded-bytes 0 13)) (goto-char (point-max))) (make-local-variable 'term-pager-old-filter) (setq term-pager-old-filter (process-filter proc)) (set-process-filter proc term-pager-filter) (setq i str-length)) (setq i ctl-end)))
  (while (< i str-length) (setq funny (string-match term-control-seq-regexp str i)) (let ((ctl-params (and funny (match-string 1 str))) (ctl-params-end (and funny (match-end 1))) (ctl-end (if funny (match-end 0) (setq funny (string-match term-control-seq-prefix-regexp str i)) (if funny (setq term-terminal-undecoded-bytes (substring str funny)) (setq funny str-length)) (1+ str-length)))) (if (> funny i) (progn (if term-do-line-wrapping (progn (term-down 1 t) (term-move-to-column 0) (setq term-do-line-wrapping nil))) (setq decoded-substring (decode-coding-string (substring str i funny) 'raw-text t)) (if (= funny str-length) (progn (let (... ...) (while ... ...) (if ... ...)))) (let ((old-column (term-horizontal-column)) (old-point (point)) columns) (if term-suppress-hard-newline nil (while (> ... term-width) (insert ...) (delete-region ... ...) (term-down 1 t) (term-move-columns ...) (add-text-properties ... ... ...) (setq decoded-substring ...) (setq old-column 0))) (insert decoded-substring) (setq term-current-column (current-column) columns (- term-current-column old-column)) (if (not (or ... term-insert-mode)) (progn (let ... ... ... ...))) (if term-insert-mode (progn (let ... ... ... ...))) (put-text-property old-point (point) 'font-lock-face term-current-face)) (if (eq (term-current-column) term-width) (progn (term-move-columns -1) (setq term-do-line-wrapping (point)))) (setq term-current-column nil) (setq i funny))) (let* ((val (and (<= ctl-end str-length) (aref str i)))) (cond ((eql val 9) (let ((col ...)) (term-move-to-column (min ... ...)))) ((eql val 13) (funcall term-vertical-motion 0) (setq term-current-column term-start-line-column)) ((eql val 10) (if (and term-kill-echo-list (term-check-kill-echo-list)) nil (term-down 1 t))) ((eql val 8) (term-move-columns -1)) ((eql val 7) (beep t)) ((eql val 26) (funcall term-command-function (decode-coding-string (substring str ... ...) locale-coding-system t))) ((eql val 27) (let* ((val ...)) (cond (... ...) (... ... ...) (... ...) (... ... ...) (... ...) (... ...) (... ...) (t nil)))) ((memql val '(nil 15 14 0)) nil) (t (let ((x0 val)) (error "No clause matching `%S'" x0))))) (if (eq term-do-line-wrapping (point)) nil (setq term-do-line-wrapping nil)) (if term-pager-old-local-map (progn (if (> (% (current-column) term-width) 0) (setq term-terminal-undecoded-bytes (substring str i)) (if (= 0 i) (setq term-terminal-undecoded-bytes (concat "\15" ...)) (setq term-terminal-undecoded-bytes (substring str ...)) (aset term-terminal-undecoded-bytes 0 13)) (goto-char (point-max))) (make-local-variable 'term-pager-old-filter) (setq term-pager-old-filter (process-filter proc)) (set-process-filter proc term-pager-filter) (setq i str-length)) (setq i ctl-end))))
  (save-restriction (if (and (> (point-max) (process-mark proc)) (not (eq (current-local-map) term-raw-map))) (progn (narrow-to-region (point-min) (process-mark proc)))) (if term-log-buffer (progn (princ str term-log-buffer))) (if term-terminal-undecoded-bytes (progn (setq str (concat term-terminal-undecoded-bytes str)) (setq str-length (length str)) (setq term-terminal-undecoded-bytes nil))) (while (< i str-length) (setq funny (string-match term-control-seq-regexp str i)) (let ((ctl-params (and funny (match-string 1 str))) (ctl-params-end (and funny (match-end 1))) (ctl-end (if funny (match-end 0) (setq funny (string-match term-control-seq-prefix-regexp str i)) (if funny (setq term-terminal-undecoded-bytes ...) (setq funny str-length)) (1+ str-length)))) (if (> funny i) (progn (if term-do-line-wrapping (progn (term-down 1 t) (term-move-to-column 0) (setq term-do-line-wrapping nil))) (setq decoded-substring (decode-coding-string (substring str i funny) 'raw-text t)) (if (= funny str-length) (progn (let ... ... ...))) (let ((old-column ...) (old-point ...) columns) (if term-suppress-hard-newline nil (while ... ... ... ... ... ... ... ...)) (insert decoded-substring) (setq term-current-column (current-column) columns (- term-current-column old-column)) (if (not ...) (progn ...)) (if term-insert-mode (progn ...)) (put-text-property old-point (point) 'font-lock-face term-current-face)) (if (eq (term-current-column) term-width) (progn (term-move-columns -1) (setq term-do-line-wrapping ...))) (setq term-current-column nil) (setq i funny))) (let* ((val (and (<= ctl-end str-length) (aref str i)))) (cond ((eql val 9) (let (...) (term-move-to-column ...))) ((eql val 13) (funcall term-vertical-motion 0) (setq term-current-column term-start-line-column)) ((eql val 10) (if (and term-kill-echo-list ...) nil (term-down 1 t))) ((eql val 8) (term-move-columns -1)) ((eql val 7) (beep t)) ((eql val 26) (funcall term-command-function (decode-coding-string ... locale-coding-system t))) ((eql val 27) (let* (...) (cond ... ... ... ... ... ... ... ...))) ((memql val '...) nil) (t (let (...) (error "No clause matching `%S'" x0))))) (if (eq term-do-line-wrapping (point)) nil (setq term-do-line-wrapping nil)) (if term-pager-old-local-map (progn (if (> (% ... term-width) 0) (setq term-terminal-undecoded-bytes (substring str i)) (if (= 0 i) (setq term-terminal-undecoded-bytes ...) (setq term-terminal-undecoded-bytes ...) (aset term-terminal-undecoded-bytes 0 13)) (goto-char (point-max))) (make-local-variable 'term-pager-old-filter) (setq term-pager-old-filter (process-filter proc)) (set-process-filter proc term-pager-filter) (setq i str-length)) (setq i ctl-end)))))
  (progn (if (marker-buffer term-pending-delete-marker) (progn (delete-region term-pending-delete-marker (process-mark proc)) (set-marker term-pending-delete-marker nil))) (if (/= (point) (process-mark proc)) (progn (setq save-point (point-marker)))) (setq term-vertical-motion (if (eq (window-buffer) (current-buffer)) 'vertical-motion 'term-buffer-vertical-motion)) (setq save-marker (copy-marker (process-mark proc))) (goto-char (process-mark proc)) (save-restriction (if (and (> (point-max) (process-mark proc)) (not (eq (current-local-map) term-raw-map))) (progn (narrow-to-region (point-min) (process-mark proc)))) (if term-log-buffer (progn (princ str term-log-buffer))) (if term-terminal-undecoded-bytes (progn (setq str (concat term-terminal-undecoded-bytes str)) (setq str-length (length str)) (setq term-terminal-undecoded-bytes nil))) (while (< i str-length) (setq funny (string-match term-control-seq-regexp str i)) (let ((ctl-params (and funny (match-string 1 str))) (ctl-params-end (and funny (match-end 1))) (ctl-end (if funny (match-end 0) (setq funny ...) (if funny ... ...) (1+ str-length)))) (if (> funny i) (progn (if term-do-line-wrapping (progn ... ... ...)) (setq decoded-substring (decode-coding-string ... ... t)) (if (= funny str-length) (progn ...)) (let (... ... columns) (if term-suppress-hard-newline nil ...) (insert decoded-substring) (setq term-current-column ... columns ...) (if ... ...) (if term-insert-mode ...) (put-text-property old-point ... ... term-current-face)) (if (eq ... term-width) (progn ... ...)) (setq term-current-column nil) (setq i funny))) (let* ((val (and ... ...))) (cond ((eql val 9) (let ... ...)) ((eql val 13) (funcall term-vertical-motion 0) (setq term-current-column term-start-line-column)) ((eql val 10) (if ... nil ...)) ((eql val 8) (term-move-columns -1)) ((eql val 7) (beep t)) ((eql val 26) (funcall term-command-function ...)) ((eql val 27) (let* ... ...)) ((memql val ...) nil) (t (let ... ...)))) (if (eq term-do-line-wrapping (point)) nil (setq term-do-line-wrapping nil)) (if term-pager-old-local-map (progn (if (> ... 0) (setq term-terminal-undecoded-bytes ...) (if ... ... ... ...) (goto-char ...)) (make-local-variable 'term-pager-old-filter) (setq term-pager-old-filter (process-filter proc)) (set-process-filter proc term-pager-filter) (setq i str-length)) (setq i ctl-end))))) (if (>= (term-current-row) term-height) (progn (term-handle-deferred-scroll))) (set-marker (process-mark proc) (point)) (if (stringp decoded-substring) (progn (term-watch-for-password-prompt decoded-substring))) (if save-point (progn (goto-char save-point) (set-marker save-point nil))) (if (and term-pending-frame (eq (window-buffer selected) (current-buffer))) (progn (term-display-line (car term-pending-frame) (cdr term-pending-frame)) (setq term-pending-frame nil))) (setq win selected) (while (window-minibuffer-p win) (setq win (next-window win nil t))) (setq last-win win) (while (progn (setq win (next-window win nil t)) (if (eq (window-buffer win) (process-buffer proc)) (progn (let ((scroll term-scroll-to-bottom-on-output)) (select-window win) (if (or ... ... ... ... ...) (progn ... ... ... ...)) (if (and term-scroll-show-maximum-output ...) (progn ...))))) (not (eq win last-win)))) (if (> term-buffer-maximum-size 0) (progn (save-excursion (goto-char (process-mark (get-buffer-process (current-buffer)))) (forward-line (- term-buffer-maximum-size)) (beginning-of-line) (delete-region (point-min) (point))))) (set-marker save-marker nil))
  (unwind-protect (progn (if (marker-buffer term-pending-delete-marker) (progn (delete-region term-pending-delete-marker (process-mark proc)) (set-marker term-pending-delete-marker nil))) (if (/= (point) (process-mark proc)) (progn (setq save-point (point-marker)))) (setq term-vertical-motion (if (eq (window-buffer) (current-buffer)) 'vertical-motion 'term-buffer-vertical-motion)) (setq save-marker (copy-marker (process-mark proc))) (goto-char (process-mark proc)) (save-restriction (if (and (> (point-max) (process-mark proc)) (not (eq (current-local-map) term-raw-map))) (progn (narrow-to-region (point-min) (process-mark proc)))) (if term-log-buffer (progn (princ str term-log-buffer))) (if term-terminal-undecoded-bytes (progn (setq str (concat term-terminal-undecoded-bytes str)) (setq str-length (length str)) (setq term-terminal-undecoded-bytes nil))) (while (< i str-length) (setq funny (string-match term-control-seq-regexp str i)) (let ((ctl-params (and funny ...)) (ctl-params-end (and funny ...)) (ctl-end (if funny ... ... ... ...))) (if (> funny i) (progn (if term-do-line-wrapping ...) (setq decoded-substring ...) (if ... ...) (let ... ... ... ... ... ... ...) (if ... ...) (setq term-current-column nil) (setq i funny))) (let* ((val ...)) (cond (... ...) (... ... ...) (... ...) (... ...) (... ...) (... ...) (... ...) (... nil) (t ...))) (if (eq term-do-line-wrapping (point)) nil (setq term-do-line-wrapping nil)) (if term-pager-old-local-map (progn (if ... ... ... ...) (make-local-variable ...) (setq term-pager-old-filter ...) (set-process-filter proc term-pager-filter) (setq i str-length)) (setq i ctl-end))))) (if (>= (term-current-row) term-height) (progn (term-handle-deferred-scroll))) (set-marker (process-mark proc) (point)) (if (stringp decoded-substring) (progn (term-watch-for-password-prompt decoded-substring))) (if save-point (progn (goto-char save-point) (set-marker save-point nil))) (if (and term-pending-frame (eq (window-buffer selected) (current-buffer))) (progn (term-display-line (car term-pending-frame) (cdr term-pending-frame)) (setq term-pending-frame nil))) (setq win selected) (while (window-minibuffer-p win) (setq win (next-window win nil t))) (setq last-win win) (while (progn (setq win (next-window win nil t)) (if (eq (window-buffer win) (process-buffer proc)) (progn (let (...) (select-window win) (if ... ...) (if ... ...)))) (not (eq win last-win)))) (if (> term-buffer-maximum-size 0) (progn (save-excursion (goto-char (process-mark (get-buffer-process ...))) (forward-line (- term-buffer-maximum-size)) (beginning-of-line) (delete-region (point-min) (point))))) (set-marker save-marker nil)) (internal--after-save-selected-window save-selected-window--state))
  (save-current-buffer (unwind-protect (progn (if (marker-buffer term-pending-delete-marker) (progn (delete-region term-pending-delete-marker (process-mark proc)) (set-marker term-pending-delete-marker nil))) (if (/= (point) (process-mark proc)) (progn (setq save-point (point-marker)))) (setq term-vertical-motion (if (eq (window-buffer) (current-buffer)) 'vertical-motion 'term-buffer-vertical-motion)) (setq save-marker (copy-marker (process-mark proc))) (goto-char (process-mark proc)) (save-restriction (if (and (> (point-max) (process-mark proc)) (not (eq ... term-raw-map))) (progn (narrow-to-region (point-min) (process-mark proc)))) (if term-log-buffer (progn (princ str term-log-buffer))) (if term-terminal-undecoded-bytes (progn (setq str (concat term-terminal-undecoded-bytes str)) (setq str-length (length str)) (setq term-terminal-undecoded-bytes nil))) (while (< i str-length) (setq funny (string-match term-control-seq-regexp str i)) (let ((ctl-params ...) (ctl-params-end ...) (ctl-end ...)) (if (> funny i) (progn ... ... ... ... ... ... ...)) (let* (...) (cond ... ... ... ... ... ... ... ... ...)) (if (eq term-do-line-wrapping ...) nil (setq term-do-line-wrapping nil)) (if term-pager-old-local-map (progn ... ... ... ... ...) (setq i ctl-end))))) (if (>= (term-current-row) term-height) (progn (term-handle-deferred-scroll))) (set-marker (process-mark proc) (point)) (if (stringp decoded-substring) (progn (term-watch-for-password-prompt decoded-substring))) (if save-point (progn (goto-char save-point) (set-marker save-point nil))) (if (and term-pending-frame (eq (window-buffer selected) (current-buffer))) (progn (term-display-line (car term-pending-frame) (cdr term-pending-frame)) (setq term-pending-frame nil))) (setq win selected) (while (window-minibuffer-p win) (setq win (next-window win nil t))) (setq last-win win) (while (progn (setq win (next-window win nil t)) (if (eq (window-buffer win) (process-buffer proc)) (progn (let ... ... ... ...))) (not (eq win last-win)))) (if (> term-buffer-maximum-size 0) (progn (save-excursion (goto-char (process-mark ...)) (forward-line (- term-buffer-maximum-size)) (beginning-of-line) (delete-region (point-min) (point))))) (set-marker save-marker nil)) (internal--after-save-selected-window save-selected-window--state)))
  (let ((save-selected-window--state (internal--before-save-selected-window))) (save-current-buffer (unwind-protect (progn (if (marker-buffer term-pending-delete-marker) (progn (delete-region term-pending-delete-marker (process-mark proc)) (set-marker term-pending-delete-marker nil))) (if (/= (point) (process-mark proc)) (progn (setq save-point (point-marker)))) (setq term-vertical-motion (if (eq (window-buffer) (current-buffer)) 'vertical-motion 'term-buffer-vertical-motion)) (setq save-marker (copy-marker (process-mark proc))) (goto-char (process-mark proc)) (save-restriction (if (and (> ... ...) (not ...)) (progn (narrow-to-region ... ...))) (if term-log-buffer (progn (princ str term-log-buffer))) (if term-terminal-undecoded-bytes (progn (setq str ...) (setq str-length ...) (setq term-terminal-undecoded-bytes nil))) (while (< i str-length) (setq funny (string-match term-control-seq-regexp str i)) (let (... ... ...) (if ... ...) (let* ... ...) (if ... nil ...) (if term-pager-old-local-map ... ...)))) (if (>= (term-current-row) term-height) (progn (term-handle-deferred-scroll))) (set-marker (process-mark proc) (point)) (if (stringp decoded-substring) (progn (term-watch-for-password-prompt decoded-substring))) (if save-point (progn (goto-char save-point) (set-marker save-point nil))) (if (and term-pending-frame (eq (window-buffer selected) (current-buffer))) (progn (term-display-line (car term-pending-frame) (cdr term-pending-frame)) (setq term-pending-frame nil))) (setq win selected) (while (window-minibuffer-p win) (setq win (next-window win nil t))) (setq last-win win) (while (progn (setq win (next-window win nil t)) (if (eq ... ...) (progn ...)) (not (eq win last-win)))) (if (> term-buffer-maximum-size 0) (progn (save-excursion (goto-char ...) (forward-line ...) (beginning-of-line) (delete-region ... ...)))) (set-marker save-marker nil)) (internal--after-save-selected-window save-selected-window--state))))
  (let* ((i 0) funny decoded-substring save-point save-marker win (inhibit-read-only t) (buffer-undo-list t) (selected (selected-window)) last-win (str-length (length str))) (let ((save-selected-window--state (internal--before-save-selected-window))) (save-current-buffer (unwind-protect (progn (if (marker-buffer term-pending-delete-marker) (progn (delete-region term-pending-delete-marker ...) (set-marker term-pending-delete-marker nil))) (if (/= (point) (process-mark proc)) (progn (setq save-point ...))) (setq term-vertical-motion (if (eq ... ...) 'vertical-motion 'term-buffer-vertical-motion)) (setq save-marker (copy-marker (process-mark proc))) (goto-char (process-mark proc)) (save-restriction (if (and ... ...) (progn ...)) (if term-log-buffer (progn ...)) (if term-terminal-undecoded-bytes (progn ... ... ...)) (while (< i str-length) (setq funny ...) (let ... ... ... ... ...))) (if (>= (term-current-row) term-height) (progn (term-handle-deferred-scroll))) (set-marker (process-mark proc) (point)) (if (stringp decoded-substring) (progn (term-watch-for-password-prompt decoded-substring))) (if save-point (progn (goto-char save-point) (set-marker save-point nil))) (if (and term-pending-frame (eq ... ...)) (progn (term-display-line ... ...) (setq term-pending-frame nil))) (setq win selected) (while (window-minibuffer-p win) (setq win (next-window win nil t))) (setq last-win win) (while (progn (setq win ...) (if ... ...) (not ...))) (if (> term-buffer-maximum-size 0) (progn (save-excursion ... ... ... ...))) (set-marker save-marker nil)) (internal--after-save-selected-window save-selected-window--state)))))
  (save-current-buffer (set-buffer (process-buffer proc)) (let* ((i 0) funny decoded-substring save-point save-marker win (inhibit-read-only t) (buffer-undo-list t) (selected (selected-window)) last-win (str-length (length str))) (let ((save-selected-window--state (internal--before-save-selected-window))) (save-current-buffer (unwind-protect (progn (if (marker-buffer term-pending-delete-marker) (progn ... ...)) (if (/= ... ...) (progn ...)) (setq term-vertical-motion (if ... ... ...)) (setq save-marker (copy-marker ...)) (goto-char (process-mark proc)) (save-restriction (if ... ...) (if term-log-buffer ...) (if term-terminal-undecoded-bytes ...) (while ... ... ...)) (if (>= ... term-height) (progn ...)) (set-marker (process-mark proc) (point)) (if (stringp decoded-substring) (progn ...)) (if save-point (progn ... ...)) (if (and term-pending-frame ...) (progn ... ...)) (setq win selected) (while (window-minibuffer-p win) (setq win ...)) (setq last-win win) (while (progn ... ... ...)) (if (> term-buffer-maximum-size 0) (progn ...)) (set-marker save-marker nil)) (internal--after-save-selected-window save-selected-window--state))))) (if (get-buffer-window (current-buffer)) (progn (redisplay))))
  term-emulate-terminal(#<process terminal> "l\0$\334\236\217\2\214#\2\342n\4\4\f\204\4l\344\fc|\216\203\3\344\23\333r\223B\204\fc\204\373oN\276\0lNn\234\343\354\fc\34p...")
```




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Fri, 21 Jan 2022 08:05:01 GMT) Full text and rfc822 format available.

Message #55 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: larsi <at> gnus.org, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Fri, 21 Jan 2022 10:04:12 +0200
> Date: Thu, 20 Jan 2022 13:01:12 -0900
> From: Christopher Howard <christopher <at> librehacker.com>
> Cc: larsi <at> gnus.org, 51877 <at> debbugs.gnu.org
> 
> On Thu, Jan 20, 2022 at 10:02:10PM +0200, Eli Zaretskii wrote:
> > I don't think this would help.  Can you manually modify the function
> > term-emulate-terminal to use 'raw-text instead of
> > locale-coding-system, and then re-run the scenario in which you get
> > these problems?
> 
> This seems to generate the same result, except with more elaborate debugger output:
> 
> ```
> Debugger entered--Lisp error: (args-out-of-range "l \3\220\0332Nn\f\217" 0 -48)
>   substring("l \3\220\0332Nn\f\217" 0 -48)
>   (insert (substring decoded-substring 0 (- term-width old-column)))
>   (while (> (+ (length decoded-substring) old-column) term-width) (insert (substring decoded-substring 0 (- term-width old-column))) (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- (term-current-column))) (add-text-properties (1- (point)) (point) '(term-line-wrap t rear-nonsticky t)) (setq decoded-substring (substring decoded-substring (- term-width old-column))) (setq old-column 0))

Ouch!  This code evidently assumes that every character takes just one
column on display, because it uses column counts as indices into
strings.  That assumption obviously breaks with binary garbage, where
many bytes are displayed as octal escapes, which take no less than 4
columns.

So my conclusion is that this can never work, unless this central
assumption of term.el is removed, and the code redesigned and
reimplemented not to depend on column counts.

IOW, i its current shape, term.el is utterly incapable of supporting
display of raw bytes.

Sorry.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51877; Package emacs. (Sat, 19 Feb 2022 12:59:01 GMT) Full text and rfc822 format available.

Message #58 received at 51877 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Christopher Howard <christopher <at> librehacker.com>, 51877 <at> debbugs.gnu.org
Subject: Re: bug#51877: 27.2; term: error in process filter
Date: Sat, 19 Feb 2022 13:58:38 +0100
Eli Zaretskii <eliz <at> gnu.org> writes:

> So my conclusion is that this can never work, unless this central
> assumption of term.el is removed, and the code redesigned and
> reimplemented not to depend on column counts.
>
> IOW, i its current shape, term.el is utterly incapable of supporting
> display of raw bytes.

Skimming this thread, there doesn't really seem to be anything realistic
that we can do on the Emacs side here, so I'm closing this bug report.
If progress can be made, please respond to the debbugs address and we'll
reopen.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug closed, send any further explanations to 51877 <at> debbugs.gnu.org and Christopher Howard <christopher <at> librehacker.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sat, 19 Feb 2022 12:59:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 20 Mar 2022 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 9 days ago.

Previous Next


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