* bug#15405: 24.3; #[] freezes emacs
@ 2013-09-18 1:50 Leo Liu
2013-09-18 7:23 ` Andreas Schwab
2013-09-18 14:36 ` Barry OReilly
0 siblings, 2 replies; 32+ messages in thread
From: Leo Liu @ 2013-09-18 1:50 UTC (permalink / raw)
To: 15405
1. M-: #[] RET
2. M-: #[] RET
Emacs frozen.
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 1:50 bug#15405: 24.3; #[] freezes emacs Leo Liu
@ 2013-09-18 7:23 ` Andreas Schwab
2013-09-18 14:36 ` Barry OReilly
1 sibling, 0 replies; 32+ messages in thread
From: Andreas Schwab @ 2013-09-18 7:23 UTC (permalink / raw)
To: Leo Liu; +Cc: 15405
Leo Liu <sdl.web@gmail.com> writes:
> 1. M-: #[] RET
> 2. M-: #[] RET
>
> Emacs frozen.
I cannot reproduce that.
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 1:50 bug#15405: 24.3; #[] freezes emacs Leo Liu
2013-09-18 7:23 ` Andreas Schwab
@ 2013-09-18 14:36 ` Barry OReilly
2013-09-18 15:07 ` Eli Zaretskii
1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 14:36 UTC (permalink / raw)
To: sdl.web, 15405
[-- Attachment #1: Type: text/plain, Size: 4509 bytes --]
I didn't witness a freeze, but I opened emacs -Q, did M-: #[] twice,
moved point around without a problem, then did C-x 3 and Emacs core
dumped.
Core was generated by `emacs --reverse-video -Q'.
Program terminated with signal 11, Segmentation fault.
#0 0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
(gdb) bt
#0 0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
#1 0x00000000004d0e35 in terminate_due_to_signal (sig=11,
backtrace_limit=40) at emacs.c:369
#2 0x00000000004ea6fe in handle_fatal_signal (sig=11227) at sysdep.c:1626
#3 0x00000000004eaab3 in deliver_thread_signal (sig=11) at sysdep.c:1600
#4 deliver_fatal_thread_signal (sig=11) at sysdep.c:1638
#5 <signal handler called>
#6 0x0000000000554a72 in AREF (f=0x11093b0, spec=11925893) at lisp.h:1170
#7 font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
#8 font_list_entities (f=0x11093b0, spec=11925893) at font.c:2747
#9 0x0000000000558574 in font_find_for_lface (f=0x11093b0,
attrs=0x7fff12382d00, spec=11845218, c=-1) at font.c:3206
#10 0x0000000000558a6b in font_load_for_lface (f=0x8091c5, attrs=0xb8c2f2,
spec=8425920) at font.c:3276
#11 0x00000000004a1882 in realize_x_face (cache=0xd8eb80,
attrs=0x7fff12382d00, former_face_id=<value optimized out>) at xfaces.c:5529
#12 realize_face (cache=0xd8eb80, attrs=0x7fff12382d00,
former_face_id=<value optimized out>) at xfaces.c:5422
#13 0x00000000004a2661 in lookup_face (f=<value optimized out>,
attr=0x7fff12382d00) at xfaces.c:4411
#14 0x00000000004a36b1 in face_at_string_position (w=<value optimized out>,
string=<value optimized out>, pos=<value optimized out>, bufpos=0,
region_beg=-1, region_end=-1, endptr=0x7fff12382e10,
base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0) at xfaces.c:6194
#15 0x000000000044688c in display_string (string=0xb533e8 "*scratch*",
lisp_string=11874225, face_string=15529169, face_string_pos=1, start=<value
optimized out>, it=0x7fff12383050, field_width=12, precision=-8,
max_x=<value optimized out>, multibyte=0) at xdisp.c:22278
#16 0x0000000000446f3c in display_mode_element (it=0x7fff12383050, depth=4,
field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
risky=0) at xdisp.c:21031
#17 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=3,
field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
risky=0) at xdisp.c:21203
#18 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=1,
field_width=0, precision=0, elt=<value optimized out>, props=11845218,
risky=0) at xdisp.c:21203
#19 0x0000000000447e44 in display_mode_line (w=<value optimized out>,
face_id=MODE_LINE_INACTIVE_FACE_ID, format=15394390) at xdisp.c:20720
#20 0x0000000000448120 in display_mode_lines (w=0x1140870) at xdisp.c:20665
#21 0x0000000000453710 in redisplay_window (window=18090101,
just_this_one_p=0) at xdisp.c:16104
#22 0x0000000000456ad6 in redisplay_window_0 (window=8425925) at
xdisp.c:13800
#23 0x0000000000541e33 in internal_condition_case_1 (bfun=0x456ab0
<redisplay_window_0>, arg=18090101, handlers=12055734, hfun=0x425e60
<redisplay_window_error>) at eval.c:1376
#24 0x000000000043275d in redisplay_windows (window=12108530) at
xdisp.c:13780
#25 0x0000000000432724 in redisplay_windows (window=12108530) at
xdisp.c:13774
#26 0x00000000004579ca in redisplay_internal () at xdisp.c:13393
#27 0x00000000004debaa in read_char (commandflag=1, map=20004342,
prev_event=11845218, used_mouse_menu=0x7fff123894ef, end_time=0x0) at
keyboard.c:2551
#28 0x00000000004e0381 in read_key_sequence (keybuf=0x7fff12389550,
bufsize=30, prompt=11845218, dont_downcase_last=false,
can_return_switch_frame=true, fix_current_buffer=true) at keyboard.c:9057
#29 0x00000000004e1fc7 in command_loop_1 () at keyboard.c:1434
#30 0x0000000000541cde in internal_condition_case (bfun=0x4e1d40
<command_loop_1>, handlers=11904962, hfun=0x4d9110 <cmd_error>) at
eval.c:1339
#31 0x00000000004d929a in command_loop_2 (ignore=<value optimized out>) at
keyboard.c:1161
#32 0x0000000000541b9b in internal_catch (tag=<value optimized out>,
func=0x4d9280 <command_loop_2>, arg=11845218) at eval.c:1113
#33 0x00000000004d8660 in command_loop () at keyboard.c:1140
#34 recursive_edit_1 () at keyboard.c:779
#35 0x00000000004d9f86 in Frecursive_edit () at keyboard.c:843
#36 0x00000000004d1b0d in main (argc=<value optimized out>,
argv=0x7fff12389b28) at emacs.c:1570
(gdb)
This was a build of commit d6daa95f46bf36fc4428b511040d97153a6f8dab of
the Savannah Git repo, dated Aug 30.
[-- Attachment #2: Type: text/html, Size: 4870 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 14:36 ` Barry OReilly
@ 2013-09-18 15:07 ` Eli Zaretskii
2013-09-18 15:14 ` Barry OReilly
0 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 15:07 UTC (permalink / raw)
To: Barry OReilly; +Cc: 15405, sdl.web
> Date: Wed, 18 Sep 2013 10:36:36 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
>
> I didn't witness a freeze, but I opened emacs -Q, did M-: #[] twice,
> moved point around without a problem, then did C-x 3 and Emacs core
> dumped.
Doesn't happen here, but my Emacs is compiled without optimizations,
FWIW.
> Core was generated by `emacs --reverse-video -Q'.
> Program terminated with signal 11, Segmentation fault.
> #0 0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
> (gdb) bt
> #0 0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
> #1 0x00000000004d0e35 in terminate_due_to_signal (sig=11,
> backtrace_limit=40) at emacs.c:369
> #2 0x00000000004ea6fe in handle_fatal_signal (sig=11227) at sysdep.c:1626
> #3 0x00000000004eaab3 in deliver_thread_signal (sig=11) at sysdep.c:1600
> #4 deliver_fatal_thread_signal (sig=11) at sysdep.c:1638
> #5 <signal handler called>
> #6 0x0000000000554a72 in AREF (f=0x11093b0, spec=11925893) at lisp.h:1170
> #7 font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
> #8 font_list_entities (f=0x11093b0, spec=11925893) at font.c:2747
> #9 0x0000000000558574 in font_find_for_lface (f=0x11093b0,
> attrs=0x7fff12382d00, spec=11845218, c=-1) at font.c:3206
> #10 0x0000000000558a6b in font_load_for_lface (f=0x8091c5, attrs=0xb8c2f2,
> spec=8425920) at font.c:3276
> #11 0x00000000004a1882 in realize_x_face (cache=0xd8eb80,
> attrs=0x7fff12382d00, former_face_id=<value optimized out>) at xfaces.c:5529
> #12 realize_face (cache=0xd8eb80, attrs=0x7fff12382d00,
> former_face_id=<value optimized out>) at xfaces.c:5422
> #13 0x00000000004a2661 in lookup_face (f=<value optimized out>,
> attr=0x7fff12382d00) at xfaces.c:4411
> #14 0x00000000004a36b1 in face_at_string_position (w=<value optimized out>,
> string=<value optimized out>, pos=<value optimized out>, bufpos=0,
> region_beg=-1, region_end=-1, endptr=0x7fff12382e10,
> base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0) at xfaces.c:6194
> #15 0x000000000044688c in display_string (string=0xb533e8 "*scratch*",
> lisp_string=11874225, face_string=15529169, face_string_pos=1, start=<value
> optimized out>, it=0x7fff12383050, field_width=12, precision=-8,
> max_x=<value optimized out>, multibyte=0) at xdisp.c:22278
> #16 0x0000000000446f3c in display_mode_element (it=0x7fff12383050, depth=4,
> field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
> risky=0) at xdisp.c:21031
> #17 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=3,
> field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
> risky=0) at xdisp.c:21203
> #18 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=1,
> field_width=0, precision=0, elt=<value optimized out>, props=11845218,
> risky=0) at xdisp.c:21203
> #19 0x0000000000447e44 in display_mode_line (w=<value optimized out>,
> face_id=MODE_LINE_INACTIVE_FACE_ID, format=15394390) at xdisp.c:20720
This crash happens when Emacs tries to display the mode line of the
non-selected window. Can you show the values of vec and of i in frame
#7?
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 15:07 ` Eli Zaretskii
@ 2013-09-18 15:14 ` Barry OReilly
2013-09-18 15:27 ` Eli Zaretskii
0 siblings, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 15:14 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 15405, sdl.web
[-- Attachment #1: Type: text/plain, Size: 241 bytes --]
(gdb) f 7
#7 font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
warning: Source file is more recent than executable.
2624 entity = AREF (vec, i);
(gdb) p vec
$1 = <value optimized out>
(gdb) p i
$2 = 201326591
(gdb)
[-- Attachment #2: Type: text/html, Size: 304 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 15:14 ` Barry OReilly
@ 2013-09-18 15:27 ` Eli Zaretskii
2013-09-18 15:41 ` Stephen Berman
0 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 15:27 UTC (permalink / raw)
To: Barry OReilly; +Cc: 15405, sdl.web
> Date: Wed, 18 Sep 2013 11:14:58 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
> Cc: sdl.web@gmail.com, 15405@debbugs.gnu.org
>
> (gdb) f 7
> #7 font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
> warning: Source file is more recent than executable.
> 2624 entity = AREF (vec, i);
> (gdb) p vec
> $1 = <value optimized out>
> (gdb) p i
> $2 = 201326591
> (gdb)
Unhelpful, sigh... Can you try reproducing this in an unoptimized
build, where GDB will show values we can trust?
Thanks.
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 15:27 ` Eli Zaretskii
@ 2013-09-18 15:41 ` Stephen Berman
2013-09-18 16:26 ` Eli Zaretskii
0 siblings, 1 reply; 32+ messages in thread
From: Stephen Berman @ 2013-09-18 15:41 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Barry OReilly, 15405, sdl.web
On Wed, 18 Sep 2013 18:27:19 +0300 Eli Zaretskii <eliz@gnu.org> wrote:
>> Date: Wed, 18 Sep 2013 11:14:58 -0400
>> From: Barry OReilly <gundaetiapo@gmail.com>
>> Cc: sdl.web@gmail.com, 15405@debbugs.gnu.org
>>
>> (gdb) f 7
>> #7 font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
>> warning: Source file is more recent than executable.
>> 2624 entity = AREF (vec, i);
>> (gdb) p vec
>> $1 = <value optimized out>
>> (gdb) p i
>> $2 = 201326591
>> (gdb)
>
> Unhelpful, sigh... Can you try reproducing this in an unoptimized
> build, where GDB will show values we can trust?
>
> Thanks.
I also get a segfault with emacs -Q, M-: #[], M-: #[], C-x 3; backtrace below.
In GNU Emacs 24.3.50.4 (x86_64-suse-linux-gnu, GTK+ Version 3.4.4)
of 2013-09-12 on rosalinde
Bzr revision: 114244 xfq.free@gmail.com-20130912122217-i1l0xo8mslcti8bu
Windowing system distributor `The X.Org Foundation', version 11.0.11203000
System Description: openSUSE 12.2 (x86_64)
Configured using:
`configure --without-toolkit-scroll-bars 'CFLAGS=-g3 -O0''
Important settings:
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=local
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
(gdb) r -Q
Starting program: /data/steve/lib/emacs/gtk/src/emacs -Q
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffec4d9700 (LWP 12680)]
Detaching after fork from child process 12681.
Detaching after fork from child process 12682.
[New Thread 0x7fffe9935700 (LWP 12683)]
[New Thread 0x7fffe9134700 (LWP 12684)]
Detaching after fork from child process 12685.
[New Thread 0x7fffd95af700 (LWP 12686)]
Program received signal SIGSEGV, Segmentation fault.
0x0000000000595b98 in AREF (array=9179653, idx=201326591)
at /data/steve/bzr/emacs/quickfixes/src/lisp.h:1170
1170 return XVECTOR (array)->contents[idx];
(gdb) bt full
#0 0x0000000000595b98 in AREF (array=9179653, idx=201326591)
at /data/steve/bzr/emacs/quickfixes/src/lisp.h:1170
No locals.
#1 0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=19000077,
size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
entity = 12809621
val = 12612338
prop = 32767
i = 201326591
#2 0x00000000005d1c6c in font_list_entities (f=0x11ccd30, spec=19000077)
at /data/steve/bzr/emacs/quickfixes/src/font.c:2747
cache = 16364646
driver_list = 0x1574990
ftype = 12612338
val = 9179653
list = 20752454
size = 0
need_filtering = true
i = 0
#3 0x00000000005d35fa in font_find_for_lface (f=0x11ccd30, attrs=
0x7fffffff9050, spec=23956789, c=-1)
at /data/steve/bzr/emacs/quickfixes/src/font.c:3206
work = 19000077
entities = 5750772
---Type <return> to continue, or q <return> to quit---
val = 24014354
foundry = {16211730, 9179653, 140737488326256}
family = 0x7fffffff8d70
registry = {12916738, 9179653, 0}
adstyle = {12612338, 9179653, 77}
pixel_size = 15
i = 0
j = 0
k = 0
l = 0
sa_count = 8
sa_must_free = false
#4 0x00000000005d38f6 in font_load_for_lface (f=0x11ccd30, attrs=
0x7fffffff9050, spec=23956789)
at /data/steve/bzr/emacs/quickfixes/src/font.c:3276
entity = 23956789
name = 5856228
#5 0x00000000004eb6fd in realize_x_face (cache=0xcb50c0, attrs=0x7fffffff9050)
at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:5531
fontset = 2
face = 0x1c16fb0
default_face = 0x16b34f0
f = 0x11ccd30
stipple = 12654370
---Type <return> to continue, or q <return> to quit---
underline = 9696737
overline = 12654370
strike_through = 12654370
box = 0
#6 0x00000000004eb3a8 in realize_face (cache=0xcb50c0, attrs=0x7fffffff9050,
former_face_id=-1) at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:5423
face = 0x0
#7 0x00000000004e8fe9 in lookup_face (f=0x11ccd30, attr=0x7fffffff9050)
at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:4412
cache = 0xcb50c0
hash = 1192808
i = 617
face = 0x0
#8 0x00000000004eccea in face_at_string_position (w=0x121e960, string=
16184305, pos=1, bufpos=0, region_beg=-1, region_end=-1, endptr=
0x7fffffff9188, base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0)
at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:6195
prop = 16081570
position = 4
end = 16
limit = 16
f = 0x11ccd30
attrs = {12612914, 13247729, 9437897, 12653794, 452, 12654034,
12653794, 12612338, 12612338, 9696673, 9696737, 12612338, 12612338,
---Type <return> to continue, or q <return> to quit---
12612338, 9696566, 23956789, 12612338, 13248193}
base_face = 0xce7de0
multibyte_p = false
prop_name = 12612914
#9 0x0000000000467fe0 in display_string (string=0xc0e818 "*scratch*",
lisp_string=12641249, face_string=16184305, face_string_pos=1, start=0, it=
0x7fffffff9650, field_width=12, precision=-8, max_x=0, multibyte=0)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:22284
endptr = 4
face = 0x595a2a <SDATA+24>
hpos_at_start = 8
saved_face_id = 2
row = 0x1c19e60
it_charpos = 12641249
#10 0x0000000000464dec in display_mode_element (it=0x7fffffff9650, depth=4,
field_width=0, precision=-8, elt=16184305, props=12612338, risky=0)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:21036
nglyphs_before = 8
nwritten = -6
multibyte = false
bytepos = 1
charpos = 1
spec = 0xc0e818 "*scratch*"
string = 12641249
---Type <return> to continue, or q <return> to quit---
percent_position = 1
last_offset = 0
c = 98 'b'
offset = 4
n = 0
field = 12
prec = -8
literal = 0
#11 0x0000000000465303 in display_mode_element (it=0x7fffffff9650, depth=3,
field_width=0, precision=-8, elt=16129126, props=12612338, risky=0)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:21208
halftail = 16129126
len = 0
car = 0
tem = 4289776
n = 0
field = 0
prec = 0
literal = 0
#12 0x0000000000465303 in display_mode_element (it=0x7fffffff9650, depth=1,
field_width=0, precision=0, elt=16234998, props=12612338, risky=0)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:21208
halftail = 16235526
len = 7
---Type <return> to continue, or q <return> to quit---
car = 16083841
tem = 4289776
n = 8
field = 5780140
prec = 0
literal = 0
#13 0x0000000000464269 in display_mode_line (w=0x121e960, face_id=
MODE_LINE_INACTIVE_FACE_ID, format=16235606)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:20725
it = {
window = 18999653,
w = 0x121e960,
f = 0x11ccd30,
method = GET_FROM_STRING,
stop_charpos = 12,
prev_stop = 0,
base_level_stop = 0,
end_charpos = 12,
s = 0x0,
string_nchars = 9,
region_beg_charpos = -1,
region_end_charpos = -1,
redisplay_end_trigger_charpos = 0,
multibyte_p = 0,
---Type <return> to continue, or q <return> to quit---
header_line_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
from_disp_prop_p = 0,
ellipsis_p = 0,
avoid_cursor_p = 0,
dp = 0x0,
dpvec = 0x0,
dpend = 0x0,
dpvec_char_len = 0,
dpvec_face_id = 0,
saved_face_id = 2,
ctl_chars = {0 <repeats 16 times>},
start = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
bytepos = 0
},
dpvec_index = 0
---Type <return> to continue, or q <return> to quit---
},
current = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = -1,
string_pos = {
charpos = 0,
bytepos = 0
},
dpvec_index = -1
},
n_overlay_strings = 0,
overlay_strings_charpos = 0,
overlay_strings = {0 <repeats 16 times>},
string_overlays = {0 <repeats 16 times>},
string = 12641249,
from_overlay = 0,
stack = {{
string = 0,
string_nchars = 0,
end_charpos = 0,
stop_charpos = 0,
---Type <return> to continue, or q <return> to quit---
prev_stop = 0,
base_level_stop = 0,
cmp_it = {
stop_pos = 0,
id = 0,
ch = 0,
rule_idx = 0,
lookback = 0,
nglyphs = 0,
reversed_p = false,
charpos = 0,
nchars = 0,
nbytes = 0,
from = 0,
to = 0,
width = 0
},
face_id = 0,
u = {
image = {
object = 0,
slice = {
x = 0,
y = 0,
---Type <return> to continue, or q <return> to quit---
width = 0,
height = 0
},
image_id = 0
},
comp = {
object = 0
},
stretch = {
object = 0
}
},
position = {
charpos = 0,
bytepos = 0
},
current = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
---Type <return> to continue, or q <return> to quit---
bytepos = 0
},
dpvec_index = 0
},
from_overlay = 0,
area = LEFT_MARGIN_AREA,
method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR,
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = TRUNCATE,
voffset = 0,
space_width = 0,
font_height = 0
}, {
string = 0,
string_nchars = 0,
end_charpos = 0,
stop_charpos = 0,
---Type <return> to continue, or q <return> to quit---
prev_stop = 0,
base_level_stop = 0,
cmp_it = {
stop_pos = 0,
id = 0,
ch = 0,
rule_idx = 0,
lookback = 0,
nglyphs = 0,
reversed_p = false,
charpos = 0,
nchars = 0,
nbytes = 0,
from = 0,
to = 0,
width = 0
},
face_id = 0,
u = {
image = {
object = 0,
slice = {
x = 0,
y = 0,
---Type <return> to continue, or q <return> to quit---
width = 0,
height = 0
},
image_id = 0
},
comp = {
object = 0
},
stretch = {
object = 0
}
},
position = {
charpos = 0,
bytepos = 0
},
current = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
---Type <return> to continue, or q <return> to quit---
bytepos = 0
},
dpvec_index = 0
},
from_overlay = 0,
area = LEFT_MARGIN_AREA,
method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR,
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = TRUNCATE,
voffset = 0,
space_width = 0,
font_height = 0
}, {
string = 0,
string_nchars = 0,
end_charpos = 0,
stop_charpos = 0,
---Type <return> to continue, or q <return> to quit---
prev_stop = 0,
base_level_stop = 0,
cmp_it = {
stop_pos = 0,
id = 0,
ch = 0,
rule_idx = 0,
lookback = 0,
nglyphs = 0,
reversed_p = false,
charpos = 0,
nchars = 0,
nbytes = 0,
from = 0,
to = 0,
width = 0
},
face_id = 0,
u = {
image = {
object = 0,
slice = {
x = 0,
y = 0,
---Type <return> to continue, or q <return> to quit---
width = 0,
height = 0
},
image_id = 0
},
comp = {
object = 0
},
stretch = {
object = 0
}
},
position = {
charpos = 0,
bytepos = 0
},
current = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
---Type <return> to continue, or q <return> to quit---
bytepos = 0
},
dpvec_index = 0
},
from_overlay = 0,
area = LEFT_MARGIN_AREA,
method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR,
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = TRUNCATE,
voffset = 0,
space_width = 0,
font_height = 0
}, {
string = 0,
string_nchars = 0,
end_charpos = 0,
stop_charpos = 0,
---Type <return> to continue, or q <return> to quit---
prev_stop = 0,
base_level_stop = 0,
cmp_it = {
stop_pos = 0,
id = 0,
ch = 0,
rule_idx = 0,
lookback = 0,
nglyphs = 0,
reversed_p = false,
charpos = 0,
nchars = 0,
nbytes = 0,
from = 0,
to = 0,
width = 0
},
face_id = 0,
u = {
image = {
object = 0,
slice = {
x = 0,
y = 0,
---Type <return> to continue, or q <return> to quit---
width = 0,
height = 0
},
image_id = 0
},
comp = {
object = 0
},
stretch = {
object = 0
}
},
position = {
charpos = 0,
bytepos = 0
},
current = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
---Type <return> to continue, or q <return> to quit---
bytepos = 0
},
dpvec_index = 0
},
from_overlay = 0,
area = LEFT_MARGIN_AREA,
method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR,
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = TRUNCATE,
voffset = 0,
space_width = 0,
font_height = 0
}, {
string = 0,
string_nchars = 0,
end_charpos = 0,
stop_charpos = 0,
---Type <return> to continue, or q <return> to quit---
prev_stop = 0,
base_level_stop = 0,
cmp_it = {
stop_pos = 0,
id = 0,
ch = 0,
rule_idx = 0,
lookback = 0,
nglyphs = 0,
reversed_p = false,
charpos = 0,
nchars = 0,
nbytes = 0,
from = 0,
to = 0,
width = 0
},
face_id = 0,
u = {
image = {
object = 0,
slice = {
x = 0,
y = 0,
---Type <return> to continue, or q <return> to quit---
width = 0,
height = 0
},
image_id = 0
},
comp = {
object = 0
},
stretch = {
object = 0
}
},
position = {
charpos = 0,
bytepos = 0
},
current = {
pos = {
charpos = 0,
bytepos = 0
},
overlay_string_index = 0,
string_pos = {
charpos = 0,
---Type <return> to continue, or q <return> to quit---
bytepos = 0
},
dpvec_index = 0
},
from_overlay = 0,
area = LEFT_MARGIN_AREA,
method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR,
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = TRUNCATE,
voffset = 0,
space_width = 0,
font_height = 0
}},
sp = 0,
selective = 0,
what = IT_EOB,
face_id = 2,
---Type <return> to continue, or q <return> to quit---
selective_display_ellipsis_p = 1,
ctl_arrow_p = 1,
face_box_p = 1,
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,
line_wrap = TRUNCATE,
base_face_id = 2,
c = 32,
len = 1,
cmp_it = {
stop_pos = 0,
id = -1,
ch = -2,
rule_idx = 0,
lookback = 0,
nglyphs = 0,
reversed_p = false,
charpos = 0,
---Type <return> to continue, or q <return> to quit---
nchars = 0,
nbytes = 0,
from = 0,
to = 0,
width = 0
},
char_to_display = 32,
glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
image_id = 0,
slice = {
x = 12612338,
y = 12612338,
width = 12612338,
height = 12612338
},
space_width = 12612338,
voffset = 0,
tab_width = 8,
font_height = 12612338,
object = 9447465,
position = {
charpos = 1,
bytepos = 1
},
---Type <return> to continue, or q <return> to quit---
truncation_pixel_width = 9,
continuation_pixel_width = 0,
first_visible_x = 0,
last_visible_x = 378,
last_visible_y = 594,
extra_line_spacing = 0,
max_extra_line_spacing = 0,
override_ascent = -1,
override_descent = 0,
override_boff = 0,
glyph_row = 0x1c19e60,
area = TEXT_AREA,
nglyphs = 1,
pixel_width = 9,
ascent = 14,
descent = 4,
max_ascent = 14,
max_descent = 4,
phys_ascent = 0,
phys_descent = 0,
max_phys_ascent = 11,
max_phys_descent = 0,
current_x = 73,
continuation_lines_width = 0,
---Type <return> to continue, or q <return> to quit---
eol_pos = {
charpos = 0,
bytepos = 0
},
current_y = 0,
first_vpos = 0,
vpos = 0,
hpos = 8,
left_user_fringe_bitmap = 0,
right_user_fringe_bitmap = 0,
left_user_fringe_face_id = 0,
right_user_fringe_face_id = 0,
bidi_p = 1,
bidi_it = {
bytepos = 0,
charpos = 0,
ch = -1,
nchars = -1,
ch_len = 1,
type = NEUTRAL_B,
type_after_w1 = NEUTRAL_B,
orig_type = NEUTRAL_B,
resolved_level = 0,
invalid_levels = 0,
---Type <return> to continue, or q <return> to quit---
invalid_rl_levels = -1,
prev = {
bytepos = 1,
charpos = 1,
type = UNKNOWN_BT,
type_after_w1 = UNKNOWN_BT,
orig_type = UNKNOWN_BT
},
last_strong = {
bytepos = 0,
charpos = 0,
type = UNKNOWN_BT,
type_after_w1 = UNKNOWN_BT,
orig_type = UNKNOWN_BT
},
next_for_neutral = {
bytepos = 0,
charpos = -1,
type = UNKNOWN_BT,
type_after_w1 = UNKNOWN_BT,
orig_type = UNKNOWN_BT
},
prev_for_neutral = {
bytepos = 2,
---Type <return> to continue, or q <return> to quit---
charpos = -1,
type = UNKNOWN_BT,
type_after_w1 = UNKNOWN_BT,
orig_type = UNKNOWN_BT
},
next_for_ws = {
bytepos = 2,
charpos = 2,
type = NEUTRAL_B,
type_after_w1 = UNKNOWN_BT,
orig_type = UNKNOWN_BT
},
next_en_pos = 0,
next_en_type = UNKNOWN_BT,
ignore_bn_limit = -1,
sor = L2R,
scan_dir = 1,
disp_pos = -1,
disp_prop = 0,
stack_idx = 0,
level_stack = {{
level = 0,
override = NEUTRAL_DIR
} <repeats 64 times>},
---Type <return> to continue, or q <return> to quit---
string = {
lstring = 12641249,
s = 0x0,
schars = 9,
bufpos = 0,
from_disp_str = 0,
unibyte = 1
},
w = 0x121e960,
paragraph_dir = NEUTRAL_DIR,
separator_limit = -1,
prev_was_pdf = 0,
first_elt = 1,
new_paragraph = 1,
frame_window_p = 1
},
paragraph_embedding = L2R
}
face = 0x59668c <BUFFERP+29>
count = 6
#14 0x000000000046401b in display_mode_lines (w=0x121e960)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:20670
sel_w = 0x11ccf18
old_selected_window = 18665245
---Type <return> to continue, or q <return> to quit---
old_selected_frame = 18664757
new_frame = 18664757
old_frame_selected_window = 18665245
n = 0
#15 0x0000000000455e7c in redisplay_window (window=18999653, just_this_one_p=0)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:16114
w = 0x121e960
f = 0x11ccd30
buffer = 0xc10c40
old = 0xc10c40
lpoint = {
charpos = 192,
bytepos = 192
}
opoint = {
charpos = 192,
bytepos = 192
}
startp = {
charpos = 1,
bytepos = 1
}
update_mode_line = 1
tem = 0
---Type <return> to continue, or q <return> to quit---
it = {
window = 0,
w = 0x0,
f = 0x64,
method = 1634230119,
stop_charpos = 0,
prev_stop = 0,
base_level_stop = 0,
end_charpos = 0,
s = 0x3ff0000000000000 <Address 0x3ff0000000000000 out of bounds>,
string_nchars = 0,
region_beg_charpos = 4607182418800017408,
region_end_charpos = 140737250186747,
redisplay_end_trigger_charpos = 0,
multibyte_p = 0,
header_line_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
from_disp_prop_p = 0,
ellipsis_p = 0,
avoid_cursor_p = 0,
dp = 0x15782f4,
dpvec = 0xffffffffffffffff,
dpend = 0x1578280,
---Type <return> to continue, or q <return> to quit---
dpvec_char_len = -283754549,
dpvec_face_id = 32767,
saved_face_id = 0,
ctl_chars = {0, 0, 23559200, 2, 22607072, 140737488335736, 23559200,
2, 22607072, 140737488335736, 0, 2147483647, 140737279606278, 4403,
22512280, 140737488335736},
start = {
pos = {
charpos = 23559200,
bytepos = 2
},
overlay_string_index = 140737279606409,
string_pos = {
charpos = 29445024,
bytepos = 23301808
},
dpvec_index = 2
},
current = {
pos = {
charpos = 140737279509068,
bytepos = 0
},
overlay_string_index = 140737279621622,
---Type <return> to continue, or q <return> to quit---
string_pos = {
charpos = 140737488335736,
bytepos = 23301808
},
dpvec_index = 1
},
n_overlay_strings = 140737279508075,
overlay_strings_charpos = 23301808,
overlay_strings = {0, 23301808, 140737279512008, 0, 23313952,
22607072, 140737302643873, 0, 23313952, 22607072, 0, 23319408,
140737302643825, 22607072, 0, 23319408},
string_overlays = {140737302643825, 23319408, 140737302398525,
22607072, 2147483647, 2, 22607072, 22607072, 12884901888, 18664752,
140737488335832, 5858739, 16993912649, 18664757, 2, 18664752},
string = 140737488335856,
from_overlay = 5859080,
stack = {{
string = 18664757,
string_nchars = -19440,
end_charpos = 4380087,
stop_charpos = 22512256,
prev_stop = 18664752,
base_level_stop = 140737488336016,
cmp_it = {
---Type <return> to continue, or q <return> to quit---
stop_pos = 5454175,
id = 0,
ch = 0,
rule_idx = 0,
lookback = 0,
nglyphs = 0,
reversed_p = false,
charpos = 0,
nchars = 0,
nbytes = 0,
from = 0,
to = 0,
width = 0
},
face_id = 8,
u = {
image = {
object = 4294967296,
slice = {
x = 4294948096,
y = 0,
width = 0,
height = 5730352
},
---Type <return> to continue, or q <return> to quit---
image_id = 140737488336048
},
comp = {
object = 4294967296
},
stretch = {
object = 4294967296
}
},
position = {
charpos = 5454899,
bytepos = 140737488346592
},
current = {
pos = {
charpos = 0,
bytepos = 140737488336064
},
overlay_string_index = 5454932,
string_pos = {
charpos = 140737488336096,
bytepos = 5454976
},
dpvec_index = 0
---Type <return> to continue, or q <return> to quit---
},
from_overlay = 0,
area = -19216,
method = 32767,
paragraph_embedding = (L2R | R2L | unknown: 5455008),
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = (unknown: 4294948144),
voffset = 32767,
space_width = 5303462,
font_height = 12612338
}, {
string = 12974034,
string_nchars = 71303170,
end_charpos = 313,
stop_charpos = 22505920,
prev_stop = 21842112,
base_level_stop = 140737488336512,
cmp_it = {
---Type <return> to continue, or q <return> to quit---
stop_pos = 6009011,
id = 12038920,
ch = 17162134,
rule_idx = 0,
lookback = 140737488336544,
nglyphs = 10582078,
reversed_p = false,
charpos = 12974034,
nchars = 12612338,
nbytes = 0,
from = 12038920,
to = 0,
width = 12796946
},
face_id = 5858894,
u = {
image = {
object = 21842112,
slice = {
x = 140737488336608,
y = 6009011,
width = 140737488336336,
height = 140737488336224
},
---Type <return> to continue, or q <return> to quit---
image_id = 2
},
comp = {
object = 21842112
},
stretch = {
object = 21842112
}
},
position = {
charpos = 10583006,
bytepos = 5858365
},
current = {
pos = {
charpos = 17162134,
bytepos = 140737488336672
},
overlay_string_index = 6006667,
string_pos = {
charpos = 5855786,
bytepos = 10823793
},
dpvec_index = -18064
---Type <return> to continue, or q <return> to quit---
},
from_overlay = 10582094,
area = 16,
method = GET_FROM_BUFFER,
paragraph_embedding = (unknown: 4294950456),
multibyte_p = 1,
string_from_display_prop_p = 1,
string_from_prefix_prop_p = 1,
display_ellipsis_p = 1,
avoid_cursor_p = 1,
bidi_p = 1,
from_disp_prop_p = 1,
line_wrap = TRUNCATE,
voffset = 0,
space_width = 0,
font_height = 12612338
}, {
string = 4,
string_nchars = 12973378,
end_charpos = 51550431345,
stop_charpos = 10582894,
prev_stop = 42960496753,
base_level_stop = 12030128,
cmp_it = {
---Type <return> to continue, or q <return> to quit---
stop_pos = 12612338,
id = 12612386,
ch = 9166453,
rule_idx = 0,
lookback = 12612386,
nglyphs = 4289776,
reversed_p = false,
charpos = 140737488336592,
nchars = 5994053,
nbytes = 0,
from = 12612338,
to = 56,
width = 12651584
},
face_id = -18752,
u = {
image = {
object = 5901477,
slice = {
x = 0,
y = 1,
width = 140737488336624,
height = 5903153
},
---Type <return> to continue, or q <return> to quit---
image_id = 140737488336928
},
comp = {
object = 5901477
},
stretch = {
object = 5901477
}
},
position = {
charpos = 12672978,
bytepos = 140737488336944
},
current = {
pos = {
charpos = 12672976,
bytepos = 140737488336672
},
overlay_string_index = 5903186,
string_pos = {
charpos = 12029984,
bytepos = 12672978
},
dpvec_index = 16791554
---Type <return> to continue, or q <return> to quit---
},
from_overlay = 12612338,
area = -18320,
method = 32767,
paragraph_embedding = (L2R | R2L | unknown: 6006664),
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = (unknown: 4294948736),
voffset = 32767,
space_width = 6050398,
font_height = 140737488336824
}, {
string = 12672978,
string_nchars = 12612386,
end_charpos = 140737488336656,
stop_charpos = 2,
prev_stop = 10582894,
base_level_stop = 9282989,
cmp_it = {
---Type <return> to continue, or q <return> to quit---
stop_pos = 140737247946272,
id = 5,
ch = 5,
rule_idx = 0,
lookback = 140737488346592,
nglyphs = 10581982,
reversed_p = false,
charpos = 12673170,
nchars = 10582974,
nbytes = 0,
from = 5,
to = 0,
width = -18336
},
face_id = 5,
u = {
image = {
object = 8,
slice = {
x = 12788562,
y = 12030133,
width = 1305670057987,
height = 12651584
},
---Type <return> to continue, or q <return> to quit---
image_id = 140737488336912
},
comp = {
object = 8
},
stretch = {
object = 8
}
},
position = {
charpos = 10581982,
bytepos = 12612386
},
current = {
pos = {
charpos = 51551646141,
bytepos = 10578318
},
overlay_string_index = 42953962736,
string_pos = {
charpos = 12030032,
bytepos = 12612338
},
dpvec_index = 12612338
---Type <return> to continue, or q <return> to quit---
},
from_overlay = 12612338,
area = -18320,
method = 32767,
paragraph_embedding = (L2R | unknown: 6026992),
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = (unknown: 12030032),
voffset = 0,
space_width = 10578318,
font_height = 1
}, {
string = 21842048,
string_nchars = -17984,
end_charpos = 6009011,
stop_charpos = 10626221,
prev_stop = 10626221,
base_level_stop = 140737488336144,
cmp_it = {
---Type <return> to continue, or q <return> to quit---
stop_pos = 10578302,
id = 12612338,
ch = 10626301,
rule_idx = 0,
lookback = 140737488337200,
nglyphs = 6015870,
reversed_p = false,
charpos = 0,
nchars = 10626221,
nbytes = 0,
from = 21657602,
to = 0,
width = 12
},
face_id = 12612338,
u = {
image = {
object = 140737488337056,
slice = {
x = 1,
y = 12612338,
width = 12612338,
height = 12612386
},
---Type <return> to continue, or q <return> to quit---
image_id = 140737488337216
},
comp = {
object = 140737488337056
},
stretch = {
object = 140737488337056
}
},
position = {
charpos = 140737488338928,
bytepos = 140737488337216
},
current = {
pos = {
charpos = 21842016,
bytepos = 140737488337424
},
overlay_string_index = 10578318,
string_pos = {
charpos = 140737488337424,
bytepos = 6014199
},
dpvec_index = 17485824
---Type <return> to continue, or q <return> to quit---
},
from_overlay = 16,
area = 12612338,
method = GET_FROM_BUFFER,
paragraph_embedding = (unknown: 12449664),
multibyte_p = 0,
string_from_display_prop_p = 0,
string_from_prefix_prop_p = 0,
display_ellipsis_p = 0,
avoid_cursor_p = 0,
bidi_p = 0,
from_disp_prop_p = 0,
line_wrap = (unknown: 4294949344),
voffset = 32767,
space_width = 5901785,
font_height = 12651584
}},
sp = 12449664,
selective = 140737488337328,
what = 12612338,
face_id = 0,
selective_display_ellipsis_p = 0,
ctl_arrow_p = 1,
face_box_p = 0,
---Type <return> to continue, or q <return> to quit---
start_of_box_run_p = 0,
end_of_box_run_p = 0,
overlay_strings_at_end_processed_p = 1,
ignore_overlay_strings_at_pos_p = 0,
glyph_not_available_p = 0,
starts_in_middle_of_char_p = 1,
face_before_selective_p = 1,
constrain_row_ascent_descent_p = 0,
line_wrap = TRUNCATE,
base_face_id = 12030037,
c = 6,
len = 12612338,
cmp_it = {
stop_pos = 4289776,
id = 12449664,
ch = -17952,
rule_idx = 32767,
lookback = 5858604,
nglyphs = 12612338,
reversed_p = false,
charpos = 140737488337504,
nchars = 5904382,
nbytes = 0,
from = 12038584,
---Type <return> to continue, or q <return> to quit---
to = 0,
width = 12612338
},
char_to_display = 12612338,
glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
image_id = 12788418,
slice = {
x = 140737488337760,
y = 6009011,
width = 12449664,
height = 12651584
},
space_width = 140737488337568,
voffset = 30606,
tab_width = 161,
font_height = 12651584,
object = 12788416,
position = {
charpos = 12651584,
bytepos = 12612338
},
truncation_pixel_width = -17792,
continuation_pixel_width = -1,
first_visible_x = 32767,
---Type <return> to continue, or q <return> to quit---
last_visible_x = 5903272,
last_visible_y = 0,
extra_line_spacing = 5858604,
max_extra_line_spacing = 0,
override_ascent = 12612338,
override_descent = 0,
override_boff = -17712,
glyph_row = 0x5a1c2c <Fset_default+586>,
area = 12612338,
nglyphs = 0,
pixel_width = 12788418,
ascent = 0,
descent = -17632,
max_ascent = 32767,
max_descent = 5904382,
phys_ascent = 0,
phys_descent = 12449664,
max_phys_ascent = 0,
max_phys_descent = 12612338,
current_x = 0,
continuation_lines_width = 12612338,
eol_pos = {
charpos = 12788416,
bytepos = 140737488337760
---Type <return> to continue, or q <return> to quit---
},
current_y = 6017714,
first_vpos = 0,
vpos = 12612386,
hpos = 0,
left_user_fringe_bitmap = 10,
right_user_fringe_bitmap = 0,
left_user_fringe_face_id = 0,
right_user_fringe_face_id = 5,
bidi_p = 0,
bidi_it = {
bytepos = 5,
charpos = 12449664,
ch = 8,
nchars = 12788562,
ch_len = 21841984,
type = 4294949728,
type_after_w1 = 32767,
orig_type = 6016934,
resolved_level = 0,
invalid_levels = 12612338,
invalid_rl_levels = 0,
prev = {
bytepos = 12067632,
---Type <return> to continue, or q <return> to quit---
charpos = 140737488337840,
type = 5901785,
type_after_w1 = UNKNOWN_BT,
orig_type = 12651584
},
last_strong = {
bytepos = 12067632,
charpos = 140737488337808,
type = 6006107,
type_after_w1 = UNKNOWN_BT,
orig_type = 12612338
},
next_for_neutral = {
bytepos = 25780385678,
charpos = 12612338,
type = RLE,
type_after_w1 = UNKNOWN_BT,
orig_type = 12067632
},
prev_for_neutral = {
bytepos = 140737488337840,
charpos = 5858604,
type = 12612338,
type_after_w1 = UNKNOWN_BT,
---Type <return> to continue, or q <return> to quit---
orig_type = 4294949936
},
next_for_ws = {
bytepos = 5904382,
charpos = 5458739,
type = 12612338,
type_after_w1 = UNKNOWN_BT,
orig_type = 12612338
},
next_en_pos = 12910626,
next_en_type = 12671826,
ignore_bn_limit = 12612338,
sor = (unknown: 12067632),
scan_dir = 0,
disp_pos = 12651584,
disp_prop = -10064,
stack_idx = 32767,
level_stack = {{
level = 5901785,
override = NEUTRAL_DIR
}, {
level = 12612338,
override = NEUTRAL_DIR
}, {
---Type <return> to continue, or q <return> to quit---
level = 12910624,
override = NEUTRAL_DIR
}, {
level = -10016,
override = (L2R | R2L | unknown: 32764)
}, {
level = 12612338,
override = NEUTRAL_DIR
}, {
level = -17328,
override = (L2R | R2L | unknown: 32764)
}, {
level = 5903272,
override = NEUTRAL_DIR
}, {
level = 5858604,
override = NEUTRAL_DIR
}, {
level = 12612338,
override = NEUTRAL_DIR
}, {
level = -17248,
override = (L2R | R2L | unknown: 32764)
}, {
---Type <return> to continue, or q <return> to quit---
level = 5905452,
override = NEUTRAL_DIR
}, {
level = 12612338,
override = NEUTRAL_DIR
}, {
level = 12910626,
override = NEUTRAL_DIR
}, {
level = 0,
override = (L2R | R2L | unknown: 32764)
}, {
level = 5904382,
override = NEUTRAL_DIR
}, {
level = 12067632,
override = NEUTRAL_DIR
}, {
level = 12612338,
override = NEUTRAL_DIR
}, {
level = 12612386,
override = NEUTRAL_DIR
}, {
---Type <return> to continue, or q <return> to quit---
level = 12910624,
override = NEUTRAL_DIR
}, {
level = -17104,
override = (L2R | R2L | unknown: 32764)
}, {
level = 6017714,
override = NEUTRAL_DIR
}, {
level = 12612386,
override = NEUTRAL_DIR
}, {
level = 9,
override = NEUTRAL_DIR
}, {
level = 5,
override = NEUTRAL_DIR
}, {
level = 5,
override = NEUTRAL_DIR
}, {
level = 12067632,
override = (R2L | unknown: 4)
}, {
---Type <return> to continue, or q <return> to quit---
level = 20757718,
override = NEUTRAL_DIR
}, {
level = 10519605,
override = NEUTRAL_DIR
}, {
level = 16923442,
override = NEUTRAL_DIR
}, {
level = -17056,
override = (L2R | R2L | unknown: 32764)
}, {
level = 5493178,
override = NEUTRAL_DIR
}, {
level = -17151,
override = (unknown: 32512)
}, {
level = 16923442,
override = NEUTRAL_DIR
}, {
level = 18862653,
override = NEUTRAL_DIR
}, {
---Type <return> to continue, or q <return> to quit---
level = -17088,
override = (L2R | R2L | unknown: 32764)
}, {
level = 5856265,
override = NEUTRAL_DIR
}, {
level = 12612386,
override = NEUTRAL_DIR
}, {
level = 10,
override = NEUTRAL_DIR
}, {
level = 18862653,
override = NEUTRAL_DIR
}, {
level = -17056,
override = (L2R | R2L | unknown: 32764)
}, {
level = 5856148,
override = NEUTRAL_DIR
}, {
level = 2,
override = NEUTRAL_DIR
}, {
---Type <return> to continue, or q <return> to quit---
level = 18862653,
override = NEUTRAL_DIR
}, {
level = -16880,
override = (L2R | R2L | unknown: 32764)
}, {
level = 5465101,
override = NEUTRAL_DIR
}, {
level = 12612338,
override = NEUTRAL_DIR
}, {
level = 16923442,
override = NEUTRAL_DIR
}, {
level = 20879878,
override = NEUTRAL_DIR
}, {
level = 29424961,
override = NEUTRAL_DIR
}, {
level = 29426336,
override = NEUTRAL_DIR
}, {
---Type <return> to continue, or q <return> to quit---
level = 29645253,
override = NEUTRAL_DIR
}, {
level = 12662322,
override = NEUTRAL_DIR
}, {
level = 16540550,
override = NEUTRAL_DIR
}, {
level = 16540166,
override = NEUTRAL_DIR
}, {
level = 12612338,
override = NEUTRAL_DIR
}, {
level = -16928,
override = (L2R | R2L | unknown: 32764)
}, {
level = 6045971,
override = NEUTRAL_DIR
}, {
level = 12662322,
override = NEUTRAL_DIR
}, {
---Type <return> to continue, or q <return> to quit---
level = 12654562,
override = NEUTRAL_DIR
}, {
level = -16832,
override = (L2R | R2L | unknown: 32764)
}, {
level = 5450759,
override = NEUTRAL_DIR
}, {
level = 17308406,
override = NEUTRAL_DIR
}, {
level = 17308406,
override = NEUTRAL_DIR
}, {
level = -16784,
override = (L2R | R2L | unknown: 32764)
}},
string = {
lstring = 5493178,
s = 0x13cda01 <incomplete sequence \304>,
schars = 12612338,
bufpos = 20765238,
from_disp_str = 0,
---Type <return> to continue, or q <return> to quit---
unibyte = 1
},
w = 0x7fffffffbff0,
paragraph_dir = (unknown: 4289776),
separator_limit = 139646566645360,
prev_was_pdf = 0,
first_elt = 1,
new_paragraph = 0,
frame_window_p = 0
},
paragraph_embedding = (unknown: 18664752)
}
current_matrix_up_to_date_p = 0
used_current_matrix_p = 0
buffer_unchanged_p = 0
temp_scroll_step = 0
count = 5
rc = 6
centering_position = -1
last_line_misfit = 0
beg_unchanged = 191
end_unchanged = 0
frame_line_height = 18
#16 0x000000000044ee00 in redisplay_window_0 (window=18999653)
---Type <return> to continue, or q <return> to quit---
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13811
No locals.
#17 0x00000000005b911b in internal_condition_case_1 (bfun=
0x44edbe <redisplay_window_0>, arg=18999653, handlers=12874982, hfun=
0x44ed8d <redisplay_window_error>)
at /data/steve/bzr/emacs/quickfixes/src/eval.c:1376
val = 12651589
c = {
tag = 12612338,
val = 12612338,
next = 0x7fffffffd8e0,
gcpro = 0x0,
jmp = {{
__jmpbuf = {0, 8304084069479131285, 4289776, 140737488346592, 0,
0, 8304084066473912469, -8304084390187849579},
__mask_was_saved = 0,
__saved_mask = {
__val = {12858368, 12912992, 12612338, 140737488339152,
5903272, 5858604, 12612338, 140737488339232, 5905452, 12612338, 12858370,
140737488339312, 25775708158, 12651584, 140737488339256, 5858739}
}
}},
handlerlist = 0x7fffffffd8b0,
lisp_eval_depth = 0,
---Type <return> to continue, or q <return> to quit---
pdlcount = 5,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
h = {
handler = 12874982,
var = 12612338,
chosen_clause = 12524480,
tag = 0x7fffffffc030,
next = 0x7fffffffd8b0
}
#18 0x000000000044ed6e in redisplay_windows (window=18999653)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13791
w = 0x121e960
#19 0x000000000044ed24 in redisplay_windows (window=29341981)
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13785
w = 0x1bfb918
#20 0x000000000044e090 in redisplay_internal ()
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13402
f = 0x11ccd30
w = 0x11ccf18
sw = 0x11ccf18
fr = 0x11ccd30
---Type <return> to continue, or q <return> to quit---
pending = 0
must_finish = false
match_p = true
tlbufpos = {
charpos = 192,
bytepos = 192
}
tlendpos = {
charpos = 0,
bytepos = 0
}
number_of_visible_frames = 1
count = 2
sf = 0x11ccd30
polling_stopped_here = 0
tail = 16381046
frame = 18664757
consider_all_windows_p = 1
update_miniwindow_p = 0
#21 0x000000000044c57b in redisplay ()
at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:12690
No locals.
#22 0x000000000052c14d in read_char (commandflag=1, map=20758678, prev_event=
12612338, used_mouse_menu=0x7fffffffd54f, end_time=0x0)
---Type <return> to continue, or q <return> to quit---
at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:2553
echo_current = true
c = 12612338
jmpcount = 20758528
local_getcjmp = {{
__jmpbuf = {5858956, 12657154, 140737488343600, 5936417, 16,
12651589, 140737488343536, 5902566},
__mask_was_saved = 16856048,
__saved_mask = {
__val = {17256320, 12612096, 12612338, 18446744073709551615,
16856048, 140737488343584, 5903131, 192, 17256322, 16856048, 17256320,
140737488343728, 5504237, 12612338, 2, 12612338}
}
}}
save_jump = {{
__jmpbuf = {2, 2, 6801108, 140737488342768, 2, 12612338, 12612338,
6006528},
__mask_was_saved = -11792,
__saved_mask = {
__val = {10073253, 52, 21841792, 140737488343456, 6014077,
140737488343456, 25775708158, 12651584, 30064759144, 12651584,
140737488343416, 5858739, 25782605618, 12651589, 12651584, 12651584}
}
}}
---Type <return> to continue, or q <return> to quit---
tem = 140737488343824
save = 5855468
previous_echo_area_message = 12612338
also_record = 12612338
reread = false
gcpro1 = {
next = 0x1003802,
var = 0x5,
nvars = 140737488343232
}
gcpro2 = {
next = 0xc072f2,
var = 0xf72a82,
nvars = 16791554
}
polling_stopped_here = false
orig_kboard = 0x1676210
#23 0x0000000000537956 in read_key_sequence (keybuf=0x7fffffffd720, bufsize=
30, prompt=12612338, dont_downcase_last=false, can_return_switch_frame=
true, fix_current_buffer=true)
at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:9066
interrupted_kboard = 0x1676210
interrupted_frame = 0x11ccd30
key = 6016934
---Type <return> to continue, or q <return> to quit---
used_mouse_menu = false
echo_local_start = 0
last_real_key_start = 0
keys_local_start = 0
new_binding = 5858604
count = 2
t = 0
echo_start = 0
keys_start = 0
current_binding = 20758678
first_event = 12612338
first_unbound = 31
mock_input = 0
fkey = {
parent = 20575894,
map = 20575894,
start = 0,
end = 0
}
keytran = {
parent = 12591686,
map = 12591686,
start = 0,
end = 0
---Type <return> to continue, or q <return> to quit---
}
indec = {
parent = 20575878,
map = 20575878,
start = 0,
end = 0
}
shift_translated = false
delayed_switch_frame = 12612338
original_uppercase = 12787376
original_uppercase_position = -1
dummyflag = false
starting_buffer = 0xc10c40
fake_prefixed_keys = 12612338
gcpro1 = {
next = 0x7fffffffd5d0,
var = 0x5a17fe <set_internal+1104>,
nvars = 5858739
}
#24 0x0000000000529ab4 in command_loop_1 ()
at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1436
cmd = 16791554
keybuf = {96, 204, 12612386, 20677878, 119, 12612338, 140737488344928,
5455011, 140737488344960, 9193134, 12671922, 18664752, 140737488345008,
---Type <return> to continue, or q <return> to quit---
5114937, 0, 6810581, 1, 12612338, 12612338, 9193145, 140737488345040, 0,
140737488345104, 5411694, 140737488345136, 20677878, 12612338, 18664752,
140737488345104, 0}
i = 2
prev_modiff = 10
prev_buffer = 0xc10c40
already_adjusted = false
#25 0x00000000005b8fc4 in internal_condition_case (bfun=
0x529700 <command_loop_1>, handlers=12671826, hfun=0x529053 <cmd_error>)
at /data/steve/bzr/emacs/quickfixes/src/eval.c:1339
val = 0
c = {
tag = 12612338,
val = 12612338,
next = 0x7fffffffda60,
gcpro = 0x0,
jmp = {{
__jmpbuf = {0, 8304084069791606933, 4289776, 140737488346592, 0,
0, 8304084069739178133, -8304084391050434411},
__mask_was_saved = 0,
__saved_mask = {
__val = {10142659682659117205, 0, 140737298756521, 4294967295,
140737257761200, 140737298753776, 9143960, 0, 140737488346592, 0, 0,
140737488345968, 140737351945093, 5, 0, 5}
---Type <return> to continue, or q <return> to quit---
}
}},
handlerlist = 0x0,
lisp_eval_depth = 0,
pdlcount = 2,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
h = {
handler = 12671826,
var = 12612338,
chosen_clause = 12612386,
tag = 0x7fffffffd8e0,
next = 0x0
}
#26 0x000000000052945d in command_loop_2 (ignore=12612338)
at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1163
val = 0
#27 0x00000000005b8a0e in internal_catch (tag=12667714, func=
0x529437 <command_loop_2>, arg=12612338)
at /data/steve/bzr/emacs/quickfixes/src/eval.c:1113
c = {
tag = 12667714,
---Type <return> to continue, or q <return> to quit---
val = 12612338,
next = 0x0,
gcpro = 0x0,
jmp = {{
__jmpbuf = {0, 8304084069810481301, 4289776, 140737488346592, 0,
0, 8304084069783218325, -8304084390975723371},
__mask_was_saved = 0,
__saved_mask = {
__val = {21841696, 140737488345936, 5904382, 4294967296,
12612338, 12612338, 12910626, 25769794336, 12651584, 12067632, 12651584,
5, 5, 12067632, 12910624, 5858604}
}
}},
handlerlist = 0x0,
lisp_eval_depth = 0,
pdlcount = 2,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
#28 0x000000000052940d in command_loop ()
at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1142
No locals.
#29 0x0000000000528c4e in recursive_edit_1 ()
---Type <return> to continue, or q <return> to quit---
at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:781
count = 1
val = 12612338
#30 0x0000000000528dbb in Frecursive_edit ()
at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:845
count = 0
buffer = 12612338
#31 0x0000000000526d18 in main (argc=2, argv=0x7fffffffdde8)
at /data/steve/bzr/emacs/quickfixes/src/emacs.c:1570
dummy = 140737488346624
stack_bottom_variable = 0 '\000'
do_initial_setlocale = true
dumping = false
skip_args = 0
rlim = {
rlim_cur = 8720000,
rlim_max = 18446744073709551615
}
no_loadup = false
junk = 0x0
dname_arg = 0x0
ch_to_dir = 0x0
Lisp Backtrace:
---Type <return> to continue, or q <return> to quit---
"redisplay_internal (C function)" (0xbf7c90)
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 15:41 ` Stephen Berman
@ 2013-09-18 16:26 ` Eli Zaretskii
2013-09-18 17:31 ` Barry OReilly
2013-09-18 17:57 ` Stephen Berman
0 siblings, 2 replies; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 16:26 UTC (permalink / raw)
To: Stephen Berman; +Cc: gundaetiapo, 15405, sdl.web
> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: Barry OReilly <gundaetiapo@gmail.com>, 15405@debbugs.gnu.org, sdl.web@gmail.com
> Date: Wed, 18 Sep 2013 17:41:42 +0200
>
> #1 0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=19000077,
> size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
> entity = 12809621
> val = 12612338
> prop = 32767
> i = 201326591
Can you show the value of vec, as a Lisp vector, and in particular its
size? If the value of i is indeed that large, there's something
strange happening in that loop.
The value zero of the argument 'size' also looks strange.
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 16:26 ` Eli Zaretskii
@ 2013-09-18 17:31 ` Barry OReilly
2013-09-18 19:26 ` Eli Zaretskii
2013-09-18 17:57 ` Stephen Berman
1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 17:31 UTC (permalink / raw)
To: Eli Zaretskii, Leo Liu, 15405, stephen.berman
[-- Attachment #1: Type: text/plain, Size: 5264 bytes --]
FWIW, only one M-: #[] is necessary in the reproduction recipe.
I used:
diff --git a/src/font.c b/src/font.c
index 68db9f2..0f2d24f 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2619,6 +2619,12 @@ font_delete_unmatched (Lisp_Object vec, Lisp_Object
spec, int size)
enum font_property_index prop;
int i;
+ bool noninteractive_old = noninteractive;
+ { struct timespec debug_ts; char debug_dateStr[20]; {
clock_gettime(CLOCK_REALTIME, &debug_ts); struct tm mytm;
localtime_r(&debug_ts.tv_sec, &mytm); strftime(debug_dateStr, 20,
"%Y-%m-%dT%H:%M:%S", &mytm); }
+ printf( "%s.%09ld|pid:%d|tid:%ld|%s|%d| DEBUG: vec size=%ld\n", //
TODO: debugging
+ debug_dateStr, debug_ts.tv_nsec, getpid(),
pthread_self(), __FILE__, __LINE__, ASIZE(vec) ); fflush(stdout); }
+ Fprin1(vec, Qnil);
+ noninteractive = noninteractive_old;
for (val = Qnil, i = ASIZE (vec) - 1; i >= 0; i--)
{
entity = AREF (vec, i);
Got:
2013-09-18T13:15:22.845944000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
vec size=4
2013-09-18T13:15:22.847422000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
vec size=4611686018628714496
Fatal error 11: Segmentation fault
Clearly the value of i was a 32 bit truncation of that larger value.
#0 0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
#1 0x00000000004ced25 in terminate_due_to_signal (sig=11,
backtrace_limit=40) at emacs.c:369
#2 0x00000000004e823e in handle_fatal_signal (sig=15650) at sysdep.c:1626
#3 0x00000000004e85f3 in deliver_thread_signal (sig=11) at sysdep.c:1600
#4 deliver_fatal_thread_signal (sig=11) at sysdep.c:1638
#5 <signal handler called>
#6 0x0000000000552715 in font_delete_unmatched (f=0x1102af0,
spec=18316141) at lisp.h:1170
#7 font_list_entities (f=0x1102af0, spec=18316141) at font.c:2753
#8 0x0000000000556224 in font_find_for_lface (f=0x1102af0,
attrs=0x7fffa07f03d0, spec=11832930, c=-1) at font.c:3212
#9 0x000000000055671b in font_load_for_lface (f=0xe81112, attrs=0xcd4400,
spec=8413600) at font.c:3282
#10 0x000000000049fc62 in realize_x_face (cache=0xd654b0,
attrs=0x7fffa07f03d0, former_face_id=<value optimized out>) at xfaces.c:5526
#11 realize_face (cache=0xd654b0, attrs=0x7fffa07f03d0,
former_face_id=<value optimized out>) at xfaces.c:5419
#12 0x00000000004a0a41 in lookup_face (f=<value optimized out>,
attr=0x7fffa07f03d0) at xfaces.c:4408
#13 0x00000000004a1a91 in face_at_string_position (w=<value optimized out>,
string=<value optimized out>, pos=<value optimized out>, bufpos=0,
region_beg=-1, region_end=-1, endptr=0x7fffa07f0508,
base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0) at xfaces.c:6191
#14 0x0000000000444f45 in display_string (string=0xb503e8 "*scratch*",
lisp_string=11861937, face_string=<value optimized out>, face_string_pos=1,
start=0, it=0x7fffa07f0750, field_width=12, precision=-8,
max_x=<value optimized out>, multibyte=0) at xdisp.c:22291
#15 0x000000000044582c in display_mode_element (it=0x7fffa07f0750, depth=4,
field_width=0, precision=-8, elt=<value optimized out>, props=11832930,
risky=0) at xdisp.c:21044
#16 0x0000000000445e5c in display_mode_element (it=0x7fffa07f0750, depth=3,
field_width=0, precision=-8, elt=<value optimized out>, props=11832930,
risky=0) at xdisp.c:21216
#17 0x0000000000445e5c in display_mode_element (it=0x7fffa07f0750, depth=1,
field_width=0, precision=0, elt=<value optimized out>, props=11832930,
risky=0) at xdisp.c:21216
#18 0x0000000000446734 in display_mode_line (w=<value optimized out>,
face_id=MODE_LINE_INACTIVE_FACE_ID, format=15318150) at xdisp.c:20733
#19 0x0000000000446a10 in display_mode_lines (w=0x1177950) at xdisp.c:20678
#20 0x0000000000451ee4 in redisplay_window (window=18315605,
just_this_one_p=0) at xdisp.c:16122
#21 0x0000000000455386 in redisplay_window_0 (window=15208722) at
xdisp.c:13819
#22 0x000000000053f9e3 in internal_condition_case_1 (bfun=0x455360
<redisplay_window_0>, arg=18315605, handlers=12043382, hfun=0x425800
<redisplay_window_error>) at eval.c:1376
#23 0x0000000000431a8d in redisplay_windows (window=13452288) at
xdisp.c:13799
#24 0x0000000000431a54 in redisplay_windows (window=13452288) at
xdisp.c:13793
#25 0x0000000000456191 in redisplay_internal () at xdisp.c:13410
#26 0x00000000004dc905 in read_char (commandflag=1, map=19881590,
prev_event=11832930, used_mouse_menu=0x7fffa07f6baf, end_time=0x0) at
keyboard.c:2553
#27 0x00000000004de0f1 in read_key_sequence (keybuf=0x7fffa07f6c10,
bufsize=30, prompt=11832930, dont_downcase_last=false,
can_return_switch_frame=true, fix_current_buffer=true) at keyboard.c:9066
#28 0x00000000004dfb07 in command_loop_1 () at keyboard.c:1436
#29 0x000000000053f88e in internal_condition_case (bfun=0x4df880
<command_loop_1>, handlers=11892674, hfun=0x4d6e70 <cmd_error>) at
eval.c:1339
#30 0x00000000004d6ffa in command_loop_2 (ignore=<value optimized out>) at
keyboard.c:1163
#31 0x000000000053f74b in internal_catch (tag=<value optimized out>,
func=0x4d6fe0 <command_loop_2>, arg=11832930) at eval.c:1113
#32 0x00000000004d63c0 in command_loop () at keyboard.c:1142
#33 recursive_edit_1 () at keyboard.c:781
#34 0x00000000004d7ce6 in Frecursive_edit () at keyboard.c:845
#35 0x00000000004cf9fd in main (argc=<value optimized out>,
argv=0x7fffa07f71e8) at emacs.c:1570
[-- Attachment #2: Type: text/html, Size: 5749 bytes --]
^ permalink raw reply related [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 16:26 ` Eli Zaretskii
2013-09-18 17:31 ` Barry OReilly
@ 2013-09-18 17:57 ` Stephen Berman
1 sibling, 0 replies; 32+ messages in thread
From: Stephen Berman @ 2013-09-18 17:57 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: gundaetiapo, 15405, sdl.web
On Wed, 18 Sep 2013 19:26:50 +0300 Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Stephen Berman <stephen.berman@gmx.net>
>> Cc: Barry OReilly <gundaetiapo@gmail.com>, 15405@debbugs.gnu.org, sdl.web@gmail.com
>> Date: Wed, 18 Sep 2013 17:41:42 +0200
>>
>> #1 0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=19000077,
>> size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
>> entity = 12809621
>> val = 12612338
>> prop = 32767
>> i = 201326591
>
> Can you show the value of vec, as a Lisp vector, and in particular its
> size? If the value of i is indeed that large, there's something
> strange happening in that loop.
>
> The value zero of the argument 'size' also looks strange.
In case the followup by Barry OReilly didn't already give you what you
need to know, are these the values you asked for, or if not, how do I
show them?
(gdb) f 1
#1 0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=18992085,
size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
2624 entity = AREF (vec, i);
(gdb) p vec
$1 = 9179653
(gdb) pr
#[]
(gdb) p i
$2 = 201326591
(gdb) pr
#<INVALID_LISP_OBJECT 0x0bffffff>
(gdb) p ASIZE (vec)
$3 = 4611686018628714496
(gdb) pr
1152921504657178624
Steve Berman
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 17:31 ` Barry OReilly
@ 2013-09-18 19:26 ` Eli Zaretskii
2013-09-18 23:20 ` Barry OReilly
2013-09-18 23:41 ` Barry OReilly
0 siblings, 2 replies; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 19:26 UTC (permalink / raw)
To: Barry OReilly; +Cc: stephen.berman, 15405, sdl.web
> Date: Wed, 18 Sep 2013 13:31:56 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
>
> FWIW, only one M-: #[] is necessary in the reproduction recipe.
>
> I used:
>
> diff --git a/src/font.c b/src/font.c
> index 68db9f2..0f2d24f 100644
> --- a/src/font.c
> +++ b/src/font.c
> @@ -2619,6 +2619,12 @@ font_delete_unmatched (Lisp_Object vec, Lisp_Object
> spec, int size)
> enum font_property_index prop;
> int i;
>
> + bool noninteractive_old = noninteractive;
> + { struct timespec debug_ts; char debug_dateStr[20]; {
> clock_gettime(CLOCK_REALTIME, &debug_ts); struct tm mytm;
> localtime_r(&debug_ts.tv_sec, &mytm); strftime(debug_dateStr, 20,
> "%Y-%m-%dT%H:%M:%S", &mytm); }
> + printf( "%s.%09ld|pid:%d|tid:%ld|%s|%d| DEBUG: vec size=%ld\n", //
> TODO: debugging
> + debug_dateStr, debug_ts.tv_nsec, getpid(),
> pthread_self(), __FILE__, __LINE__, ASIZE(vec) ); fflush(stdout); }
> + Fprin1(vec, Qnil);
> + noninteractive = noninteractive_old;
> for (val = Qnil, i = ASIZE (vec) - 1; i >= 0; i--)
> {
> entity = AREF (vec, i);
>
> Got:
> 2013-09-18T13:15:22.845944000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
> vec size=4
> 2013-09-18T13:15:22.847422000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
> vec size=4611686018628714496
> Fatal error 11: Segmentation fault
>
> Clearly the value of i was a 32 bit truncation of that larger value.
The next step is to put a hardware watchpoint on that vector, and see
who thrashes it.
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 19:26 ` Eli Zaretskii
@ 2013-09-18 23:20 ` Barry OReilly
2013-09-19 7:00 ` Eli Zaretskii
2013-09-18 23:41 ` Barry OReilly
1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 23:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu
[-- Attachment #1: Type: text/plain, Size: 1157 bytes --]
What I've found so far is that the return from the font_list_entities
function's call to font_get_cache is as follows
C-x 3 without evalling #[] (Emacs behaves correctly):
(1 (#<font-spec x unknown DejaVu\ LGC\ Sans\ Mono nil iso10646-1 nil nil
nil nil nil 100 nil ((user-spec . "Monospace 10"))> . []) (#<font-spec x
nil Monospace nil iso8859-1 nil nil nil nil nil nil nil ((:name .
"Monospace 10"))> . []))
M-: #[] then C-x 3 (Emacs core dumps):
(1 (#<font-spec x unknown DejaVu\ LGC\ Sans\ Mono nil iso10646-1 nil nil
nil nil nil 100 nil ((user-spec . "Monospace 10"))> . #[]) (#<font-spec x
nil Monospace nil iso8859-1 nil nil nil nil nil nil nil ((:name .
"Monospace 10"))> . #[]))
The out of place #[] becomes the val input to font_delete_unmatched.
Separately, I found that calling (eq #[] #[]) also causes the problem.
So another reproduction recipe is to let file empty-byte-code.el have
content:
(eq #[] #[])
(split-window-right)
Then: emacs -Q --load empty-byte-code.el
Core dump results.
The eq function seems pretty harmless, so perhaps it's worth looking
at the reader that makes a Lisp_Object out of #[]. Where would I find
that?
[-- Attachment #2: Type: text/html, Size: 1382 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 19:26 ` Eli Zaretskii
2013-09-18 23:20 ` Barry OReilly
@ 2013-09-18 23:41 ` Barry OReilly
1 sibling, 0 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 23:41 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu
[-- Attachment #1: Type: text/plain, Size: 122 bytes --]
> I found that calling (eq #[] #[]) also causes the problem.
I realized eq evals its args, so (eval #[]) is more direct.
[-- Attachment #2: Type: text/html, Size: 160 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-18 23:20 ` Barry OReilly
@ 2013-09-19 7:00 ` Eli Zaretskii
2013-09-20 15:33 ` Barry OReilly
0 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-19 7:00 UTC (permalink / raw)
To: Barry OReilly; +Cc: stephen.berman, 15405, sdl.web
> Date: Wed, 18 Sep 2013 19:20:35 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
> Cc: Leo Liu <sdl.web@gmail.com>, 15405@debbugs.gnu.org, stephen.berman@gmx.net
>
> The eq function seems pretty harmless, so perhaps it's worth looking
> at the reader that makes a Lisp_Object out of #[]. Where would I find
> that?
In lread.c:readevalloop, I guess. Specifically, anything that begins
with "#[" is handled in read1 around line 2595.
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-19 7:00 ` Eli Zaretskii
@ 2013-09-20 15:33 ` Barry OReilly
2013-09-20 16:13 ` Barry OReilly
2013-09-20 19:09 ` Stefan Monnier
0 siblings, 2 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 15:33 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu
[-- Attachment #1: Type: text/plain, Size: 1167 bytes --]
Here's what happens:
- read1 reads the #[] and proceeds to create a vector of zero
length
- allocate_vectorlike has a special case for zero length vectors:
if (len == 0)
p = XVECTOR (zero_vector);
- zero_vector is a global variable, so all zero length vectors
point to it. This can be seen when evalling:
(eq [] []) ; Evalutes to t
(eq [1 2 3] [1 2 3]) ; Evaluates to nil
- After read1 creates the zero_vector, it sets bits in the size
field to indicate it is a PVEC_COMPILED pseudo vector
- The global zero_vector is thereafter a PVEC_COMPILED pseudo
vector, including the empty vector of the font data
- Later, the font_list_entities function checks the size of the
font data vector using ASIZE. It does not expect a pseudo vector,
so it makes no such checks.
- Because the pseudo vector bits are set, the size is very large
- Indexing too far into the font data vector results in a core dump
What should the behavior be? Perhaps (eval #[]) should evaluate to []
instead of #[]?
Maybe an eassert in font_list_entities that its vector is not a pseudo
vector couldn't hurt either?
[-- Attachment #2: Type: text/html, Size: 1287 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-20 15:33 ` Barry OReilly
@ 2013-09-20 16:13 ` Barry OReilly
2013-09-20 16:21 ` Drew Adams
2013-09-20 19:09 ` Stefan Monnier
1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 16:13 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu
[-- Attachment #1: Type: text/plain, Size: 228 bytes --]
> Perhaps (eval #[]) should evaluate to [] instead of #[]?
An alternative is to fix the counter intuitive fact that (eq [] [])
is t. Doing so could break Elisp code that relies on the behavior, and
possibly impact performance.
[-- Attachment #2: Type: text/html, Size: 273 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-20 16:13 ` Barry OReilly
@ 2013-09-20 16:21 ` Drew Adams
0 siblings, 0 replies; 32+ messages in thread
From: Drew Adams @ 2013-09-20 16:21 UTC (permalink / raw)
To: Barry OReilly, Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu
>> Perhaps (eval #[]) should evaluate to [] instead of #[]?
>
> An alternative is to fix the counter intuitive fact that (eq [] [])
> is t. Doing so could break Elisp code that relies on the behavior, and
> possibly impact performance.
FWIW, this behavior was introduced only recently: 24.3. It is true for
only this one Emacs release (so far). It is an incompatible change from
Emacs prior to 24.3, where (eq [] []) is nil.
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-20 15:33 ` Barry OReilly
2013-09-20 16:13 ` Barry OReilly
@ 2013-09-20 19:09 ` Stefan Monnier
2013-09-20 19:43 ` Barry OReilly
1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-20 19:09 UTC (permalink / raw)
To: Barry OReilly; +Cc: stephen.berman, 15405, Leo Liu
> What should the behavior be?
(eq #[] #[]) is OK.
(eq [] []) is OK.
(eq #[] []) is not.
So we should fix the code so that there are at least "one empty vector
per vector type".
Stefan
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-20 19:09 ` Stefan Monnier
@ 2013-09-20 19:43 ` Barry OReilly
2013-09-20 21:26 ` Stefan Monnier
0 siblings, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 19:43 UTC (permalink / raw)
To: Stefan Monnier, dmantipov; +Cc: stephen.berman, 15405, Leo Liu
[-- Attachment #1: Type: text/plain, Size: 763 bytes --]
> FWIW, this behavior was introduced only recently: 24.3. It is true
> for only this one Emacs release (so far). It is an incompatible
> change from Emacs prior to 24.3, where (eq [] []) is nil.
I found the emacs-devel thread for that:
http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00112.html
http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00112.html
The addition of the zero_vector was tied into other changes of vector
allocation, so I don't suppose there were benchmarks specifically for
the zero_vector addition?
> So we should fix the code so that there are at least "one empty
> vector per vector type".
Thanks for the allowance of "at least". It would be good to assess the
performance impact of "(eq [] []) evaluates to nil".
[-- Attachment #2: Type: text/html, Size: 1060 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-20 19:43 ` Barry OReilly
@ 2013-09-20 21:26 ` Stefan Monnier
2013-09-20 21:38 ` Barry OReilly
0 siblings, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-20 21:26 UTC (permalink / raw)
To: Barry OReilly; +Cc: dmantipov, 15405, Leo Liu, stephen.berman
> Thanks for the allowance of "at least". It would be good to assess the
> performance impact of "(eq [] []) evaluates to nil".
I don't think it has any performance impact whatsoever.
Stefan
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-20 21:26 ` Stefan Monnier
@ 2013-09-20 21:38 ` Barry OReilly
2013-09-21 1:28 ` Dmitry Antipov
0 siblings, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 21:38 UTC (permalink / raw)
To: Stefan Monnier; +Cc: dmantipov, 15405, Leo Liu, stephen.berman
[-- Attachment #1: Type: text/plain, Size: 129 bytes --]
> I don't think it has any performance impact whatsoever.
If performance didn't motivate making a global zero_vector, what did?
[-- Attachment #2: Type: text/html, Size: 175 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-20 21:38 ` Barry OReilly
@ 2013-09-21 1:28 ` Dmitry Antipov
2013-09-21 1:39 ` Dmitry Antipov
2013-09-21 2:51 ` Stefan Monnier
0 siblings, 2 replies; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-21 1:28 UTC (permalink / raw)
To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu
On 09/21/2013 01:38 AM, Barry OReilly wrote:
> If performance didn't motivate making a global zero_vector, what did?
1) Small memory saving, like with empty strings.
2) Simple implementation - (eq [] []) is trivial.
BTW, I have no ideas who and why produces empty bytecode strings.
Shouldn't it be disallowed/optimized away? IIUC this is the
only PVEC_xxx type which can be zero-sized.
Dmitry
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-21 1:28 ` Dmitry Antipov
@ 2013-09-21 1:39 ` Dmitry Antipov
2013-09-21 2:51 ` Stefan Monnier
1 sibling, 0 replies; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-21 1:39 UTC (permalink / raw)
To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu
On 09/21/2013 05:28 AM, Dmitry Antipov wrote:
> BTW, I have no ideas who and why produces empty bytecode strings.
> Shouldn't it be disallowed/optimized away? IIUC this is the
> only PVEC_xxx type which can be zero-sized.
I.e. if empty bytecode strings are never produced by the bytecomp and
never used otherwise, shouldn't we just disallow #[] object, like we
disallow an integers too large (or too small) for Lisp_Object?
Dmitry
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-21 1:28 ` Dmitry Antipov
2013-09-21 1:39 ` Dmitry Antipov
@ 2013-09-21 2:51 ` Stefan Monnier
2013-09-25 15:22 ` Barry OReilly
1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-21 2:51 UTC (permalink / raw)
To: Dmitry Antipov; +Cc: Barry OReilly, 15405, Leo Liu, stephen.berman
>> If performance didn't motivate making a global zero_vector, what did?
IIRC such small objects were too small for the memory allocation
routines, so it was easier to handle them this way.
Stefan
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-21 2:51 ` Stefan Monnier
@ 2013-09-25 15:22 ` Barry OReilly
2013-09-25 16:12 ` Dmitry Antipov
2013-09-25 17:10 ` Stefan Monnier
0 siblings, 2 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-25 15:22 UTC (permalink / raw)
To: Stefan Monnier; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman
[-- Attachment #1: Type: text/plain, Size: 1675 bytes --]
From the code, I thought I could make the following change and have
zero vectors participate in the vector_free_lists.
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2626,7 +2626,7 @@ verify (VECTOR_BLOCK_SIZE <= (1 <<
PSEUDOVECTOR_SIZE_BITS));
/* Size of the minimal vector allocated from block. */
-#define VBLOCK_BYTES_MIN vroundup_ct (header_size + sizeof (Lisp_Object))
+#define VBLOCK_BYTES_MIN vroundup_ct (header_size)
/* Size of the largest vector allocated from block. */
After debugging the subsequent core dumping, I found it doesn't work
because Lisp_Vector is defined by:
struct Lisp_Vector
{
struct vectorlike_header header;
union {
/* ...but sometimes there is also a pointer internally used in
vector allocation code. Usually you don't want to touch this. */
struct Lisp_Vector *next;
/* We can't use FLEXIBLE_ARRAY_MEMBER here. */
Lisp_Object contents[1];
} u;
};
Without any special casing of zero vectors, the allocator calls
SETUP_ON_FREE_LIST for a zero vector and sets v->u.next. But for a
zero vector the allocator only allows enough memory for the header, so
setting the next pointer corrupts other memory.
Of course when a non zero vector is taken from the free list, the next
pointer is no longer needed and can be overridden by the contents.
Clever use of space.
Which of these solutions would be most palatable?
- Allocate zero vectors as "large_vectors", but with appropriate
renaming of "large".
- Allocate separately as a MEM_TYPE_VECTORLIKE, maintain a list of
zero_vectors for GC
- Smuggle zero vectors on the vector_free_lists with same allocation
size as a 1-vector
[-- Attachment #2: Type: text/html, Size: 1908 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-25 15:22 ` Barry OReilly
@ 2013-09-25 16:12 ` Dmitry Antipov
2013-09-25 17:35 ` Stefan Monnier
2013-09-25 17:10 ` Stefan Monnier
1 sibling, 1 reply; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-25 16:12 UTC (permalink / raw)
To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu
On 09/25/2013 07:22 PM, Barry OReilly wrote:
> From the code, I thought I could make the following change and have
> zero vectors participate in the vector_free_lists.
Of course, this is technically possible. <IMHO> But I don't see a reason for
this at all. Unlike 0 (zero) for arithmetic, "" for string operations,
() (or nil) for lists, etc., #[] (empty bytecode string) makes no sense at all.
Again, if bytecomp never produces such an objects and they're never used
somewhere else, it should be treated as "impossible" object and error should
be signaled once such an object is found. </IMHO>.
Dmitry
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-25 15:22 ` Barry OReilly
2013-09-25 16:12 ` Dmitry Antipov
@ 2013-09-25 17:10 ` Stefan Monnier
1 sibling, 0 replies; 32+ messages in thread
From: Stefan Monnier @ 2013-09-25 17:10 UTC (permalink / raw)
To: Barry OReilly; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman
> Without any special casing of zero vectors, the allocator calls
> SETUP_ON_FREE_LIST for a zero vector and sets v->u.next. But for a
> zero vector the allocator only allows enough memory for the header, so
> setting the next pointer corrupts other memory.
Yes, that's why we have special cased the zero-length vectors.
How many different zero vectors do we need? We at least need 2 (the []
and the #[]), but do we need others? If not, let's try and change the
code so that we can have those two pre-allocated and use the right one
at the right place.
Stefan
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-25 16:12 ` Dmitry Antipov
@ 2013-09-25 17:35 ` Stefan Monnier
2013-09-25 19:09 ` Barry OReilly
0 siblings, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-25 17:35 UTC (permalink / raw)
To: Dmitry Antipov; +Cc: Barry OReilly, 15405, Leo Liu, stephen.berman
> Of course, this is technically possible. <IMHO> But I don't see
> a reason for this at all. Unlike 0 (zero) for arithmetic, "" for
> string operations, () (or nil) for lists, etc., #[] (empty bytecode
> string) makes no sense at all. Again, if bytecomp never produces such
> an objects and they're never used somewhere else, it should be treated
> as "impossible" object and error should be signaled once such an
> object is found. </IMHO>.
Indeed, we could also disallow them. If that's simpler, I'm fine with
this solution.
Stefan
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-25 17:35 ` Stefan Monnier
@ 2013-09-25 19:09 ` Barry OReilly
2013-09-25 21:50 ` Dmitry Antipov
2013-09-26 1:15 ` Stefan Monnier
0 siblings, 2 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-25 19:09 UTC (permalink / raw)
To: Stefan Monnier; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman
[-- Attachment #1: Type: text/plain, Size: 1458 bytes --]
How's this?
Also, when I was looking over the vector alloc code, I found a case
where I think int should be size_t.
diff --git a/src/alloc.c b/src/alloc.c
index ca21ba2..5b63383 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2889,7 +2889,7 @@ sweep_vectors (void)
free_this_block = 1;
else
{
- int tmp;
+ size_t tmp;
SETUP_ON_FREE_LIST (vector, total_bytes, tmp);
}
}
@@ -3132,6 +3132,8 @@ usage: (vector &rest OBJECTS) */)
void
make_byte_code (struct Lisp_Vector *v)
{
+ /* Don't allow the global zero_vector to become a byte code object. */
+ eassert(v->header.size!=0);
if (v->header.size > 1 && STRINGP (v->u.contents[1])
&& STRING_MULTIBYTE (v->u.contents[1]))
/* BYTECODE-STRING must have been produced by Emacs 20.2 or the
diff --git a/src/lread.c b/src/lread.c
index 017dfcb..fe2b92a 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2597,7 +2597,10 @@ read1 (Lisp_Object readcharfun, int *pch, bool
first_in_list)
build them using function calls. */
Lisp_Object tmp;
tmp = read_vector (readcharfun, 1);
- make_byte_code (XVECTOR (tmp));
+ struct Lisp_Vector* vec = XVECTOR (tmp);
+ if (vec->header.size==0)
+ invalid_syntax ("Empty byte-code object");
+ make_byte_code (vec);
return tmp;
}
if (c == '(')
[-- Attachment #2: Type: text/html, Size: 1690 bytes --]
^ permalink raw reply related [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-25 19:09 ` Barry OReilly
@ 2013-09-25 21:50 ` Dmitry Antipov
2013-09-26 1:15 ` Stefan Monnier
1 sibling, 0 replies; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-25 21:50 UTC (permalink / raw)
To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu
On 09/25/2013 11:09 PM, Barry OReilly wrote:
> How's this?
OK for me, except...
> @@ -3132,6 +3132,8 @@ usage: (vector &rest OBJECTS) */)
> void
> make_byte_code (struct Lisp_Vector *v)
> {
> + /* Don't allow the global zero_vector to become a byte code object. */
> + eassert(v->header.size!=0);
Since v->header.size is signed (ptrdiff_t), I would suggest
eassert (v->header.size > 0)
for the better catch of bogus values.
Thanks,
Dmitry
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-25 19:09 ` Barry OReilly
2013-09-25 21:50 ` Dmitry Antipov
@ 2013-09-26 1:15 ` Stefan Monnier
2013-09-26 3:51 ` Barry OReilly
1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-26 1:15 UTC (permalink / raw)
To: Barry OReilly; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman
> + /* Don't allow the global zero_vector to become a byte code object. */
> + eassert(v->header.size!=0);
Sounds good (and Dmitry's version is even better).
> - make_byte_code (XVECTOR (tmp));
> + struct Lisp_Vector* vec = XVECTOR (tmp);
> + if (vec->header.size==0)
> + invalid_syntax ("Empty byte-code object");
> + make_byte_code (vec);
Looks good, tho please keep spaces around infix operators (like `==' above).
Can someone install this?
Stefan
^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#15405: 24.3; #[] freezes emacs
2013-09-26 1:15 ` Stefan Monnier
@ 2013-09-26 3:51 ` Barry OReilly
0 siblings, 0 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-26 3:51 UTC (permalink / raw)
Cc: 15405-done
[-- Attachment #1: Type: text/plain, Size: 14 bytes --]
revno: 114459
[-- Attachment #2: Type: text/html, Size: 74 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2013-09-26 3:51 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-18 1:50 bug#15405: 24.3; #[] freezes emacs Leo Liu
2013-09-18 7:23 ` Andreas Schwab
2013-09-18 14:36 ` Barry OReilly
2013-09-18 15:07 ` Eli Zaretskii
2013-09-18 15:14 ` Barry OReilly
2013-09-18 15:27 ` Eli Zaretskii
2013-09-18 15:41 ` Stephen Berman
2013-09-18 16:26 ` Eli Zaretskii
2013-09-18 17:31 ` Barry OReilly
2013-09-18 19:26 ` Eli Zaretskii
2013-09-18 23:20 ` Barry OReilly
2013-09-19 7:00 ` Eli Zaretskii
2013-09-20 15:33 ` Barry OReilly
2013-09-20 16:13 ` Barry OReilly
2013-09-20 16:21 ` Drew Adams
2013-09-20 19:09 ` Stefan Monnier
2013-09-20 19:43 ` Barry OReilly
2013-09-20 21:26 ` Stefan Monnier
2013-09-20 21:38 ` Barry OReilly
2013-09-21 1:28 ` Dmitry Antipov
2013-09-21 1:39 ` Dmitry Antipov
2013-09-21 2:51 ` Stefan Monnier
2013-09-25 15:22 ` Barry OReilly
2013-09-25 16:12 ` Dmitry Antipov
2013-09-25 17:35 ` Stefan Monnier
2013-09-25 19:09 ` Barry OReilly
2013-09-25 21:50 ` Dmitry Antipov
2013-09-26 1:15 ` Stefan Monnier
2013-09-26 3:51 ` Barry OReilly
2013-09-25 17:10 ` Stefan Monnier
2013-09-18 23:41 ` Barry OReilly
2013-09-18 17:57 ` Stephen Berman
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).