GNU bug report logs -
#5858
24.0.50; bidi aborts: "can't happen" happens
Previous Next
Full log
Message #10 received at 5858-done <at> debbugs.gnu.org (full text, mbox):
> From: Ari Roponen <ari.roponen <at> 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.
This bug report was last modified 15 years and 108 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.