Subject: Re: bug#17817: 24.3.91; Assertion failure in bidi.c (Cygwin-w32 build)

From: Ken Brown <[email-masked]>
Date: Fri, 20 Jun 2014 12:43:14 -0400

On 6/20/2014 10:54 AM, Ken Brown wrote:
> On 6/20/2014 3:47 PM, Eli Zaretskii wrote:
>>> Date: Fri, 20 Jun 2014 15:40:28 +0100
>>> From: Ken Brown <[email-masked]>
>>> CC: [email-masked]
>>>
>>> (gdb) p type + 0
>>> $2 = 1
>>> (gdb) p UNKNOWN_BT + 0
>>> $3 = 0
>>> (gdb) p NEUTRAL_ON + 0
>>> $4 = 23
>>>
>>> So, as you said, this is nonsense.
>>
>> Yeah.  But still, the machine insists the value was bad.  Hmmm...
>>
>> Can you show the disassembly of bidi_check_type?
>
> (gdb) disas bidi_check_type
> Dump of assembler code for function bidi_check_type:
>     0x004d2837 <+0>:     push   %ebp
>     0x004d2838 <+1>:     mov    %esp,%ebp
>     0x004d283a <+3>:     sub    $0x18,%esp
>     0x004d283d <+6>:     movzbl 0x9063f8,%eax
>     0x004d2844 <+13>:    xor    $0x1,%eax
>     0x004d2847 <+16>:    test   %al,%al
>     0x004d2849 <+18>:    je     0x4d286d <bidi_check_type+54>
>     0x004d284b <+20>:    cmpl   $0x17,0x8(%ebp)
>     0x004d284f <+24>:    jbe    0x4d286d <bidi_check_type+54>
>     0x004d2851 <+26>:    movl   $0x149,0x8(%esp)
>     0x004d2859 <+34>:    movl   $0x86cc70,0x4(%esp)
>     0x004d2861 <+42>:    movl   $0x86ccbc,(%esp)
>     0x004d2868 <+49>:    call   0x56e818 <die>
>     0x004d286d <+54>:    leave
>     0x004d286e <+55>:    ret
> End of assembler dump.

Sorry, that's from the 32-bit build.  Here's the correct one:

(gdb) disas bidi_check_type
Dump of assembler code for function bidi_check_type:
    0x00000001004fb4c3 <+0>:     push   %rbp
    0x00000001004fb4c4 <+1>:     mov    %rsp,%rbp
    0x00000001004fb4c7 <+4>:     sub    $0x20,%rsp
    0x00000001004fb4cb <+8>:     mov    %ecx,0x10(%rbp)
    0x00000001004fb4ce <+11>:    mov    0x56402b(%rip),%rax        # 
0x100a5f500 <.refptr.suppress_checking>
    0x00000001004fb4d5 <+18>:    movzbl (%rax),%eax
    0x00000001004fb4d8 <+21>:    xor    $0x1,%eax
    0x00000001004fb4db <+24>:    test   %al,%al
    0x00000001004fb4dd <+26>:    je     0x1004fb4ff <bidi_check_type+60>
    0x00000001004fb4df <+28>:    cmpl   $0x17,0x10(%rbp)
    0x00000001004fb4e3 <+32>:    jbe    0x1004fb4ff <bidi_check_type+60>
    0x00000001004fb4e5 <+34>:    mov    $0x149,%r8d
    0x00000001004fb4eb <+40>:    lea    0x53303e(%rip),%rdx        # 
0x100a2e530 <DEFAULT_REHASH_SIZE+56>
    0x00000001004fb4f2 <+47>:    lea    0x53303f(%rip),%rcx        # 
0x100a2e538 <DEFAULT_REHASH_SIZE+64>
    0x00000001004fb4f9 <+54>:    callq  0x1005ba90b <die>
=> 0x00000001004fb4fe <+59>:    nop
    0x00000001004fb4ff <+60>:    add    $0x20,%rsp
    0x00000001004fb503 <+64>:    pop    %rbp
    0x00000001004fb504 <+65>:    retq
End of assembler dump.