bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#1179: Emacs on Windows hangs displaying unibyte strings


From: Eli Zaretskii
Subject: bug#1179: Emacs on Windows hangs displaying unibyte strings
Date: Fri, 17 Oct 2008 15:01:14 +0200

> Date: Fri, 17 Oct 2008 13:48:06 +0200
> From: "Juanma Barranquero" <lekktu@gmail.com>
> Cc: 
> 
> emacs -q
> 
> and then, on *scratch*, evaluate the following:
> 
> (progn
>   (set-buffer-multibyte nil)
>   (setq unibyte-display-via-language-environment t)
>   (insert (encode-coding-string "á" 'cp1252)))
> 
> When running under gdb, the result is:
> 
>  - On non-optimized builds, it hangs.
>  - On optimized builds, it crashes with the attached backtrace.
> 
> Is anyone able to reproduce it, or am I the only one seeing it?

It doesn't crash for me, with today's CVS.  But the result is strange
nonetheless, I think: the single á character in the last line above
are replaced with _two_ empty boxes about which "C-u C-x =" says:

            character:   (195, #o303, #xc3)
    preferred charset: unicode (Unicode (ISO10646))
           code point: 0xC3
               syntax: w        which means: word
             category: j:Japanese l:Latin v:Vietnamese
          buffer code: #xC3 #x83
            file code: #xC3 (encoded by coding system iso-latin-1-dos)
              display: by this font (glyph code)
        uniscribe:-outline-Courier 
New-normal-normal-normal-mono-13-*-*-*-c-*-iso10646-1 (#xAD)

            character:   (161, #o241, #xa1)
    preferred charset: unicode (Unicode (ISO10646))
           code point: 0xA1
               syntax: .        which means: punctuation
             category: h:Korean j:Japanese l:Latin
          buffer code: #xC2 #xA1
            file code: #xA1 (encoded by coding system iso-latin-1-dos)
              display: by this font (glyph code)
        uniscribe:-outline-Courier 
New-normal-normal-normal-mono-13-*-*-*-c-*-iso10646-1 (#xA3)

And the character that gets inserted (also displayed as an empty box)
is reported as

            character:   (225, #o341, #xe1)
    preferred charset: unicode (Unicode (ISO10646))
           code point: 0xE1
               syntax: w        which means: word
             category: c:Chinese j:Japanese l:Latin v:Vietnamese
          buffer code: #xC3 #xA1
            file code: #xE1 (encoded by coding system iso-latin-1-dos)
              display: by this font (glyph code)
        uniscribe:-outline-Courier 
New-normal-normal-normal-mono-13-*-*-*-c-*-iso10646-1 (#x69)

> Program received signal SIGSEGV, Segmentation fault.
> 0x011f804c in x_draw_glyph_string_background (s=0x82eae0, force_p=1)
> at w32term.c:1279
> 1279            if (FONT_HEIGHT (s->font) < s->height - 2 * box_line_width

So what's the reason of the crash?  Is `s' an invalid pointer?  Or
maybe GDB is confused by optimizations, and shows in correct source
line?  In the latter case, perhaps disassemblying around the address
of the crash (0x011f804c according to the above) would give an idea of
what went wrong.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]