Subject: bug#11199: 24.0.95; killing right-to-left text at eob leads to inconsistent state

From: Michael Welsh Duggan <[email-masked]>
Date: Sun, 08 Apr 2012 16:16:29 -0400

Eli Zaretskii <[email-masked]> writes:

>> From: Michael Welsh Duggan <[email-masked]>
>> Cc: YAMAMOTO Mitsuharu <[email-masked]>,  [email-masked]
>> Date: Sun, 08 Apr 2012 14:28:03 -0400
>> 
>> Eli Zaretskii <[email-masked]> writes:
>> 
>> >> Date: Sun, 08 Apr 2012 11:26:41 +0900
>> >> From: YAMAMOTO Mitsuharu <[email-masked]>
>> >> 
>> >> Steps to reproduce:
>> >> 
>> >> 1. emacs -Q
>> >> 2. type the following text in the *scratch* buffer:
>> >> 
>> >>   (progn
>> >>     (delete-region (point) (point-max))
>> >>     (insert (substring (get-language-info "Hebrew" 'sample-text) 7)))
>> >> 
>> >> 3. move the cursor to the beginning of the next line of the above text.
>> >> 4. C-x C-e
>> >> 5. C-a
>> >> 6. C-k
>> >> 
>> >> Result:
>> >> 
>> >> The Hebrew text is still shown, though it is internally killed.
>> >> Typing C-p after the last step does not move the cursor.

[...]

>> I have assertions turned on and get an assertion failure.  My setup is
>> as follows:
>
> With the above recipe?  Or with something different?

With exactly the above recipe.

> I have assertions turned on all the time, and I still cannot reproduce
> this.  Maybe I don't understand the recipe; can you describe exactly
> where and how you type the Lisp code, and where you put the cursor
> before "C-x C-e"?

I typed in the list expression directly into the *scratch* buffer, then
hit RET in order to get to the beginning of the next line.  (This is how
I interpreted step 3 above.)  So, at the time I type C-x C-e, I am at
the beginning of the line below the line containing the word "insert".

> In any case, please go to this frame:
>
>   #4  0x080a82f0 in try_window_id (w=0x88e30d0) at xdisp.c:17140
>
> and type:
>
>  (gdb) pgrowx last_unchanged_at_beg_row
>  (gdb) prowlims last_unchanged_at_beg_row

(gdb) up
#2  0x080794bb in init_from_display_pos (it=0xbfffa878, w=0x88e30d0, 
    pos=0x8d6e6a8) at xdisp.c:2951
(gdb) up
#3  0x08079810 in init_to_row_end (it=0xbfffa878, w=0x88e30d0, row=0x8d6e640)
    at xdisp.c:3054
(gdb) up
#4  0x080a82f0 in try_window_id (w=0x88e30d0) at xdisp.c:17140
(gdb) pgrowx last_unchanged_at_beg_row
TEXT: 68 glyphs
  0    0: CHAR[ ] pos=237 blev=0,btyp=L w=8 a+d=12+3 MB
  1    8: CHAR[ ] pos=238 blev=0,btyp=L w=8 a+d=12+3 MB
  2   16: CHAR[(] pos=239 blev=0,btyp=L w=8 a+d=12+3 MB
  3   24: CHAR[i] pos=240 blev=0,btyp=L w=8 a+d=12+3 MB
  4   32: CHAR[n] pos=241 blev=0,btyp=L w=8 a+d=12+3 MB
  5   40: CHAR[s] pos=242 blev=0,btyp=L w=8 a+d=12+3 MB
  6   48: CHAR[e] pos=243 blev=0,btyp=L w=8 a+d=12+3 MB
  7   56: CHAR[r] pos=244 blev=0,btyp=L w=8 a+d=12+3 MB
  8   64: CHAR[t] pos=245 blev=0,btyp=L w=8 a+d=12+3 MB
  9   72: CHAR[ ] pos=246 blev=0,btyp=L w=8 a+d=12+3 MB
 10   80: CHAR[(] pos=247 blev=0,btyp=L w=8 a+d=12+3 MB
 11   88: CHAR[s] pos=248 blev=0,btyp=L w=8 a+d=12+3 MB
 12   96: CHAR[u] pos=249 blev=0,btyp=L w=8 a+d=12+3 MB
 13  104: CHAR[b] pos=250 blev=0,btyp=L w=8 a+d=12+3 MB
 14  112: CHAR[s] pos=251 blev=0,btyp=L w=8 a+d=12+3 MB
 15  120: CHAR[t] pos=252 blev=0,btyp=L w=8 a+d=12+3 MB
 16  128: CHAR[r] pos=253 blev=0,btyp=L w=8 a+d=12+3 MB
 17  136: CHAR[i] pos=254 blev=0,btyp=L w=8 a+d=12+3 MB
 18  144: CHAR[n] pos=255 blev=0,btyp=L w=8 a+d=12+3 MB
 19  152: CHAR[g] pos=256 blev=0,btyp=L w=8 a+d=12+3 MB
 20  160: CHAR[ ] pos=257 blev=0,btyp=L w=8 a+d=12+3 MB
 21  168: CHAR[(] pos=258 blev=0,btyp=L w=8 a+d=12+3 MB
 22  176: CHAR[g] pos=259 blev=0,btyp=L w=8 a+d=12+3 MB
 23  184: CHAR[e] pos=260 blev=0,btyp=L w=8 a+d=12+3 MB
 24  192: CHAR[t] pos=261 blev=0,btyp=L w=8 a+d=12+3 MB
 25  200: CHAR[-] pos=262 blev=0,btyp=L w=8 a+d=12+3 MB
 26  208: CHAR[l] pos=263 blev=0,btyp=L w=8 a+d=12+3 MB
 27  216: CHAR[a] pos=264 blev=0,btyp=L w=8 a+d=12+3 MB
 28  224: CHAR[n] pos=265 blev=0,btyp=L w=8 a+d=12+3 MB
 29  232: CHAR[g] pos=266 blev=0,btyp=L w=8 a+d=12+3 MB
 30  240: CHAR[u] pos=267 blev=0,btyp=L w=8 a+d=12+3 MB
 31  248: CHAR[a] pos=268 blev=0,btyp=L w=8 a+d=12+3 MB
 32  256: CHAR[g] pos=269 blev=0,btyp=L w=8 a+d=12+3 MB
 33  264: CHAR[e] pos=270 blev=0,btyp=L w=8 a+d=12+3 MB
 34  272: CHAR[-] pos=271 blev=0,btyp=L w=8 a+d=12+3 MB
 35  280: CHAR[i] pos=272 blev=0,btyp=L w=8 a+d=12+3 MB
 36  288: CHAR[n] pos=273 blev=0,btyp=L w=8 a+d=12+3 MB
 37  296: CHAR[f] pos=274 blev=0,btyp=L w=8 a+d=12+3 MB
 38  304: CHAR[o] pos=275 blev=0,btyp=L w=8 a+d=12+3 MB
 39  312: CHAR[ ] pos=276 blev=0,btyp=L w=8 a+d=12+3 MB
 40  320: CHAR["] pos=277 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 41  328: CHAR[H] pos=278 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 42  336: CHAR[e] pos=279 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 43  344: CHAR[b] pos=280 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 44  352: CHAR[r] pos=281 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 45  360: CHAR[e] pos=282 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 46  368: CHAR[w] pos=283 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 47  376: CHAR["] pos=284 blev=0,btyp=L w=8 a+d=12+3 face=15 MB
 48  384: CHAR[ ] pos=285 blev=0,btyp=L w=8 a+d=12+3 MB
 49  392: CHAR['] pos=286 blev=0,btyp=L w=8 a+d=12+3 MB
 50  400: CHAR[s] pos=287 blev=0,btyp=L w=8 a+d=12+3 MB
 51  408: CHAR[a] pos=288 blev=0,btyp=L w=8 a+d=12+3 MB
 52  416: CHAR[m] pos=289 blev=0,btyp=L w=8 a+d=12+3 MB
 53  424: CHAR[p] pos=290 blev=0,btyp=L w=8 a+d=12+3 MB
 54  432: CHAR[l] pos=291 blev=0,btyp=L w=8 a+d=12+3 MB
 55  440: CHAR[e] pos=292 blev=0,btyp=L w=8 a+d=12+3 MB
 56  448: CHAR[-] pos=293 blev=0,btyp=L w=8 a+d=12+3 MB
 57  456: CHAR[t] pos=294 blev=0,btyp=L w=8 a+d=12+3 MB
 58  464: CHAR[e] pos=295 blev=0,btyp=L w=8 a+d=12+3 MB
 59  472: CHAR[x] pos=296 blev=0,btyp=L w=8 a+d=12+3 MB
 60  480: CHAR[t] pos=297 blev=0,btyp=L w=8 a+d=12+3 MB
 61  488: CHAR[)] pos=298 blev=0,btyp=L w=8 a+d=12+3 MB
 62  496: CHAR[ ] pos=299 blev=0,btyp=L w=8 a+d=12+3 MB
 63  504: CHAR[7] pos=300 blev=0,btyp=L w=8 a+d=12+3 MB
 64  512: CHAR[)] pos=301 blev=0,btyp=L w=8 a+d=12+3 MB
 65  520: CHAR[)] pos=302 blev=0,btyp=L w=8 a+d=12+3 MB
 66  528: CHAR[)] pos=303 blev=0,btyp=L w=8 a+d=12+3 MB
 67  536: CHAR[ ] pos=0 blev=0,btyp=B w=8 a+d=12+3 MB
(gdb) prowlims last_unchanged_at_beg_row
edges=(237,305),r2l=0,cont=0,trunc=(0,0),at_zv=0
(gdb) 

-- 
Michael Welsh Duggan
([email-masked])