[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
unicode-xft: wrong unicode characters and crashes
From: |
Meik Hellmund |
Subject: |
unicode-xft: wrong unicode characters and crashes |
Date: |
Tue, 30 May 2006 15:57:00 +0200 |
When visiting a file with non-latin unicode characters, most are
displayed wrong, e.g. the file includes a greek small lambda
(U+03BB), and emacs displays a small e with two dots U+00EB.
Some characters, e.g. U+03D1 (greek theta symbol), produce
a segmentation fault.
I use the "Bitstream vera sans mono" font.
Starting program: /usr/bin/emacs-snapshot-gtk -Q
[Thread debugging using libthread_db enabled]
[New Thread 47795254905600 (LWP 2647)]
[Switching to Thread 47795254905600 (LWP 2647)]
Breakpoint 3 at 0x498470: file xterm.c, line 8206.
Program received signal SIGSEGV, Segmentation fault.
x_get_font_repertory (f=<value optimized out>, font_info=<value optimized out>)
at xterm.c:10609
10609 if (pcm->width == 0 && pcm->rbearing == pcm->lbearing)
#0 x_get_font_repertory (f=<value optimized out>,
font_info=<value optimized out>) at xterm.c:10609
from = -1
j = 0
font = <value optimized out>
table = 30435332
min_byte1 = <value optimized out>
max_byte1 = 16960816
min_byte2 = 0
max_byte2 = 27708944
c = 16960816
charset = (struct charset *) 0xa5d5d0
offset = 0
#1 0x00000000004a947f in load_font_get_repertory (f=0x946470,
face=<value optimized out>, font_def=<value optimized out>,
fontset=<value optimized out>) at fontset.c:509
repertory = <value optimized out>
font_name = <value optimized out>
font_info = (struct font_info *) 0x117fbe0
#2 0x00000000004a98cd in fontset_font (fontset=12635364, c=9785,
face=0xe3f430, id=-1) at fontset.c:650
font_info = <value optimized out>
slot = <value optimized out>
font_def = 19427908
base_fontset = 9998836
elt = <value optimized out>
vec = <value optimized out>
i = 17
from = 8192
to = 11903
font_idx = <value optimized out>
f = (FRAME_PTR) 0x946470
#3 0x00000000004a9752 in fontset_font (fontset=19226196, c=9785,
face=0xe3f430, id=-1) at fontset.c:721
base_fontset = 13757220
elt = <value optimized out>
vec = <value optimized out>
i = 4
from = 40
to = -5811568
font_idx = <value optimized out>
f = (FRAME_PTR) 0x946470
#4 0x00000000004a9f45 in face_for_char (f=0x946470, face=0xe3f430, c=9785,
pos=<value optimized out>, object=0) at fontset.c:906
fontset = 19226196
charset = <value optimized out>
rfont_def = <value optimized out>
face_id = <value optimized out>
id = -1
#5 0x0000000000426b28 in get_next_display_element (it=0x7fffffa75290)
at xdisp.c:5740
face = (struct face *) 0x51
pos = 30435332
success_p = <value optimized out>
#6 0x000000000042ec24 in display_line (it=0x7fffffa75290) at xdisp.c:15799
i = 19202928
nglyphs = 1
ascent = 13
phys_ascent = 11
n_glyphs_before = 6
hpos_before = 6
x = 48
descent = 4
phys_descent = 1
row = (struct glyph_row *) 0x1295498
overlay_arrow_string = <value optimized out>
#7 0x000000000043216b in try_window_reusing_current_matrix (w=0xc042a0)
at xdisp.c:13788
first_row_to_display = (struct glyph_row *) 0x1250fe8
pt_row = (struct glyph_row *) 0x0
row = <value optimized out>
first_reusable_row = (struct glyph_row *) 0x1250370
dy = <value optimized out>
yb = <value optimized out>
f = <value optimized out>
row = <value optimized out>
bottom_row = <value optimized out>
it = {
window = 12599972,
w = 0xc042a0,
f = 0x946470,
method = GET_FROM_BUFFER,
stop_charpos = 1586,
end_charpos = 9969,
s = 0x0,
string_nchars = 0,
region_beg_charpos = -1,
region_end_charpos = -1,
redisplay_end_trigger_charpos = 0,
multibyte_p = 1,
header_line_p = 0,
string_from_display_prop_p = 0,
ellipsis_p = 0,
dp = 0x0,
dpvec = 0x0,
dpend = 0x0,
dpvec_char_len = 0,
dpvec_face_id = 0,
saved_face_id = 0,
ctl_chars = {0 <repeats 16 times>},
start = {
pos = {
charpos = 1577,
bytepos = 1594
},
overlay_string_index = -1,
string_pos = {
charpos = -1,
bytepos = -1
},
dpvec_index = -1
},
current = {
pos = {
charpos = 1584,
bytepos = 1601
},
overlay_string_index = -1,
string_pos = {
charpos = -1,
bytepos = -1
},
dpvec_index = -1
},
overlay_strings = {0 <repeats 16 times>},
n_overlay_strings = 0,
string = 9542033,
stack = {{
stop_charpos = 0,
face_id = 0,
string = 0,
pos = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
bytepos = 0
},
dpvec_index = 0
},
end_charpos = 0,
string_nchars = 0,
area = LEFT_MARGIN_AREA,
multibyte_p = 0,
string_from_display_prop_p = 0,
display_ellipsis_p = 0,
slice = {
x = 0,
y = 0,
width = 0,
height = 0
},
space_width = 0,
voffset = 0,
font_height = 0
}, {
stop_charpos = 0,
face_id = 0,
string = 0,
pos = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
bytepos = 0
},
dpvec_index = 0
},
end_charpos = 0,
string_nchars = 0,
area = LEFT_MARGIN_AREA,
multibyte_p = 0,
string_from_display_prop_p = 0,
display_ellipsis_p = 0,
slice = {
x = 0,
y = 0,
width = 0,
height = 0
},
space_width = 0,
voffset = 0,
font_height = 0
}},
sp = 0,
selective_display_ellipsis_p = 1,
ctl_arrow_p = 1,
selective = 0,
what = IT_CHARACTER,
face_id = 0,
face_box_p = 0,
start_of_box_run_p = 0,
end_of_box_run_p = 0,
overlay_strings_at_end_processed_p = 0,
ignore_overlay_strings_at_pos_p = 0,
glyph_not_available_p = 0,
starts_in_middle_of_char_p = 0,
face_before_selective_p = 0,
constrain_row_ascent_descent_p = 0,
base_face_id = 0,
c = 9785,
len = 3,
cmp_id = 0,
cmp_len = 0,
char_to_display = 63,
image_id = 0,
slice = {
x = 9542033,
y = 9542033,
width = 9542033,
height = 9542033
},
space_width = 9542033,
voffset = 0,
font_height = 9542033,
object = 16480548,
position = {
charpos = 1584,
bytepos = 1601
},
truncate_lines_p = 0,
tab_width = 8,
truncation_pixel_width = 0,
continuation_pixel_width = 0,
first_visible_x = 0,
last_visible_x = 640,
last_visible_y = 646,
extra_line_spacing = 0,
max_extra_line_spacing = 0,
override_ascent = -1,
override_descent = 0,
override_boff = 0,
glyph_row = 0x1295498,
area = TEXT_AREA,
nglyphs = 1,
pixel_width = 8,
ascent = 13,
descent = 4,
max_ascent = 13,
max_descent = 4,
phys_ascent = 9,
phys_descent = 0,
max_phys_ascent = 11,
max_phys_descent = 1,
current_x = 56,
continuation_lines_width = 0,
current_y = 627,
first_vpos = 0,
vpos = 35,
hpos = 7,
left_user_fringe_bitmap = 0,
right_user_fringe_bitmap = 0,
left_user_fringe_face_id = 0,
right_user_fringe_face_id = 0
}
run = {
desired_y = 0,
current_y = 969,
desired_vpos = 0,
current_vpos = 19,
height = 12599968,
nrows = 0
}
new_start = <value optimized out>
nrows_scrolled = 18
i = <value optimized out>
last_text_row = (struct glyph_row *) 0x12953f0
last_reused_text_row = <value optimized out>
start_row = <value optimized out>
start_vpos = 0
min_y = <value optimized out>
max_y = <value optimized out>
#8 0x000000000043694a in redisplay_window (window=12599972, just_this_one_p=1)
at xdisp.c:13174
row = <value optimized out>
new_vpos = <value optimized out>
val = <value optimized out>
w = (struct window *) 0xc042a0
f = (struct frame *) 0x946470
buffer = <value optimized out>
old = (struct buffer *) 0xfb7920
startp = {
charpos = 1101,
bytepos = 0
}
update_mode_line = 1
tem = <value optimized out>
it = {
window = 12599972,
w = 0xc042a0,
f = 0x946470,
method = GET_FROM_BUFFER,
stop_charpos = 662,
end_charpos = 9969,
s = 0x0,
string_nchars = 0,
region_beg_charpos = -1,
region_end_charpos = -1,
redisplay_end_trigger_charpos = 0,
multibyte_p = 1,
header_line_p = 0,
string_from_display_prop_p = 0,
ellipsis_p = 0,
dp = 0x0,
dpvec = 0x0,
dpend = 0x0,
dpvec_char_len = 0,
dpvec_face_id = 0,
saved_face_id = -1,
ctl_chars = {0 <repeats 16 times>},
start = {
pos = {
charpos = 1128,
bytepos = 1129
},
overlay_string_index = -1,
string_pos = {
charpos = -1,
bytepos = -1
},
dpvec_index = -1
},
current = {
pos = {
charpos = 662,
bytepos = 663
},
overlay_string_index = -1,
string_pos = {
charpos = -1,
bytepos = -1
},
dpvec_index = -1
},
overlay_strings = {0 <repeats 16 times>},
n_overlay_strings = 0,
string = 9542033,
stack = {{
stop_charpos = 0,
face_id = 0,
string = 0,
pos = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
bytepos = 0
},
dpvec_index = 0
},
end_charpos = 0,
string_nchars = 0,
area = LEFT_MARGIN_AREA,
multibyte_p = 0,
string_from_display_prop_p = 0,
display_ellipsis_p = 0,
slice = {
x = 0,
y = 0,
width = 0,
height = 0
},
space_width = 0,
voffset = 0,
font_height = 0
}, {
stop_charpos = 0,
face_id = 0,
string = 0,
pos = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
bytepos = 0
},
dpvec_index = 0
},
end_charpos = 0,
string_nchars = 0,
area = LEFT_MARGIN_AREA,
multibyte_p = 0,
string_from_display_prop_p = 0,
display_ellipsis_p = 0,
slice = {
x = 0,
y = 0,
width = 0,
height = 0
},
space_width = 0,
voffset = 0,
font_height = 0
}},
sp = 0,
selective_display_ellipsis_p = 1,
ctl_arrow_p = 1,
selective = 0,
what = IT_CHARACTER,
face_id = 0,
face_box_p = 0,
start_of_box_run_p = 0,
end_of_box_run_p = 0,
overlay_strings_at_end_processed_p = 0,
ignore_overlay_strings_at_pos_p = 0,
glyph_not_available_p = 0,
starts_in_middle_of_char_p = 0,
face_before_selective_p = 0,
constrain_row_ascent_descent_p = 0,
base_face_id = 0,
c = 0,
len = 0,
cmp_id = 0,
cmp_len = 0,
char_to_display = 0,
image_id = 0,
slice = {
x = 9542033,
y = 9542033,
width = 9542033,
height = 9542033
},
space_width = 9542033,
voffset = 0,
font_height = 9542033,
object = 16480548,
position = {
charpos = 662,
bytepos = 663
},
truncate_lines_p = 0,
tab_width = 8,
truncation_pixel_width = 0,
continuation_pixel_width = 0,
first_visible_x = 0,
last_visible_x = 640,
last_visible_y = 646,
extra_line_spacing = 0,
max_extra_line_spacing = 0,
override_ascent = -1,
override_descent = 0,
override_boff = 0,
glyph_row = 0x0,
area = TEXT_AREA,
nglyphs = 0,
pixel_width = 0,
ascent = 0,
descent = 0,
max_ascent = 0,
max_descent = 0,
phys_ascent = 0,
phys_descent = 0,
max_phys_ascent = 0,
max_phys_descent = 0,
current_x = 0,
continuation_lines_width = 0,
current_y = 323,
first_vpos = 0,
vpos = -19,
hpos = 0,
left_user_fringe_bitmap = 0,
right_user_fringe_bitmap = 0,
left_user_fringe_face_id = 0,
right_user_fringe_face_id = 0
}
current_matrix_up_to_date_p = 1
used_current_matrix_p = 0
buffer_unchanged_p = 1
temp_scroll_step = 0
count = 4
rc = <value optimized out>
centering_position = 323
last_line_misfit = <value optimized out>
#9 0x0000000000438df4 in redisplay_window_1 (window=0) at xdisp.c:11686
No locals.
#10 0x000000000052a165 in internal_condition_case_1 (
bfun=0x438dd0 <redisplay_window_1>, arg=12599972, handlers=9918613,
hfun=0x42dcd0 <redisplay_window_error>) at eval.c:1522
val = <value optimized out>
c = {
tag = 9542033,
val = 9542033,
next = 0x7fffffa76b40,
gcpro = 0x0,
jmp = {{
__jmpbuf = {140737482547584, 12599968, 9725040, 0, 1101, 0,
140737482547136, 5415133},
__mask_was_saved = 0,
__saved_mask = {
__val = {1101, 4294967295, 27942160, 9542033, 5682846, 42816528973864,
7014160, 7014200, 11877584, 11877360, 9608, 140737482547584,
4333650, 9542129, 9542129, 9542033}
}
}},
backlist = 0x0,
handlerlist = 0x7fffffa76c50,
lisp_eval_depth = 0,
pdlcount = 4,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
h = {
handler = 9918613,
var = 9542033,
chosen_clause = 12599968,
tag = 0x7fffffa75fe0,
next = 0x7fffffa76c50
}
#11 0x000000000043a0cb in redisplay_internal (
preserve_echo_area=<value optimized out>) at xdisp.c:11296
mini_window = <value optimized out>
mini_frame = <value optimized out>
w = (struct window *) 0xc042a0
f = <value optimized out>
pause = <value optimized out>
must_finish = 1
tlbufpos = {
charpos = 4,
bytepos = 0
}
number_of_visible_frames = 1
count = 2
polling_stopped_here = 0
consider_all_windows_p = 0
#12 0x00000000004cab8d in read_char (commandflag=1, nmaps=2,
maps=0x7fffffa76860, prev_event=9542033, used_mouse_menu=0x7fffffa76970)
at keyboard.c:2549
was_locked = -5805616
c = 9542033
count = <value optimized out>
local_getcjmp = {{
__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
__mask_was_saved = 0,
__saved_mask = {
__val = {0, 8192, 7923076, 0, 5079369, 8192, 7922848, 4, 7922944, 2, 2,
7922852, 5422331, 16, 9704634, 9704632}
}
}}
save_jump = {{
__jmpbuf = {8192, 7923076, 0, 16480548, 1, 5678740, 4, 27968080},
__mask_was_saved = 9542033,
__saved_mask = {
__val = {5682978, 9886209, 16480548, 1, 5678740, 1, 25667616, 9542033,
5682978, 9607505, 16480544, 140737482549280, 9024, 16480548, 1, 9969}
}
}}
key_already_recorded = 0
tem = 16480544
save = 0
previous_echo_area_message = 9542033
also_record = 9542033
reread = 0
polling_stopped_here = <value optimized out>
#13 0x00000000004cd0b3 in read_key_sequence (keybuf=0x7fffffa769f0,
bufsize=30, prompt=9542033, dont_downcase_last=0,
can_return_switch_frame=1, fix_current_buffer=1) at keyboard.c:8864
interrupted_kboard = (KBOARD *) 0xb9af20
key = 0
used_mouse_menu = 0
echo_local_start = 0
last_real_key_start = 0
keys_local_start = 0
local_first_binding = 0
from_string = 9542033
count = 2
t = 0
echo_start = 0
keys_start = 0
nmaps = 2
nmaps_allocated = 2
defs = (Lisp_Object * volatile) 0x7fffffa76840
submaps = (Lisp_Object * volatile) 0x7fffffa76860
orig_local_map = 28057845
orig_keymap = 9542033
localized_local_map = 0
first_binding = 0
first_unbound = 31
mock_input = 0
fkey = {
map = 9525573,
parent = 9525573,
start = 0,
end = 0
}
keytran = {
map = 20240613,
parent = 20240613,
start = 0,
end = 0
}
delayed_switch_frame = 9542033
original_uppercase = 140737482549648
original_uppercase_position = -1
starting_buffer = (struct buffer *) 0xfb7920
fake_prefixed_keys = 9542033
#14 0x00000000004cedd2 in command_loop_1 () at keyboard.c:1536
cmd = <value optimized out>
lose = <value optimized out>
nonundocount = 0
keybuf = {9594593, 48, 4294967330, 8542660, 4289162144, 8542656,
8542660, 140737482551944, 140737482551672, 1, 140737482550032, 5420640,
110932256, 4225323, 678102308709466112, 40, 47795246459272, 47795246506888,
47795246526580, 8144949, 0, 562949957645829, 47795253829464, 47795203644720,
0, 140737482549976, 140737482549744, 0, 9542033, 28234769}
i = <value optimized out>
prev_modiff = 86
prev_buffer = (struct buffer *) 0xfb7920
was_locked = 0
already_adjusted = 0
#15 0x000000000052a406 in internal_condition_case (
bfun=0x4cec20 <command_loop_1>, handlers=9624001,
hfun=0x4c6c50 <cmd_error>) at eval.c:1474
val = <value optimized out>
c = {
tag = 9542033,
val = 9542033,
next = 0x7fffffa76cb0,
gcpro = 0x0,
jmp = {{
__jmpbuf = {0, 1, 0, 140737482551944, 140737482551672, 1,
140737482550048, 5415817},
__mask_was_saved = 0,
__saved_mask = {
__val = {22772784, 21, 21, 140737482551944, 140737482550514,
47795246501632, 47795246444544, 47795233388448, 7006600, 0,
140737482551944, 140737482551672, 1, 1, 47795202545283, 1}
}
}},
backlist = 0x0,
handlerlist = 0x0,
lisp_eval_depth = 0,
pdlcount = 2,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
h = {
handler = 9624001,
var = 9542033,
chosen_clause = 9542033,
tag = 0x7fffffa76b40,
next = 0x0
}
#16 0x00000000004c0b1a in command_loop_2 () at keyboard.c:1328
val = <value optimized out>
#17 0x0000000000529ff7 in internal_catch (tag=<value optimized out>,
func=0x4c0b00 <command_loop_2>, arg=9542033) at eval.c:1212
c = {
tag = 9600033,
val = 9542033,
next = 0x0,
gcpro = 0x0,
jmp = {{
__jmpbuf = {0, 1, 0, 140737482551944, 140737482551672, 1,
140737482550432, 5414891},
__mask_was_saved = 0,
__saved_mask = {
__val = {0, 47335165030032, 0, 5636304, 0, 0, 9924098, 9924096,
9937728, 9582272, 9937729, 9542033, 5347750, 0, 4294967296, 9542081}
}
}},
backlist = 0x0,
handlerlist = 0x0,
lisp_eval_depth = 0,
pdlcount = 2,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
#18 0x00000000004c0928 in command_loop () at keyboard.c:1307
No locals.
#19 0x00000000004c09c1 in recursive_edit_1 () at keyboard.c:1000
count = <value optimized out>
val = <value optimized out>
#20 0x00000000004c0ac3 in Frecursive_edit () at keyboard.c:1061
count = <value optimized out>
buffer = <value optimized out>
#21 0x00000000004bfb45 in main (argc=2, argv=0x7fffffa77288) at emacs.c:1797
tz = 0x0
dummy = 0
stack_bottom_variable = 0 '\0'
do_initial_setlocale = <value optimized out>
skip_args = 0
rlim = {
rlim_cur = 8720000,
rlim_max = 18446744073709551615
}
no_loadup = 0
junk = 0x0
xbacktrace
(no output)
In GNU Emacs 23.0.0.1 (x86_64-pc-linux-gnu, GTK+ Version 2.8.17)
of 2006-05-30 on mipc240, modified by Debian
X server distributor `The X.Org Foundation', version 11.0.70000000
configured using `configure '--build' 'x86_64-linux-gnu' '--host'
'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib'
'--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info'
'--mandir=/usr/share/man' '--with-pop=yes'
'--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/23.0.0/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.0.0/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.0.0/leim'
'--with-x=yes' '--with-x-toolkit=gtk' '--with-xft=yes' 'CFLAGS=-DDEBIAN -g -O2
-Wno-pointer-sign' 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: C
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_GB.UTF-8
locale-coding-system: utf-8-unix
default-enable-multibyte-characters: t
Major mode: Lisp Interaction
Minor modes in effect:
tooltip-mode: t
auto-compression-mode: t
tool-bar-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
line-number-mode: t
Recent input:
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
M-x r e p o r t <tab> <return>
Recent messages:
(emacs-snapshot-gtk -Q)
For information about the GNU Project and its goals, type C-h C-p.
Loading emacsbug...
Loading regexp-opt...done
Loading emacsbug...done
- unicode-xft: wrong unicode characters and crashes,
Meik Hellmund <=