GNU bug report logs - #9254
previous-line stays put, and next-line crashes

Previous Next

Package: emacs;

Reported by: Stefan Monnier <monnier <at> IRO.UMontreal.CA>

Date: Sat, 6 Aug 2011 03:13:01 UTC

Severity: normal

Done: Eli Zaretskii <eliz <at> gnu.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 9254 in the body.
You can then email your comments to 9254 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 owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#9254; Package emacs. (Sat, 06 Aug 2011 03:13:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> IRO.UMontreal.CA>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 06 Aug 2011 03:13:02 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: bug-gnu-emacs <at> gnu.org
Subject: previous-line stays put, and next-line crashes
Date: Fri, 05 Aug 2011 11:10:45 -0400
[Message part 1 (text/plain, inline)]
Not sure if the two are related (I only bumped into the crash today
while creating the recipe for this bug-report), but here it goes.
Create the file foo.ll attached (see below) and then

   % emacs -Q ~/tmp/foo.ll
   [ accept the file-local settings ]
   M->
   C-p C-p C-p

I notice 3 problems:
- After the first C-p the cursor is drawn on the second "\n" of the
  "¶\n\n" display property.  In Emacs-23, the cursor was drawn on the
  "¶".  Not sure if it's longlines-mode which should add a `cursor'
  property, but at least that's a change in behavior w.r.t Emacs-23.
- On the second (and third) C-p, the cursor fails to move.
  AFAICT this bug was already present in Emacs-23.
- If I then hit C-n, I get a crash with the backtrace appended after
  my sig.  I.e. bidi_cache_start is zero upon entry to bidi_pop_it.


        Stefan


#0  abort () at emacs.c:380
#1  0x0817c35a in bidi_pop_it (bidi_it=0xbfffd598) at bidi.c:605
#2  0x08094f82 in pop_it (it=0xbfffcfe0) at xdisp.c:5425
#3  0x080997f6 in set_iterator_to_next (it=0xbfffcfe0, reseat_p=1)
    at xdisp.c:6796
#4  0x0809da7d in move_it_to (it=0xbfffcfe0, to_charpos=-1, to_x=-1, to_y=-1, 
    to_vpos=1, op=4) at xdisp.c:8315
#5  0x0809e475 in move_it_by_lines (it=0xbfffcfe0, dvpos=1) at xdisp.c:8610
#6  0x082e76af in Fvertical_motion (lines=..., window=...) at indent.c:2095
#7  0x083422c0 in Ffuncall (nargs=2, args=0xbfffd9a0) at eval.c:3012
#8  0x083bb78f in exec_byte_code (bytestr=..., vector=..., maxdepth=..., 
    args_template=..., nargs=0, args=0x0) at bytecode.c:785
#9  0x08343545 in funcall_lambda (fun=..., nargs=2, arg_vector=0x5)
    at eval.c:3240
#10 0x08342708 in Ffuncall (nargs=3, args=0xbfffdd40) at eval.c:3058
#11 0x083bb78f in exec_byte_code (bytestr=..., vector=..., maxdepth=..., 
    args_template=..., nargs=0, args=0x0) at bytecode.c:785
#12 0x08343545 in funcall_lambda (fun=..., nargs=4, arg_vector=0x4)
    at eval.c:3240
#13 0x08342708 in Ffuncall (nargs=5, args=0xbfffe0d0) at eval.c:3058
#14 0x083bb78f in exec_byte_code (bytestr=..., vector=..., maxdepth=..., 
    args_template=..., nargs=0, args=0x0) at bytecode.c:785
#15 0x083ba9d6 in Fbyte_code (bytestr=..., vector=..., maxdepth=...)
    at bytecode.c:423
#16 0x0833fd0b in eval_sub (form=...) at eval.c:2363
#17 0x0833cef1 in internal_lisp_condition_case (var=..., bodyform=..., 
    handlers=...) at eval.c:1440
#18 0x083bc489 in exec_byte_code (bytestr=..., vector=..., maxdepth=..., 
    args_template=..., nargs=0, args=0x0) at bytecode.c:981
#19 0x08343545 in funcall_lambda (fun=..., nargs=2, arg_vector=0x6)
    at eval.c:3240
#20 0x08342708 in Ffuncall (nargs=3, args=0xbfffe980) at eval.c:3058
#21 0x083385c4 in Fcall_interactively (function=..., record_flag=..., 
    keys=...) at callint.c:857
#22 0x08342347 in Ffuncall (nargs=4, args=0xbfffec74) at eval.c:3016
#23 0x083415a5 in call3 (fn=..., arg1=..., arg2=..., arg3=...) at eval.c:2809
#24 0x0827cc0d in Fcommand_execute (cmd=..., record_flag=..., keys=..., 
    special=...) at keyboard.c:10274
#25 0x0825c2a5 in command_loop_1 () at keyboard.c:1572
#26 0x0833d028 in internal_condition_case (bfun=0x825b048 <command_loop_1>, 
    handlers=..., hfun=0x825a690 <cmd_error>) at eval.c:1493
#27 0x0825abdf in command_loop_2 (ignore=...) at keyboard.c:1156
#28 0x0833c826 in internal_catch (tag=..., func=0x825abb3 <command_loop_2>, 
    arg=...) at eval.c:1247
#29 0x0825ab88 in command_loop () at keyboard.c:1135
#30 0x08259f82 in recursive_edit_1 () at keyboard.c:756
#31 0x0825a322 in Frecursive_edit () at keyboard.c:820
#32 0x08257a6e in main (argc=3, argv=0xbffff554) at emacs.c:1705

Lisp Backtrace:
"vertical-motion" (0xbfffd9a4)
"line-move-visual" (0xbfffdd44)
"line-move" (0xbfffe0d4)
"byte-code" (0xbfffe388)
"next-line" (0xbfffe984)
"call-interactively" (0xbfffec78)

[foo.ll (text/plain, inline)]
toto asdfkjsahfd dkjafkjfkja ffffgkusa gfksaj gksa ga gygfoiesa goiue goiea glicvlkjfa lekfgaruqpif gfliagflka b;alkjnhleshua;wo h
w hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf
guf poiwqgoi gwoifgqoiw gf oiwfg oiwqw hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf guf poiwqgoi gwoifgqoiw gf oiwfg oiwqw hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf guf poiwqgoi gwoifgqoiw gf oiwfg oiwqw hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf


guf poiwqgoi gwoifgqoiw gf oiwfg oiwqw hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf guf poiwqgoi gwoifgqoiw gf oiwfg oiwqw hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf guf poiwqgoi gwoifgqoiw gf oiwfg oiwqw hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf guf poiwqgoi gwoifgqoiw gf oiwfg oiwqw hffgoiw gfaoiwf goiw gfoiw fgowqigoiwyf goiwqgoiwf gwqoiugf wqoiuf guf poiwqgoi gwoifgqoiw gf oiwfg oiwqg

# Local Variables:
# longlines-show-effect: "¶\n\n"
# longlines-show-hard-newlines: t
# mode: longlines
# End: 
[Message part 3 (text/plain, inline)]



In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2011-08-04 on ceviche
Windowing system distributor `The X.Org Foundation', version 11.0.11002000
configured using `configure  'CFLAGS=-Wall -Wno-pointer-sign -DUSE_LISP_UNION_TYPE -DSYNC_INPUT -DENABLE_CHECKING -DXASSERTS -DFONTSET_DEBUG -g -O1 -I/usr/include/GNUstep' '--enable-maintainer-mode' '--with-x-toolkit=lucid''

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: fr_CH.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: InactiveMinibuffer

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  electric-pair-mode: t
  electric-indent-mode: t
  url-handler-mode: t
  global-reveal-mode: t
  reveal-mode: t
  auto-insert-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<mouse-movement> <mouse-1> C-l C-a <up> <up> <up> <up> 
<up> <up> <right> <right> <right> <right> <right> <right> 
<right> <right> <C-up> <up> <left> <right> <down> <left> 
<right> <up> <left> <right> <return> <up> C-/ <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <left> <right> <down> <left> <right> <left> <down> 
<right> <left> <down> <right> <down> <left> <right> 
<down> <left> <right> <down> <left> <right> <down> 
<left> <right> <down> <left> <right> <down> <left> 
<right> <down> <left> <right> <down> <left> <right> 
<left> <down> <right> <left> <down> <right> <down> 
<left> <right> <down> <left> <right> <up> <left> <right> 
<up> <left> <right> C-s C-s C-s C-r C-r C-s C-s C-r 
C-r <right> <right> <right> <help-echo> <switch-frame> 
<help-echo> <switch-frame> <switch-frame> <help-echo> 
<help-echo> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <help-echo> <switch-frame> <help-echo> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> C-x 5 
f <M-backspace> <M-backspace> <M-backspace> <M-backspace> 
<M-backspace> e / e / e <tab> <return> C-s l o n g 
l i C-a C-e <right> C-e <right> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <help-echo> <down-mouse-1> 
<mouse-1> C-e <left> <left> <left> <M-backspace> <M-backspace> 
<backspace> <help-echo> <backspace> C-a <right> <right> 
<right> <right> C-M-SPC M-w <switch-frame> <switch-frame> 
C-M-SPC M-w <switch-frame> <switch-frame> C-x 5 f c 
u s <tab> <return> C-s l o n g <left> <left> <left> 
<left> h <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> C-/ <switch-frame> <switch-frame> <switch-frame> 
C-a C-k C-s C-s C-s C-a <switch-frame> <switch-frame> 
<switch-frame> <down> C-y <up> C-d C-d <right> s e 
t q SPC C-a C-x C-s <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <right> 
<right> <right> <right> <right> <right> <right> <left> 
C-M-SPC M-w <switch-frame> <switch-frame> <switch-frame> 
<help-echo> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <down> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<help-echo> <switch-frame> <switch-frame> <switch-frame> 
M-x r e p o - e m - u <switch-frame> <backspace> b 
<switch-frame> <backspace> b <tab> <return>

Recent messages:
Warning: interactive-p is obsolete!
Mark set
Mark saved where search started
Undo!
Mark set
Saving file /home/monnier/share/etc/emacs/emacs.el...
Wrote /home/monnier/share/etc/emacs/emacs.el
Mark set
Warning: interactive-p is obsolete!
Undo! [2 times]

Load-path shadows:
None found.

Features:
(sort mail-extr message format-spec rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev mail-utils mailheader emacsbug add-log executable
vc-dispatcher copyright hideif cpp cmacexp smerge-mode diff-mode cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars
cc-defs shell pcomplete grep compile multi-isearch xscheme trace
testcover scheme unsafep re-builder shadow inf-lisp ielm pp comint ring
gmm-utils ert ewoc debug elp edebug cust-print cus-edit cus-start
cus-load wid-edit vc-bzr filecache find-func server noutline outline
easy-mmode flyspell ispell eldoc checkdoc regexp-opt thingatpt help-mode
view prog-mode load-dir electric url-handlers url-parse auth-source
warnings eieio byte-opt bytecomp byte-compile cconv macroexp assoc
gnus-util password-cache url-vars mm-util mail-prsvr reveal autoinsert
uniquify advice help-fns advice-preload time-date savehist minibuf-eldef
disp-table cl cl-loaddefs all-autoloads company-autoloads
debbugs-autoloads epoch-view-autoloads js2-mode-autoloads
load-dir-autoloads markchars-autoloads minimap-autoloads muse-autoloads
info easymenu rainbow-mode-autoloads register-list-autoloads
sisu-mode-autoloads uni-confusables-autoloads windresize-autoloads
package tabulated-list proof-site proof-autoloads pg-vars bbdb-autoloads
agda2 tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image fringe lisp-mode register page newcomment
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax font-core frame cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak
czech european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces
cus-face files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
make-network-process dbusbind dynamic-setting system-font-setting
font-render-setting x-toolkit x multi-tty emacs)

Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Sat, 06 Aug 2011 11:20:03 GMT) Full text and rfc822 format available.

Notification sent to Stefan Monnier <monnier <at> IRO.UMontreal.CA>:
bug acknowledged by developer. (Sat, 06 Aug 2011 11:20:03 GMT) Full text and rfc822 format available.

Message #10 received at 9254-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: 9254-done <at> debbugs.gnu.org
Subject: Re: bug#9254: previous-line stays put, and next-line crashes
Date: Sat, 06 Aug 2011 14:15:38 +0300
> From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
> Date: Fri, 05 Aug 2011 11:10:45 -0400
> 
> Not sure if the two are related

They weren't.

>    % emacs -Q ~/tmp/foo.ll
>    [ accept the file-local settings ]
>    M->
>    C-p C-p C-p
> 
> I notice 3 problems:
> - After the first C-p the cursor is drawn on the second "\n" of the
>   "¶\n\n" display property.  In Emacs-23, the cursor was drawn on the
>   "¶".  Not sure if it's longlines-mode which should add a `cursor'
>   property, but at least that's a change in behavior w.r.t Emacs-23.
> - On the second (and third) C-p, the cursor fails to move.
>   AFAICT this bug was already present in Emacs-23.
> - If I then hit C-n, I get a crash with the backtrace appended after
>   my sig.  I.e. bidi_cache_start is zero upon entry to bidi_pop_it.

The crash was caused by a stupid thinko; fixed in revision 105413.

I also fixed in that revision the first of the 3 problems, because the
cursor position was different from Emacs 23 even with
bidi-display-reordering set to nil.  Hopefully, I didn't introduce any
new bugs in cursor positioning by this change.

As for the second problem you mention, please file a separate bug
report, as anything that isn't a regression from Emacs 23 should be
separate anyway, and in any case its priority on my todo is lower than
bidi-related problems.  I'm closing this bug report.

In general, yes, I think modes that use display strings should use the
`cursor' property much more now, instead of relying on the display
engine to figure this out.  The bidi-aware display needs much more
help in this regard because it cannot rely on monotonicity of
character position changes with screen positions.  This monotonicity
in the unidirectional display was the main reason why all kinds of
tricky cases "just worked" in Emacs 23.  There's a limit to the amount
of logic and flags we can put into the code to implement heuristics
whose sole basis is that "it worked like that in Emacs 23".





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 03 Sep 2011 11:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 12 years and 235 days ago.

Previous Next


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