* bug#5858: 24.0.50; bidi aborts: "can't happen" happens
@ 2010-04-08 9:03 Ari Roponen
2010-04-08 17:42 ` Eli Zaretskii
0 siblings, 1 reply; 2+ messages in thread
From: Ari Roponen @ 2010-04-08 9:03 UTC (permalink / raw)
To: 5858
Hi,
the following code crashes emacs by making code in bidi.c call
abort():
(let ((bidi-display-reordering t))
(insert #x650 #x650) ; ARABIC KASRA
(redisplay))
The place that calls abort() is in bidi_resolve_neutral():
#0 abort () at emacs.c:430
#1 0x0000000000490abe in bidi_resolve_neutral (bidi_it=0x7fffffff9000)
at bidi.c:1577
#2 0x000000000049119a in bidi_level_of_next_char (bidi_it=0x7fffffff9000)
at bidi.c:1713
...
(gdb) up
#1 0x0000000000490abe in bidi_resolve_neutral (bidi_it=0x7fffffff9000)
at bidi.c:1577
1577 abort (); /* can't happen: BNs are skipped */
(gdb) l
1572 next_type = STRONG_R;
1573 saved_it.next_for_neutral.type = STRONG_R;
1574 break;
1575 case WEAK_BN:
1576 if (!bidi_explicit_dir_char (bidi_it->ch))
1577 abort (); /* can't happen: BNs are skipped */
1578 /* FALLTHROUGH */
1579 case NEUTRAL_B:
1580 /* Marched all the way to the end of this level run.
1581 We need to use the eor type, whose information is
In GNU Emacs 24.0.50.3 (x86_64-unknown-linux-gnu, GTK+ Version 2.19.7)
of 2010-04-07 on arirop
Windowing system distributor `Fedora Project', version 11.0.10799901
--
Ari Roponen
^ permalink raw reply [flat|nested] 2+ messages in thread
* bug#5858: 24.0.50; bidi aborts: "can't happen" happens
2010-04-08 9:03 bug#5858: 24.0.50; bidi aborts: "can't happen" happens Ari Roponen
@ 2010-04-08 17:42 ` Eli Zaretskii
0 siblings, 0 replies; 2+ messages in thread
From: Eli Zaretskii @ 2010-04-08 17:42 UTC (permalink / raw)
To: Ari Roponen; +Cc: 5858-done
> From: Ari Roponen <ari.roponen@gmail.com>
> Date: Thu, 08 Apr 2010 12:03:55 +0300
> Cc:
>
> the following code crashes emacs by making code in bidi.c call
> abort():
>
> (let ((bidi-display-reordering t))
> (insert #x650 #x650) ; ARABIC KASRA
> (redisplay))
Heh, a brain-fart from 9 years ago that came back to haunt me...
> The place that calls abort() is in bidi_resolve_neutral():
>
> #0 abort () at emacs.c:430
> #1 0x0000000000490abe in bidi_resolve_neutral (bidi_it=0x7fffffff9000)
> at bidi.c:1577
> #2 0x000000000049119a in bidi_level_of_next_char (bidi_it=0x7fffffff9000)
> at bidi.c:1713
> ...
>
> (gdb) up
> #1 0x0000000000490abe in bidi_resolve_neutral (bidi_it=0x7fffffff9000)
> at bidi.c:1577
> 1577 abort (); /* can't happen: BNs are skipped */
> (gdb) l
> 1572 next_type = STRONG_R;
> 1573 saved_it.next_for_neutral.type = STRONG_R;
> 1574 break;
> 1575 case WEAK_BN:
> 1576 if (!bidi_explicit_dir_char (bidi_it->ch))
> 1577 abort (); /* can't happen: BNs are skipped */
> 1578 /* FALLTHROUGH */
> 1579 case NEUTRAL_B:
> 1580 /* Marched all the way to the end of this level run.
> 1581 We need to use the eor type, whose information is
Yours is an optimized build, right? Because, in an unoptimized build,
it's a different call to `abort' that is triggered:
#1 0x011a3931 in bidi_resolve_neutral (bidi_it=0x82d2f8) at bidi.c:1600
1600 abort ();
(gdb) l
1595 bidi_copy_it (bidi_it, &saved_it);
1596 return bidi_it->type;
1597 }
1598 break;
1599 default:
1600 abort (); <<<<<<<<<<<<<<<<<
1601 }
1602 type = bidi_resolve_neutral_1 (saved_it.prev_for_neutral.type,
1603 next_type, current_level);
1604 saved_it.type = type;
Anyway, I think I fixed it (revno 99851); please try again after
updating your tree. If it still doesn't work, please re-open this
bug.
Thanks for reporting this.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-04-08 17:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-08 9:03 bug#5858: 24.0.50; bidi aborts: "can't happen" happens Ari Roponen
2010-04-08 17:42 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).