Subject: bug#18438: 24.4.50; assertion failed in bidi.c

From: Eli Zaretskii <[email-masked]>
Date: Mon, 29 Sep 2014 20:00:16 +0300

> Date: Mon, 29 Sep 2014 11:50:51 -0400
> From: Ken Brown <[email-masked]>
> CC: [email-masked]
> 
> On 9/29/2014 2:23 AM, Eli Zaretskii wrote:
> > Anyway, can you build your own Emacs?  If so, I might suggest some
> > simple changes to try to understand what is going on there.
> 
> He's mentioned earlier in the thread that he builds his own emacs

Sorry for my failing memory.

> so please send your changes.  I'll try them too since I've also hit
> this assertion violation, though not nearly as often as Aidan.

Thanks.

Let's start by replacing eassert with its equivalent.  Please run with
the change below for some time and see if the assertions still happen.

(The purpose is to see whether small changes in the code have drastic
effects on the problem.  If they do, it will be hard to know whether
some more serious change solves the problem or simply hides it.)

=== modified file 'src/bidi.c'
--- src/bidi.c	2014-04-06 15:56:01 +0000
+++ src/bidi.c	2014-09-29 16:55:55 +0000
@@ -326,7 +326,8 @@ bidi_get_type (int ch, bidi_dir_t overri
 static void
 bidi_check_type (bidi_type_t type)
 {
-  eassert (UNKNOWN_BT <= type && type <= NEUTRAL_ON);
+  if (!(suppress_checking || (UNKNOWN_BT <= type && type <= NEUTRAL_ON)))
+    die ("UNKNOWN_BT <= type && type <= NEUTRAL_ON", __FILE__, __LINE__);
 }
 
 /* Given a bidi TYPE of a character, return its category.  */